Használj egyedi Docker képeket AI Runtime-szal

Important

Ez a funkció bétaverzióban érhető el. A használatához a munkaterület adminisztrátorának be kell kapcsolnia az AI Runtime Beta Features és a Databricks Artifact Registry előnézeteket a munkaterület Előnézetek oldalán.

Az AI Runtime képes egyedi Docker konténer képet futtatni, amelyet az Artifact Registry tárol. Szükség esetén használjon egyéni rendszerképet:

  • Rendszerkönyvtárak vagy összetett függőségek, amelyeket nem tudsz telepíteni a(z) environment.dependencies használatával.
  • A fejlesztés, kutatás és termelés területén reprodukálható környezet.
  • Privát, szervezet által jóváhagyott képek, amelyeket a platformod vagy biztonsági csapatod készít.

Prerequisites

Kép továbbítása az Artifact Registry rendszerbe

Mielőtt egyedi képet használnál AI Runtime-val, tárold az Artifact Registry adatbázisban ugyanabban a munkatérben, ahol a munkaterhelést benyújtod.

  1. Hozz létre vagy válassz ki egy Unity katalógust és sémát a képhez.

  2. Kövesd az Ismerkedés az Artifact Registryvel útmutatót a Docker-hitelesítés konfigurálásához, a szükséges jogosultságok megadásához és a rendszerkép feltöltéséhez.

  3. Jegyezd fel a kép Unity Catalog-nevét a következő formátumban:

    <catalog>.<schema>.<image>:<tag>
    

    Például: main.ml.training:v1. Ne vegyük fel a registry hosztnevet a munkaterhelés konfigurációjában.

Tipp

Alternatívaként használhatja a Databricks CLI-ben a databricks air images pushhelper parancsot.

Docker-kép használata workloadban

Adja meg a lemezkép Unity Catalog-nevét a workload YAML-fájljában, a environment.unity_catalog_image alatt:

experiment_name: my-dcs-training
environment:
  unity_catalog_image: main.ml.training:v1
compute:
  num_accelerators: 1
  accelerator_type: GPU_1xA10
command: python /app/train.py

Ez a példa a képen a /app helyről futtatja a train.py elemet. Az alkalmazáskód külön, a lemezkép újraépítése nélküli feltöltéséhez lásd: A feltöltött alkalmazáskód futtatása.

Saját Docker-rendszerkép használata esetén a(z) environment.dependencies és environment.version nem támogatott. A(z) environment.unity_catalog_image 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:

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

A profilnak hitelesítenie kell ugyanabban a munkaterületen, ahol a képet tárolják.

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:

  • CODE_SOURCE_PATH: útvonal a feltöltött alkalmazáskódhoz, amikor code_source be van állítva.
  • NUM_NODES: a csomópontok összesített száma.
  • LOCAL_WORLD_SIZE: GPU-k csomópontonként.
  • WORLD_SIZE: folyamatok összesen száma.
  • POD_RANK: aktuális csomópont rang (0-indexelve). Szintén be van szúrva: NODE_RANK.
  • LOCAL_ADDR: helyi csomóponti IP (csak többcsomópontos).
  • MASTER_ADDR: 0 rangú koordinációs cím (csak több csomópontos megoldás).
  • MASTER_PORT: 0-s rangú koordinációs port (csak több csomópont esetén).

Examples

Az alábbi példák bemutatják, hogyan lehet feltöltött alkalmazáskódot és elosztott képzést futtatni egyedi képpel.

Futtatd a feltöltött alkalmazáskódot

A(z) code_source használatával az alkalmazáskódot a rendszerképtől külön töltheted fel. Szerkesztheted és újraküldheted a kódodat anélkül, hogy újraépítenéd a képet. Telepítsd a kód Python- és rendszerfüggőségeit a képbe.

Helyezd a(z) train.py elemet egy helyi src könyvtárba a workload.yaml mellé. A következő konfiguráció feltölti a(z) src elemet, és lefuttatja a(z) train.py elemet az egyéni lemezképben:

experiment_name: my-dcs-uploaded-code
environment:
  unity_catalog_image: main.ml.training:v1
compute:
  num_accelerators: 1
  accelerator_type: GPU_1xA10
code_source:
  root_path: ./src
command: |-
  cd "$CODE_SOURCE_PATH"
  python3 train.py

root_path feloldása a következőhöz viszonyítva történik: workload.yaml. Az AI Runtime a $CODE_SOURCE_PATH értékét a konténerben a feltöltött könyvtár elérési útjára állítja. A kódforrás-beállításokért lásd: code_source.

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:
  unity_catalog_image: main.ml.training:v1
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

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.

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

A következő Dockerfile hozzáadja a PyTorchot egy Databricks alapké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ás környezet használatához hozzon létre és aktiváljon egy venv-et a(z) uv pip install futtatása előtt.

Ha az image-be szeretnéd foglalni a betanító szkriptedet, helyezd train.py a Dockerfile mellé. A Dockerfile átmásolja azt ide: /app/train.py. Ha a(z) code_source használatával töltöd fel az alkalmazáskódot, hagyd ki a(z) COPY utasítást, és inkább tartsd a(z) train.py elemet a forráskönyvtárban.

FROM databricksruntime/air:dcs-base-azure-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.py /app/train.py

Helyi képet építsd fel:

docker build --platform linux/amd64 -t my-training-image:v1 .

Ezután kövesd a Get start with Artifact Registry menüt, hogy megjelöld és továbbítsd a képet az Artfact Registry be. Az eredményül kapott <catalog>.<schema>.<image>:<tag> nevet environment.unity_catalog_image néven használja a munkaterhelés YAML-fájljában.

Tipp

Alternatívaként használd a Databricks CLI databricks air images push segédparancsát, és kövesd az interaktív promptokat.

Limitations

  • A képeket az Artifact Registry adatbázisban kell tárolni abban a munkatérben, ahol beküldöd a munkaterhelést.
  • 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.unity_catalog_image elemmel. Ha a képen láthatónál több csomagra van szüksége, fel kell vennie őket a Dockerfile-ba.

Troubleshooting

Az Artifact Registryvel kapcsolatos hitelesítési, engedélyezési, rendszerkép-feltöltési vagy rendszerkép-felderítési hibák esetén lásd: Az Artifact Registry hibaelhárítása.

SSL. SSLError 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 az AI Runtime munkaterhelései olyan hasztokon futnak, amelyekben a Federal Information Processing Standards (FIPS) engedélyezett. 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.

További erőforrások