Eğitim iş yüklerini üretim ortamına taşıma

Important

Bu özellik Genel Önizleme aşamasındadır.

DAB'ları kullanarak bir AI Çalışma Zamanı eğitim iş yükünü kod olarak tanımlayın. Onu kaynak kontrolünde tutun, ortamlar arasında dağıtın, zamanlayın ve diğer görevlerle birlikte oluşturun. Bu sayfa, ai_runtime_task öğesinin sunucusuz GPU işlem altyapısında bir kod dizini üzerinde kendi komutunuzu çalıştırdığı kendi eğitimini kullanma yaklaşımını kapsar.

Bu, bir notebook'u sunucusuz GPU üzerinden bir paket üzerinden çalıştırmaktan farklı bir görevdir. Temel notebook-on-GPU bundle örneği için Jobs API ve Declarative Automation Bundles bölümlerine bakınız.

Requirements

  • AI Runtime’ın etkinleştirildiği bir çalışma alanı. Bkz . Gereksinimler.
  • Databricks CLI (komut satırı arayüzü) paketleri dağıtmak için kuruldu ve yapılandırıldı.

Bir pakette AI Runtime görevi tanımlayın

Bir ai_runtime_task bir deneyi adlandırır, code_source_path ile eğitim kodunuzu işaret eder ve bir dağıtım tanımlar: çalıştırılacak komutu ve bunun üzerinde çalışacağı GPU’yu. Bunu paketinizdeki bir işe ekleyin:

resources:
  jobs:
    train:
      tasks:
        - task_key: train
          ai_runtime_task:
            experiment: my-experiment
            code_source_path: ./dist/code.tgz
            deployments:
              - command_path: ./command.sh
                compute:
                  accelerator_type: GPU_1xA10
                  accelerator_count: 1

code_source_path paketlenmiş eğitim kodunuza işaret eder ve command_path görevin çalıştırdığı script nedir. Yeniden denemeler, zaman aşımları ve izinler, diğer Azure Databricks işlerinde olduğu gibi görev ve iş için aynı şekilde ayarlanır; dolayısıyla mevcut bundle uygulamalarınız da geçerliliğini korur. Kodunuzu nasıl paketleyip referans vereceğiniz için Eğitim kodunuzu gönderin bkz.

ai_runtime_task Alanları

Veri Alanı Türü Description
experiment Dize Required. Çalışmanın MLflow deney adı. Bkz. Deney takibi ve gözlemlenebilirlik.
code_source_path Dize Çalıştırılacak eğitim kodu: paketlenmiş bir tgz artefaktının çıktı dosyası veya önceden yüklenmiş koda giden bir /Workspace ya da /Volumes yolu. Eğitim kodunuzu dağıtma bölümüne bakın.
deployments Sequence Required. Komutu ve çalıştırılacak hesaplamayı tanımlayan tek bir dağıtım. Her girdi command_path, compute ve isteğe bağlı bir name içerir.
deployments[].command_path Dize Required. Görevin her düğümde çalıştırdığı script.
deployments[].compute.accelerator_type Dize Required. GPU türü, örneğin GPU_1xA10, GPU_1xH100, veya GPU_8xH100.
deployments[].compute.accelerator_count Tamsayı Required. Tüm düğümlerdeki toplam GPU sayısı—accelerator_type içinde kodlanan düğüm başına sayının bir katı.
deployments[].name Dize Dağıtım için isteğe bağlı bir isim, loglarda ve kullanıcı arayüzünde kullanılır.
docker_image_url Dize Komutu çalıştırmak için isteğe bağlı özel bir Docker görüntüsü, yönetilen ortam yerine. Bkz. Özel Docker görüntülerini kullanma.
mlflow_run Dize MLflow çalıştırması için isteğe bağlı bir gösterim adı.
mlflow_experiment_directory Dize Deneyin oluşturulduğu isteğe bağlı bir çalışma alanı dizini. ile /Workspacebaşlamalıdır. Bunu, varsayılan kullanıcı dizini olmayan bir servis yöneticisi olarak çalışırken ayarlayın.
mlflow_artifact_location Dize MLflow artefaktları için isteğe bağlı bir kök konum; örneğin bir /Volumes/<catalog>/<schema>/<volume>/… yolu. Mevcut bir deneyin eser konumuyla eşleşmeli ya da çıkarılmalı.

Yeniden deneme ayarlarını, zaman aşımlarını, izinleri ve ortamı (environment_key), ai_runtime_task içinde değil, görevde ve işte ayarlayın. Tam görev referansı için bkz. AI Çalışma Zamanı görevi.

Donanım hızlandırıcısını yapılandırma

