AI Çalışma Zamanı ile özel Docker görüntüleri kullanın

Önemli

Bu özellik Beta sürümündedir. Kullanmak için, bir çalışma alanı yöneticisinin çalışma alanı önizlemelersayfasından AI Çalışma Zamanı Beta Özellikleri ve Databricks Eser Kaydı önizlemelerini etkinleştirmesi gerekir.

AI Runtime, Artifact Registry'de depolanan özel bir Docker konteyner imajını çalıştırabilir. İhtiyaç duyduğunuzda özel görüntü kullanın:

  • environment.dependencies ile yükleyemeyeceğiniz sistem kitaplıkları veya karmaşık bağımlılıklar.
  • Geliştirme, araştırma ve üretim alanlarında tekrarlanabilir bir ortam.
  • Platformunuz veya güvenlik ekibiniz tarafından oluşturulan özel, organizasyon onaylı görseller.

Prerequisites

Bir görüntüyü Eser Kaydı'na gönder

AI Runtime ile özel bir imaj kullanmadan önce, bu imajı iş yükünü göndermek için kullandığınız aynı çalışma alanındaki Artifact Registry’de depolayın.

  1. Görüntü için bir Unity Catalog kataloğu ve şeması oluşturun veya seçin.

  2. Docker kimlik doğrulamasını yapılandırmak, gerekli ayrıcalıkları vermek ve görüntüyü göndermek için Artifact Registry ile çalışmaya başlama bölümünü izleyin.

  3. Görselin Unity Kataloğu adını aşağıdaki formatta not edin:

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

    Örneğin, main.ml.training:v1. İş yükü yapılandırmasında kayıt bilgisayar adını eklemeyin.

Tip

Alternatif olarak, Databricks CLI'de databricks air images push yardım komutunu kullanın.

Bir iş yükünde Docker görüntüsü kullanın

İmajın Unity Catalog adını, iş yükü YAML dosyanızda environment.unity_catalog_image altında belirtin:

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

Bu örnek, görseldeki /app içinden train.py çalıştırır. Uygulama kodunu ayrı yüklemek için, görseli yeniden oluşturmadan Çalıştır (Yüklenmiş uygulama kodunu çalıştır) bölümünü inceleyebilirsiniz.

Kendi Docker imajınızı kullandığınızda, environment.dependencies ve environment.version desteklenmez. environment.unity_catalog_image öğesinin iki alandan herhangi biriyle belirtilmesi hataya neden olur. Ek bağımlılıklarınız varsa bunun yerine paketleri Dockerfile dosyasına yükleyin.

İş yükünü gönderin:

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

Profil, imajın depolandığı aynı çalışma alanında kimlik doğrulamalıdır.

Kapsayıcınıza eklenen ortam değişkenleri

AI Runtime, çalışma zamanında her kapsayıcıya aşağıdaki ortam değişkenlerini ekler:

  • CODE_SOURCE_PATH: code_source yapılandırıldığında yüklenen uygulama kodunun yolu.
  • NUM_NODES: toplam düğüm sayısı.
  • LOCAL_WORLD_SIZE: Düğüm başına GPU.
  • WORLD_SIZE: toplam süreç sayısı.
  • POD_RANK: mevcut düğüm sıralaması (0-indeksli). Ayrıca NODE_RANK olarak eklendi.
  • LOCAL_ADDR: yerel düğüm IP'si (sadece çoklu düğüm).
  • MASTER_ADDR: rank-0 koordinasyon adresi (yalnızca birden çok düğümlü yapılandırmalar için).
  • MASTER_PORT: rank-0 koordinasyon bağlantı noktası (yalnızca çok düğümlü yapılandırmalarda).

Examples

Aşağıdaki örnekler, yüklenmiş uygulama kodunun ve dağıtılmış eğitimin özel bir görüntüyle nasıl çalıştırılacağını gösterir.

Yüklenen uygulama kodunu çalıştır

Başvuru kodunu resimden ayrı yüklemek için kullanılır code_source . Kodunuzu düzenleyip yeniden gönderebilirsiniz, görseli yeniden oluşturmadan. Kodun Python ve sistem bağımlılıklarını görselde yükleyin.

workload.yaml yanındaki yerel bir src dizinine train.py yerleştirin. Aşağıdaki yapılandırma, src öğesini yükler ve train.py öğesini özel imaj içinde çalıştırır:

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, workload.yaml'e göre çözümlenir. AI Runtime, $CODE_SOURCE_PATH öğesini kapsayıcıdaki yüklenen dizinin yoluna ayarlar. Kod kaynak seçenekleri için code_source bölümüne bakın.

RDMA ile çok düğümlü H100

AWS p5 örneklerinde tam ağ bant genişliği gerektiren çok düğümlü H100 işleri için görüntünüzü önceden yapılandırılmış NCCL ve EFA ile Databricks temel görüntülerinden birine dayandırın:

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

Kendi görüntünüzü oluşturma

Databricks, kendi imajınızı oluştururken bir kodlama aracısıyla databricks-ai-runtime becerisini kullanmanızı veya bir Databricks temel imajından başlamanızı önerir.

Kodlama aracısı kullanma

