Použijte vlastní Docker obrázky s AI Runtime

Important

Tato funkce je v beta verzi. Pro jeho použití musí správce pracovního prostoru povolit náhledy AI Runtime Beta Features a Databricks Artifact Registry přímo ze stránky Preview pracovního prostoru.

AI Runtime může spustit vlastní obraz kontejneru Dockeru uložený v registru artefaktů. Pokud potřebujete, použijte vlastní image:

  • Systémové knihovny nebo složité závislosti, které nelze nainstalovat s environment.dependencies.
  • Reprodukovatelné prostředí napříč vývojem, výzkumem a produkcí.
  • Soukromé, organizací schválené obrázky vytvořené vaší platformou nebo bezpečnostním týmem.

Prerequisites

Přesunout obrázek do Registru artefaktů

Před použitím vlastního obrázku v AI Runtime jej uložte do Artifact Registry ve stejném pracovním prostoru, kde odesíláte pracovní zátěž.

  1. Vytvořte nebo vyberte katalog a schéma Unity Catalog pro tento obrázek.

  2. Postupujte podle Začínáme s Artifact Registry, nakonfigurujte ověřování Dockeru, udělte požadovaná přístupová oprávnění a nahrajte image.

  3. Všimněte si názvu obrázku v katalogu Unity v následujícím formátu:

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

    Například: main.ml.training:v1. Nezahrňujte název hostitele registru do konfigurace zátěže.

Tip

Alternativně použijte databricks air images push příkaz helper v Databricks CLI.

Použijte image Dockeru ve workloadu

Zadejte název image v Unity Catalog do souboru YAML úlohy pod environment.unity_catalog_image:

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

Tento příklad se spouští z /app na obrázku pomocí train.py. Pro samostatné nahrání aplikačního kódu bez přestavby obrazu viz Spustit nahraný aplikační kód.

Při použití vlastního obrazu Dockeru nejsou environment.dependencies a environment.version podporovány. Zadání environment.unity_catalog_image do kteréhokoli z obou polí způsobí chybu. Pokud máte další závislosti, nainstalujte balíčky do souboru Dockerfile.

Odešlete úlohu:

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

Profil se musí autentizovat ve stejném pracovním prostoru, kde je obrázek uložen.

Proměnné prostředí vložené do vašeho kontejneru

AI Runtime za běhu vkládá do každého kontejneru následující proměnné prostředí:

  • CODE_SOURCE_PATH: cesta k nahranému aplikačnímu kódu, když code_source je konfigurován.
  • NUM_NODES: celkový počet uzlů.
  • LOCAL_WORLD_SIZE: Počet GPU na uzel.
  • WORLD_SIZE: celkový počet procesů.
  • POD_RANK: aktuální pořadí uzlů (0-indexováno). Injektuje se také jako NODE_RANK.

Examples

Následující příklad ukazuje, jak spustit nahraný aplikační kód s vlastní imagí.

Spusť nahraný aplikační kód

Použijte code_source k samostatnému nahrání kódu aplikace odděleně od image. Můžete upravovat a znovu odesílat svůj kód bez nutnosti znovu vytvořit obrázek. Nainstalujte Python a systémové závislosti kódu přímo do obrazu.

Umístěte train.py do lokálního adresáře src vedle .workload.yaml Následující konfigurace nahraje src a spustí jeho train.py uvnitř vlastní image:

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 se vyhodnocuje relativně k workload.yaml. AI Runtime nastavuje $CODE_SOURCE_PATH cestu nahraného adresáře v kontejneru. Viz code_source pro možnosti zdroje kódu.

Vytvoření vlastní image

Při vytváření vlastní image Databricks doporučuje používat funkci databricks-ai-runtime skill s kódovacím agentem nebo vyjít ze základní image Databricks.

Použití programovacího agenta

Nainstalujte dovednost Claude Code pro databricks-ai-runtime, která poskytuje podrobné pokyny pro Dockerfile krok za krokem, včetně sestavení od nuly, kompatibility CUDA/NCCL/EFA, běžných problémů a kontrolního seznamu před sestavením. Tato dovednost vyžaduje Rozhraní příkazového řádku Databricks verze 1.0.0 nebo novější.

