Egyéni Docker-rendszerképek használata

Important

Ez a funkció bétaverzióban érhető el. Nem kompatibilis olyan munkahelyekkel, amelyek szerver nélküli kilépési vezérlést (SEG) használnak.

A Docker Container Services (DCS) segítségével saját Docker-tárolórendszerképet hozhat a számítási feladatokhoz air . Szükség esetén használjon egyéni rendszerképet:

  • Adott rendszertár-verziók.
  • Összetett függőségek, amelyek nem illeszkednek tisztán a environment.dependencies.
  • Pontos környezet a kutatási eredmények reprodukálásához.
  • A szervezet platformja vagy biztonsági csapata által készített standard rendszerképek.

Előfeltételek

Kép regisztrálása

Mielőtt egyéni rendszerképpel futtatna egy számítási feladatot, regisztrálja azt a(z) air register image használatával. A regisztráció lekéri és gyorsítótárazza a lemezképet a Databricks platformon. Minden felhasználónak képcímkénként egyszer regisztrálnia kell egy képet. Csak akkor regisztráljon újra, ha új taget tölt fel, vagy lecseréli a hitelesítő adatokat. A regisztráció 2–6 percet vesz igénybe, és addig tart, amíg a lemezkép el nem készül.

Nyilvános képek

Nyilvános képek regisztrálása a Docker-rendszerkép URL-címének és a Databricks-profilnak a megadásával:

air register image docker.io/nvidia/cuda:12.9.0-devel-ubuntu24.04 -p my-databricks-profile

A képhivatkozás rövid alakja is működik. Például: library/ubuntu:latest.

Privát Docker Hub képek

Privát Docker Hub rendszerkép regisztrálásához először hozzon létre egy személyes hozzáférési jogkivonatot. A Docker Hub fiók beállításai között kattintson a Személyes hozzáférési jogkivonatokÚj jogkivonat létrehozása elemre. Elegendő a csak olvasási hozzáférés.

Válasszon az alábbi hitelesítési módszerek közül:

Jelentkezzen be a Docker Hubba a terminálban. A rendszer kérni fogja a Docker Hub felhasználónevet és a személyes hozzáférési jogkivonatot:

docker login

Ez tárolja a hitelesítő adatokat a következő helyen ~/.docker/config.json: . Ezután regisztrálja a képet – air automatikusan felolvassa a hitelesítő adatokat:

air register image myorg/myrepo:mytag -p my-databricks-profile

Interaktív hitelesítés használata

Hitelesítő adatok hitelesítése és tárolása egy Databricks-titkos hatókörben egy lépésben:

air register image myorg/myrepo:mytag --interactive-authenticate -p my-databricks-profile

A rendszer kérni fogja Docker Hub felhasználónevét és személyes hozzáférési jogkivonatát. A hitelesítő adatokat a rendszer a munkaterület titkos hatókörében tárolja a későbbi regisztrációkhoz.

Hitelesítő adatokat tároljon egy Databricks-titkos kódban, és hivatkozzon rá közvetlenül:

air register image myorg/myrepo:mytag --scope my-secret-scope --key my-docker-key -p my-databricks-profile

Docker-rendszerkép használata számítási feladatban

Adja meg a Docker-rendszerképet a számítási feladat YAML-ben a következő alatt environment.docker_image.url:

experiment_name: my-dcs-training
environment:
  docker_image:
    url: myorg/myrepo:mytag
compute:
  num_accelerators: 1
  accelerator_type: GPU_1xA10
command: python /app/train.py

Saját Docker-rendszerkép használata esetén a(z) environment.dependencies és environment.version nem támogatott. A(z) environment.docker_image.url bármelyik mezővel való megadása hibát eredményez. Ha további függőségei vannak, telepítse inkább a csomagokat a Dockerfile-ban.

Küldje el a számítási feladatot:

air run --file workload.yaml -p my-databricks-profile

A tárolóba injektált környezeti változók

Az AI-futtatókörnyezet a következő környezeti változókat injektálja minden tárolóba futásidőben:

  • NUM_NODES – csomópontok teljes száma.
  • LOCAL_WORLD_SIZE — GPU-k csomópontonként.
  • WORLD_SIZE – folyamatok teljes száma.
  • POD_RANK — a csomópont aktuális rangja (0 indexelt). Szintén be van szúrva: NODE_RANK.
  • LOCAL_ADDR — helyi csomópont IP-címe (csak többcsomópontos).
  • MASTER_ADDR — rank-0 koordinációs cím (csak több csomópontos konfiguráció esetén).
  • MASTER_PORT — rank-0 koordinációs port (csak többcsomópontos konfigurációban).

Examples

Egycsomópontos A10

experiment_name: my-dcs-single-node
environment:
  docker_image:
    url: myorg/myrepo:mytag
compute:
  num_accelerators: 1
  accelerator_type: GPU_1xA10
command: python3 /app/train.py

RDMA-s, többcsomópontú H100

Az AWS p5 példányokon teljes hálózati sávszélességet igénylő, többcsomópontos H100-feladatokhoz az image-et a Databricks base image-ek egyikére alapozza, amelyeken az NCCL és az EFA előre konfigurálva van:

experiment_name: my-dcs-distributed
environment:
  docker_image:
    url: myorg/myrepo:mytag
compute:
  num_accelerators: 16 # 2 nodes × 8 H100
  accelerator_type: GPU_8xH100