Sıfırdan oluşturma, CUDA/NCCL/EFA uyumluluğu, yaygın sorunlar ve derleme öncesi denetim listesi de dahil olmak üzere adım adım Dockerfile kılavuzu için databricks-ai-runtime Claude Code becerisini yükleyin. Bu beceri için Databricks CLI sürüm 1.0.0 veya üzeri gerekir.

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

Databricks temel görüntüleri

Databricks, databricksruntime/air adresindeki Docker Hub’da CUDA, NCCL ve buluta özgü ağ yapılandırmaları (AWS EFA veya Azure InfiniBand) önceden yapılandırılmış temel imajlar yayımlar.

Tag Variant CUDA Şu durumlarda kullanın:
dcs-base-azure-runtime Runtime 12 Yalnızca önceden oluşturulmuş tekerlekleri yükleme
dcs-base-azure-devel Devel 12 CUDA uzantılarını derleme (gerektirir nvcc)

Aşağıdaki Dockerfile, PyTorch'u bir Databricks temel görüntüsüne ekler. Temel görüntüler, /opt/venv konumunda uv tarafından yönetilen Python sağlar. uv pip install varsayılan olarak o ortamı hedefliyor. Farklı bir ortam kullanmak için, çalıştırmadan uv pip installönce bir venv oluşturun ve etkinleştirin.

Eğitim betikinizi görselde eklemek için Dockerfile'ın yanına yerleştirin train.py . Dockerfile, bunu /app/train.py konumuna kopyalar. Eğer uygulama kodunu code_source ile yüklüyorsanız, COPY komutunu çıkarın ve onun yerine train.py öğesini kaynak dizininizde tutun.

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

Yerel olarak görüntü oluşturun:

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

Sonra Eser Kaydı ile başla seçeneğini takip ederek görseli etiketleyip Eser Kaydına gönder. Ortaya çıkan <catalog>.<schema>.<image>:<tag> adını iş yükü YAML dosyasında environment.unity_catalog_image olarak kullanın.

Tip

Alternatif olarak, Databricks CLI'deki databricks air images push yardımcı komutunu kullanın ve etkileşimli istemleri takip edin.

Limitations

  • Görseller, iş yükünü gönderdiğiniz çalışma alanındaki Artifact Registry (Artifact Register) içinde saklanmalıdır.
  • Görüntü boyutu 20 GB'ın altında olmalıdır.
  • WORKDIR çalışma zamanında dikkate alınmaz. İmaja dahil edilen dosyalar için mutlak yollar kullanın. Örneğin, python /app/train.pydeğil python train.pykullanın.
  • environment.dependencies ile environment.version veya environment.unity_catalog_image kullanamazsınız. Görüntüdekilerin ötesinde ek paketlere ihtiyacınız varsa bunları Dockerfile dosyasına eklemeniz gerekir.

Sorun giderme

Kayıt defteriyle ilgili kimlik doğrulama, izin, görüntü baskısı veya görüntü keşfi hataları için Sorun Giderme Eser Kaydı sayfasına bakınız.

SSL. SSLError bağımlılıkları yüklerken

Bir kitaplık SSL bağlamı oluşturmaya çalıştığında özel görüntü çalışma zamanında OpenSSL hatasıyla başarısız olabilir, örneğin:

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

huggingface_hub gibi ağ bağlantıları kuran kitaplıklar içeri aktarılırken hata oluşur ve bunların yüklenmesini engeller.

Bu, AI Çalışma Zamanı iş yüklerinin Federal Bilgi İşleme Standartları (FIPS) etkin olan ana bilgisayarlarda çalışması nedeniyle gerçekleşir. Görüntünün şifreleme kitaplıkları FIPS uyumlu olmadığında, OpenSSL FIPS modunda başlatılamaz, bu nedenle SSL bağlamı oluşturma başarısız olur.

Önerilen çözüm:

Kurumsal, kamu, sağlık ve finans iş yükleri genellikle FedRAMP, CMMC veya HIPAA denetimleri için FIPS 140-2 veya 140-3 uyumluluğuna bağlıdır. İş yükünüzün FIPS uyumlu kalması gerekiyorsa görüntünüzü FIPS uyumlu şifreleme kitaplıklarıyla derleyin.

İş yükünüz FIPS uyumluluğu gerektirmiyorsa, ortam değişkenini OPENSSL_FORCE_FIPS_MODE0olarak ayarlayarak FIPS modunu devre dışı bırakabilirsiniz. Bunu yapmak, uyumluluk gereksinimlerini sessizce bozabilir.

FIPS modunu devre dışı bırakmak için, iş yükü YAML dosyanızda env_variables altında bunu ayarlayın:

env_variables:
  OPENSSL_FORCE_FIPS_MODE: '0'

Alternatif olarak Dockerfile'ınızdaki değişkeni görüntüyü kullanan her iş yükü için geçerli olacak şekilde ayarlayın:

ENV OPENSSL_FORCE_FIPS_MODE=0

İş yükünü yeniden gönderin ve bağımlılıklar yüklendiğinde SSL hatasının artık görünmediğinden emin olun.

Ek kaynaklar