File size: 2,617 Bytes
320063f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c9b4129
 
 
 
 
 
320063f
 
 
 
 
 
c9b4129
 
 
 
 
320063f
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# CXR-VLM training environment.
# Matches the Colab GPU runtime fingerprint verified on 2026-05:
#   Python   3.12.13
#   torch    2.10.0+cu128
#   CUDA     12.8  (nvcc 12.8.93)
#   cuDNN    9.10.2
#   glibc    2.35  (Ubuntu 22.04 base)
#   bnb      0.49.2  (4-bit quantize verified)
#
# ─── Host requirements ────────────────────────────────────────────────────────
# This image requires NVIDIA driver >= 550.54 on the host (CUDA 12.8 runtime).
#   • Colab           — driver 580+, OK
#   • Vast.ai         — filter "CUDA Driver >= 550" when picking an instance
#   • Lightning AI    — A10G / A100 / H100 OK; check older T4 Studios
#   • RunPod          — pick a 12.8-compatible template or BYO image
#
# T4 (sm_75) note: torch.cuda.is_bf16_supported() returns True via emulation,
# but T4 has no hardware BF16. Keep train_cfg.training.fp16=True / bf16=False
# on T4. On A100/L4/H100 (sm_80+) you can flip to bf16.
#
# ─── Build & push ─────────────────────────────────────────────────────────────
#   docker build -t <hub>/cxr-vlm-env:cu128 docker/
#   docker push  <hub>/cxr-vlm-env:cu128
#
# ─── Base image fallbacks (if 2.10.0-cuda12.8 tag is missing on Docker Hub) ──
#   FROM nvcr.io/nvidia/pytorch:25.04-py3                # NVIDIA NGC, always cu128
#   FROM pytorch/pytorch:2.10.0-cuda12.8-cudnn9-devel    # +5GB, includes nvcc
#   FROM pytorch/pytorch:2.6.0-cuda12.6-cudnn9-runtime   # stable, slightly older
# `-runtime` (no CUDA toolkit/nvcc) is enough — bitsandbytes 0.49 ships
# precompiled wheels, nothing in our deps compiles CUDA from source.
FROM pytorch/pytorch:2.10.0-cuda12.8-cudnn9-runtime

ENV DEBIAN_FRONTEND=noninteractive \
    PYTHONUNBUFFERED=1 \
    BITSANDBYTES_NOWELCOME=1 \
    TOKENIZERS_PARALLELISM=false \
    HF_HUB_DISABLE_PROGRESS_BARS=1 \
    TRANSFORMERS_VERBOSITY=warning \
    PIP_BREAK_SYSTEM_PACKAGES=1
# ↑ PEP 668: the base image uses Debian's "externally-managed" system Python,
# which blocks `pip install` by default. Inside a single-purpose container
# there's nothing else to break, so we allow pip to write to site-packages.

RUN apt-get update && \
    apt-get install -y --no-install-recommends git wget curl && \
    rm -rf /var/lib/apt/lists/*

COPY requirements_docker.txt /tmp/requirements_docker.txt
RUN pip install --no-cache-dir -r /tmp/requirements_docker.txt

WORKDIR /workspace