command: |-
  torchrun \
    --nnodes="${NUM_NODES}" \
    --nproc_per_node="${LOCAL_WORLD_SIZE}" \
    --node_rank="${POD_RANK}" \
    --rdzv_endpoint="${MASTER_ADDR}:${MASTER_PORT}" \
    /app/train.py

Saját rendszerkép létrehozása

Saját rendszerkép létrehozásakor a Databricks azt javasolja, hogy használjon databricks-ai-runtime készséget egy kódolóügynökkel, vagy induljon ki egy Databricks-alaprendszerképből.

Kódolóügynök használata

Telepítse a databricks-ai-runtime Claude Code jártasságot a Dockerfile részletes útmutatójához, beleértve az alapoktól való építést, a CUDA/NCCL/EFA kompatibilitást, a gyakori problémákat és a build előtti ellenőrzőlistát. Ehhez a képességhez a Databricks CLI 1.0.0-s vagy újabb verziója szükséges.

databricks aitools install --skills databricks-ai-runtime --experimental

A Databricks alaprendszerképei

A Databricks a Docker Hubon, a databricksruntime/air címen tesz közzé olyan base image-eket, amelyekben a CUDA, az NCCL és a felhőspecifikus hálózati beállítások (AWS EFA vagy Azure InfiniBand) előre konfigurálva vannak.

Címke Felhő Variant Használja amikor
dcs-base-aws-runtime AWS Runtime Csak előre elkészített kerekek telepítése
dcs-base-aws-devel AWS Devel CUDA-bővítmények összeállítása (szükséges nvcc)
dcs-base-azure-runtime Azure Runtime Csak előre elkészített kerekek telepítése
dcs-base-azure-devel Azure Devel CUDA-bővítmények összeállítása (szükséges nvcc)

Használja a runtime-változatot, kivéve, ha a Dockerfile-ja CUDA-bővítményeket fordít, például flash-attn, apex vagy egyéni kernelek esetén.

Példa a Dockerfile-ra, amely PyTorch-ot ad hozzá egy Databricks-alaprendszerképhez. Az alapképek a /opt/venv helyen biztosítják a Pythont, amelyet a uv kezel. uv pip install alapértelmezés szerint ezt a környezetet célozza meg; másik környezet használatához hozzon létre és aktiváljon egy venv-t a futtatás uv pip installelőtt.

FROM databricksruntime/air:dcs-base-aws-runtime

RUN uv pip install --no-cache \
    torch==2.6.0 torchvision==0.21.0 torchaudio==2.6.0

RUN uv pip install --no-cache \
    transformers==4.45.0 \
    accelerate==0.34.0 \
    'mlflow>=3.6'

COPY ./train /app/train

Létrehozás, feltöltés és regisztrálás:

docker build -t myorg/myrepo:mytag .
docker push myorg/myrepo:mytag
air register image myorg/myrepo:mytag --interactive-authenticate -p my-databricks-profile

Requirements

  • A lemezképeket a Docker Hubon kell tárolni. Az Amazon ECR, a Google GCR és a GitHub GHCR nem támogatott.
  • A képméretnek 20 GB alatt kell lennie.
  • WORKDIR futásidőben nincs figyelembe véve. Használjon abszolút elérési utakat a képbe sütött fájlokhoz. Használjon például python /app/train.py, ne python train.py.
  • Nem használhatja a(z) environment.dependencies vagy environment.version elemet a(z) environment.docker_image.url elemmel. Ha a képen láthatónál több csomagra van szüksége, fel kell vennie őket a Dockerfile-ba.

Hibaelhárítás

Ssl. SSLError: [CRYPTO] ismeretlen hiba (_ssl.c) függőségek betöltésekor

Az egyéni lemezkép futásidőben OpenSSL-hibával meghiúsulhat, amikor egy függvénytár SSL-kontextust próbál létrehozni, például:

ssl.SSLError: [CRYPTO] unknown error (_ssl.c:3076)

A hiba a hálózati kapcsolatokat megnyitó kódtárak importálása közben jelenik meg, például huggingface_hub, és megakadályozza a betöltésüket.

Ez azért fordul elő, mert air a számítási feladatok FIPS-kompatibilis gazdagépeken futnak. Ha a rendszerkép titkosítási kódtárai nem FIPS-kompatibilisek, az OpenSSL nem inicializálja FIPS módban, ezért az SSL-környezet létrehozása meghiúsul.

Ajánlott megoldás:

A nagyvállalati, kormányzati, egészségügyi és pénzügyi munkaterhelések gyakran megkövetelik a FIPS 140-2 vagy 140-3 megfelelést a FedRAMP-, CMMC- vagy HIPAA-auditokhoz. Ha a számítási feladatnak FIPS-kompatibilisnek kell maradnia, hozza létre a rendszerképet FIPS-kompatibilis titkosítási kódtárakkal.

Ha a számítási feladat nem igényel FIPS-megfelelőséget, letilthatja a FIPS módot a OPENSSL_FORCE_FIPS_MODE környezeti változó 0beállításával. Ezzel csendben megszegheti a megfelelőségi követelményeket.

A FIPS mód letiltásához ezt a munkaterhelés YAML-fájljában, a(z) env_variables alatt állítsa be:

env_variables:
  OPENSSL_FORCE_FIPS_MODE: '0'

Másik lehetőségként állítsa be a változót a Dockerfile-ban, hogy a rendszerképet használó összes számítási feladatra érvényes legyen:

ENV OPENSSL_FORCE_FIPS_MODE=0

Küldje be újra a munkaterhelést, és győződjön meg arról, hogy az SSL-hiba már nem jelenik meg, amikor a függőségek betöltődnek.

Lásd még