databricks aitools install --skills databricks-ai-runtime

Základní image Databricks

Databricks zveřejňuje základní obrazy na Docker Hubu na adrese databricksruntime/air, s předem nakonfigurovanými technologiemi CUDA a NCCL a cloudově specifickým síťovým nastavením (AWS EFA nebo Azure InfiniBand).

Tag Variant CUDA Použít, když
dcs-base-azure-runtime Runtime 12 Instalace pouze předdefinovaných kol
dcs-base-azure-devel Devel 12 Kompilace rozšíření CUDA (vyžaduje nvcc)

Následující Dockerfile přidává PyTorch k základnímu obrazu Databricks. Základní image poskytují Python ve /opt/venvsprávě uv. uv pip install Cílí na toto prostředí jako výchozí cíl. Pro použití jiného prostředí vytvořte a aktivujte venv před spuštěním uv pip install.

Chcete-li do obrázku zahrnout svůj tréninkový skript, umístěte train.py ho vedle Dockerfile. Dockerfile ho zkopíruje do /app/train.py. Pokud nahrajete aplikační kód s code_source, vynechte instrukci COPY a ponechte train.py ve svém zdrojovém adresáři.

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

Vytvořte obraz lokálně:

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

Poté postupujte Začněte s Registrem artefaktů , označte a přesunete obrázek do Registru artefaktů. Použijte výsledný název <catalog>.<schema>.<image>:<tag> jako environment.unity_catalog_image v souboru YAML úlohy.

Tip

Alternativně použijte databricks air images push příkaz helper v Databricks CLI a postupujte podle interaktivních pokynů.

Limitations

  • Obrázky musí být uloženy v registru artefaktů v pracovním prostoru, kde odesíláte pracovní zátěž.
  • Velikost obrázku musí být pod 20 GB.
  • WORKDIR není dodrženo za běhu. Pro soubory upečené do obrázku použijte absolutní cesty. Například použijte python /app/train.py, nikoli python train.py.
  • Nelze použít environment.dependencies ani environment.version s environment.unity_catalog_image. Pokud potřebujete další balíčky, které nejsou součástí obrazu, musíte je přidat do souboru Dockerfile.

Troubleshooting

Informace o řešení chyb souvisejících s autentizací, oprávněními, nahráváním imagí nebo zjišťováním imagí v registru najdete v části Troubleshoot Artifact Registry.

ssl. SSLError při načítání závislostí

Vlastní image může selhat za běhu s chybou OpenSSL, když se knihovna pokusí vytvořit kontext SSL, například:

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

Při importu knihoven, které otevírají síťová připojení, například huggingface_hub, se zobrazí chyba, která brání jejich načtení.

K tomu dochází, protože úlohy běhového prostředí AI běží na hostitelích se zapnutým režimem Federal Information Processing Standards (FIPS). Pokud kryptografické knihovny obrázku nevyhovují standardu FIPS, openSSL se nepodaří inicializovat v režimu FIPS, takže vytvoření kontextu SSL selže.

Doporučené řešení:

Úlohy enterprise, government, healthcare a finance často závisí na dodržování předpisů FIPS 140-2 nebo 140-3 pro audity FedRAMP, CMMC nebo HIPAA. Pokud vaše úloha musí zůstat kompatibilní se standardem FIPS, sestavte image s kryptografickými knihovnami kompatibilními se standardem FIPS.

Pokud vaše pracovní zátěž nevyžaduje soulad se standardem FIPS, můžete režim FIPS zakázat nastavením proměnné prostředí OPENSSL_FORCE_FIPS_MODE na hodnotu 0. To může nepozorovaně narušit soulad s požadavky na dodržování předpisů.

Pokud chcete zakázat režim FIPS, nastavte ho v YAML úlohy v části env_variables:

env_variables:
  OPENSSL_FORCE_FIPS_MODE: '0'

Případně nastavte proměnnou v souboru Dockerfile tak, aby platila pro každou úlohu, která používá image:

ENV OPENSSL_FORCE_FIPS_MODE=0

Znovu odešlete úlohu a ověřte, že se chyba SSL už nezobrazí, když se načtou závislosti.

Dodatečné zdroje