accelerator_count değerini iş yükünüzün ihtiyaç duyduğu GPU sayısına, accelerator_type değerini ise toplam GPU sayısına ayarlayın. Sayı, düğüm başına GPU sayısının katıdır: 1 ve GPU_1xH100için GPU_1xA10 , ve 8 için GPU_8xH100. Düğüm başına boyuttan büyük bir sayı, görevi birden fazla düğümde çalıştırır; örneğin, GPU_8xH100 ile accelerator_count: 16 iki düğümde çalışır. Hızlandırıcı seçimi için rehberlik için Donanım seçenekleri'ne bakınız.

Note

Çok düğümlü çalışmalar için, AI Çalışma Zamanı komutunuzu her düğümde çalıştırır ve görev ortamındaki standart dağıtık eğitim ortamı değişkenlerini doldurur—NUM_NODES, WORLD_SIZE, MASTER_ADDRLOCAL_WORLD_SIZE, , ve MASTER_PORT. Bunları komutunuz aracılığıyla okuyun (örneğin, bir torchrun başlatma sırasında); bunları paket içinde ayarlamazsınız.

Ortamı ve bağımlılıkları belirleyin

Job üzerinde bir environments bloğu tanımlayın ve buna görevden environment_key ile başvurun. AI Runtime, komutunuz çalışmadan önce listelenen bağımlılıkları yükler:

resources:
  jobs:
    train:
      tasks:
        - task_key: train
          environment_key: default
          ai_runtime_task:
            # experiment, code_source_path, and deployments as above
      environments:
        - environment_key: default
          spec:
            environment_version: '5'
            dependencies:
              - numpy

Mevcut ortamlar için bkz. Ortamınızı kur.

Eğitim kodunuzu gönderin

code_source_path, göreve eğitim kodunuzun nerede olduğunu söyler. İki biçimden birini alır:

  • Paketlenmiş bir tgz artefakt — bir artefakt tanımlayın ve code_source_path öğesini çıktı dosyasına yönlendirin. Azure Databricks tarball'u oluşturur ve databricks bundle deploy üzerine yükler. Bu, yerel bir proje dizininden veya bağlı bir Git revizyonundan kod gönderme şeklidir.
  • Bir çalışma alanı veya birim yolu — zaten yüklenmiş, olduğu gibi kullanılan kod.

Paketlenmiş eser

Bir tgz yapısı tanımlayın ve code_source_path öğesini onun çıktı dosyasına yönlendirin. databricks bundle deploy üzerinde CLI, tarball’u oluşturur, yükler ve görev bunu arşivden çıkararak komutunuzu bunun üzerinde çalıştırır:

artifacts:
  code:
    type: tgz
    path: .
    include: [src]
    files:
      - source: ./dist/code.tgz
resources:
  jobs:
    train:
      tasks:
        - task_key: train
          ai_runtime_task:
            code_source_path: ./dist/code.tgz

Çalışma ağacınızdaki dosyaları paketlemek için git veya commit’lenmiş bir dalın ya da bir commit’in anlık görüntüsünü almak için include kullanın.

Çalışma alanı veya hacim yolu

Zaten yüklenmiş olan kodu kullanmak için /Workspace/… değerini /Volumes/… veya code_source_path yolu olarak ayarlayın. Azure Databricks as-is yolu kullanıyor ve hiçbir şey paketlemiyor.

tgz artefakt alanları:

Veri Alanı Description
type tgz, build komutunu çalıştırmak yerine kaynak dosyalardan gzip sıkıştırılmış bir tar arşivi oluşturur.
path Paketlenecek temel dizin. include yollar ve arşivin giriş adları ona bağlıdır.
include Paketlenecek path alt yollarının listesi. path öğesinin tamamını paketlemeyi atlayın. .gitignore geçerlidir; paket genelindeki sync.include ve sync.exclude geçerli değildir. build komutuna alternatif.
git Çalışma ağacı yerine commit edilmiş bir Git referansının anlık görüntüsünü alın. git.branch veya git.commit ayarlayın (commit, ikisi de ayarlanmışsa geçerli olur). Bir build komutuna alternatif.
files[].source Inşa edilmiş tarballun yolu. Buna işaret code_source_path et.

Note

AI Çalışma Zamanı, kodunuzu bir dizine çıkarır ve ortam değişkeni CODE_SOURCE_PATH olarak açıklar. Komutunuzdan referans verin, böylece göreceli yollar çözülsün, örneğin cd "$CODE_SOURCE_PATH" scriptinizi çalıştırmadan önce.

Tam örnek

Bu örnek, yerel bir projeden tek bir A10 GPU üzerinde eğitim veriyor ve Azure Databricks CLI'nin kurulumu ve yapılandırması dışında önceden bir CLI kurulumu yok. Projenin üç dosyası vardır:

my-training/
├── databricks.yml
├── command.sh
└── src/
    └── train.py

command_path tarafından adlandırılan giriş noktası command.sh’dır. Çıkarılmış kod dizinine geçer ve eğitim betikini çalıştırır:

#!/usr/bin/env bash
set -euo pipefail
cd "$CODE_SOURCE_PATH"
python train.py

databricks.yml, paketi adlandırır, tgz’i bir src/ yapıtı olarak paketler, onu bir ai_runtime_task olarak çalıştırır, numpy’ü görev ortamına kurar ve geliştirme ile üretim hedeflerini tanımlar:

bundle:
  name: my-training

artifacts:
  code:
    type: tgz
    path: .
    include: [src]
    files:
      - source: ./dist/code.tgz

resources:
  jobs:
    train:
      name: my-training
      tasks:
        - task_key: train
          environment_key: default
          ai_runtime_task:
            experiment: /Users/me@example.com/my-training
            code_source_path: ./dist/code.tgz
            deployments:
              - command_path: ./command.sh
                compute:
                  accelerator_type: GPU_1xA10
                  accelerator_count: 1
      environments:
        - environment_key: default
          spec:
            environment_version: '5'
            dependencies:
              - numpy

targets:
  dev:
    mode: development
    default: true
  prod:
    mode: production

Paketi dağıtın ve görevi çalıştırın. databricks bundle deploy, tgz artefaktını derleyip yükler ve işi oluşturur; databricks bundle run onu başlatır:

databricks bundle deploy --target dev
databricks bundle run train --target dev

Çok görevli iş akışları oluşturun

Bir ai_runtime_task, Azure Databricks iş görevidir; bu nedenle işin geri kalanıyla bir araya getirilebilir. Eğitimden önce bir hazırlık adımı çalıştırabilir, GPU ve CPU görevlerini tek bir işte birleştirebilir ve her görev için farklı hızlandırıcılar kullanabilirsiniz.

Görevleri depends_on ile sıralayın

Görevleri sırayla çalıştırmak için kullanılır depends_on . Aşağıdaki boru hattı, bir hazırlık not defterini çalıştırır; ardından, yalnızca hazırlık görevi başarıyla tamamlandıktan sonra başlayan bir GPU eğitimi görevi çalıştırır:

resources:
  jobs:
    train_pipeline:
      tasks:
        - task_key: prep
          notebook_task:
            notebook_path: ./prep.py
        - task_key: train
          depends_on:
            - task_key: prep
          ai_runtime_task:
            experiment: my-experiment
            code_source_path: ./dist/code.tgz
            deployments:
              - command_path: ./command.sh
                compute:
                  accelerator_type: GPU_1xA10
                  accelerator_count: 1

GPU ve CPU görevlerini birleştirin

Yukarıdaki pipeline'da sadece eğitim aşaması GPU gerektirir. GPU dışı çalışmaları, örneğin veri hazırlama gibi görevleri ayrı görevlerde tutmak, GPU'nun zamanını eğitime odaklı tutar.

Note

An ai_runtime_task Azure Databricks iş görev değerlerini ({{tasks.<task_key>.values.<name>}} veya dbutils.jobs.taskValues) desteklemez. Adımlar arasında veri aktarmak için, her iki görevin de okuyabileceği paylaşılan bir konuma, örneğin Unity Kataloğu hacmi veya çalışma alanı dosyasına yazın ve her görevden o yola referans verin.

İş yükünü planlayın

Görevi belirli aralıklarla çalıştırmak için ona bir schedule ekleyin. Zamanlamayı, paketi dağıttığınızda çalıştırmaları kendiliğinden başlatmayacak şekilde duraklatılmış olarak yayımlayın; ardından hazır olduğunuzda duraklatmayı kaldırın:

resources:
  jobs:
    train_pipeline:
      schedule:
        quartz_cron_expression: '0 0 9 * * ?'
        timezone_id: UTC
        pause_status: PAUSED

Geliştirmeden üretime terfi

Geliştirmeden üretime terfi, yapay zeka Çalışma Zamanı görevinin değişmeden devraldığı standart bir paket özelliğidir.

Paket hedefleri ve modları

Geliştirme hedefinizin yanı sıra mode: production bir üretim hedefi tanımlayın. Hedef, paketin nerede konuşlandığını ve kaynaklarının nasıl adlandırıldığını kontrol eder:

targets:
  dev:
    mode: development
    default: true
  prod:
    mode: production

Dağıt ve çalıştır

Paketi bir hedefe karşı standart paket komutlarıyla dağıtın ve çalıştırın:

databricks bundle deploy --target dev
databricks bundle run train_pipeline --target dev

Sonraki Adımlar