Jadikan beban kerja pelatihan siap produksi

Important

Fitur ini ada di Pratinjau Umum.

Gunakan DAB untuk mendefinisikan beban kerja pelatihan AI Runtime sebagai kode. Simpan dalam kontrol versi, terapkan di berbagai lingkungan, jadwalkan, dan gabungkan dengan tugas lain. Halaman ini membahas alur pelatihan Anda sendiri, di mana ai_runtime_task menjalankan perintah Anda sendiri pada direktori berisi kode di komputasi GPU nirserver.

Tip

  • Gunakan Bundel Otomatisasi Deklaratif untuk mendefinisikan beban kerja pelatihan sebagai kode, menerapkannya di berbagai lingkungan, dan menjadwalkannya.
  • ai_runtime_task menjalankan perintah Anda sendiri pada direktori kode (bring-your-own-training).
  • Gabungkan tugas GPU dan CPU dalam pekerjaan multi-tugas.

Ini adalah tugas yang berbeda dengan menjalankan notebook di GPU serverless melalui bundle. Untuk contoh dasar bundle notebook-on-GPU, lihat Penjadwalan dengan Jobs API dan Bundle Otomasi Deklaratif.

Requirements

  • Ruang kerja dengan AI Runtime diaktifkan. Lihat Persyaratan.
  • Databricks CLI (antarmuka baris perintah) terpasang dan dikonfigurasi untuk mendistribusikan bundel.

Definisikan tugas AI Runtime dalam sebuah bundel

ai_runtime_task menamai sebuah eksperimen, merujuk ke kode pelatihan Anda dengan code_source_path, dan mendeklarasikan satu penerapan: perintah yang akan dijalankan dan GPU tempat perintah tersebut dijalankan. Tambahkan ke tugas dalam bundel Anda:

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 menunjuk ke kode pelatihan yang Anda paketkan, dan command_path adalah skrip yang dijalankan tugas tersebut. Percobaan ulang, batas waktu, dan izin akses diatur pada tugas dan pekerjaan dengan cara yang sama seperti pada pekerjaan Azure Databricks lainnya, sehingga praktik bundle yang sudah ada tetap dapat diterapkan. Untuk cara mengemas dan merujuk kode Anda, lihat Kirim kode pelatihan Anda.

ai_runtime_task Bidang

Field Tipe Deskripsi
experiment string Required. Nama eksperimen MLflow untuk eksekusi tersebut. Lihat Pelacakan eksperimen dan observabilitas.
code_source_path string Kode pelatihan yang akan dijalankan: file keluaran dari artefak tgz yang dipaketkan, atau jalur /Workspace atau /Volumes ke kode yang sudah diunggah. Lihat Kirim kode pelatihan Anda.
deployments Sequence Required. Satu deployment yang mendeskripsikan perintah dan sumber daya komputasi untuk menjalankannya. Setiap entri mengandung command_path, compute, dan opsional name.
deployments[].command_path string Required. Skrip yang dijalankan oleh tugas pada setiap node.
deployments[].compute.accelerator_type string Required. Tipe GPU, misalnya GPU_1xA10, GPU_1xH100, atau GPU_8xH100.
deployments[].compute.accelerator_count Integer Required. Jumlah total GPU di semua node—kelipatan dari jumlah per node yang dikodekan dalam accelerator_type.
deployments[].name string Nama opsional untuk deployment, yang digunakan dalam log dan antarmuka pengguna (UI).
docker_image_url string Citra Docker kustom opsional untuk menjalankan perintah, bukan lingkungan terkelola. Lihat Menggunakan gambar Docker kustom.
mlflow_run string Nama tampilan opsional untuk proses MLflow.
mlflow_experiment_directory string Direktori ruang kerja opsional tempat eksperimen dibuat. Harus dimulai dengan /Workspace. Atur ini saat dijalankan sebagai service principal yang tidak memiliki direktori pengguna default.
mlflow_artifact_location string Lokasi akar opsional untuk artefak MLflow, misalnya jalur /Volumes/<catalog>/<schema>/<volume>/…. Harus cocok dengan lokasi artefak eksperimen yang sudah ada atau dihilangkan.

Atur percobaan ulang, batas waktu, izin akses, dan lingkungan (environment_key) pada tugas dan job—bukan di ai_runtime_task. Untuk referensi tugas lengkap, lihat tugas AI Runtime.

Konfigurasikan akselerator perangkat keras

Atur accelerator_type ke GPU yang dibutuhkan beban kerja Anda, dan accelerator_count ke total jumlah GPU. Jumlah tersebut adalah kelipatan dari jumlah GPU per node: 1 untuk GPU_1xA10 dan GPU_1xH100, dan 8 untuk GPU_8xH100. Jumlah yang melebihi ukuran per node membuat tugas dijalankan di beberapa node—misalnya, GPU_8xH100 dengan accelerator_count: 16 dijalankan pada dua node. Untuk panduan memilih akselerator, lihat Opsi perangkat keras.

Note

Untuk eksekusi multi-node, AI Runtime menjalankan perintah Anda pada setiap node dan menetapkan variabel lingkungan standar untuk pelatihan terdistribusi di lingkungan tugas—NUM_NODES, WORLD_SIZE, LOCAL_WORLD_SIZE, MASTER_ADDR, dan MASTER_PORT. Bacalah dari perintah Anda (misalnya, peluncuran torchrun); jangan tetapkan nilainya di bundle.

Atur lingkungan dan ketergantungan

Deklarasikan blok environments pada pekerjaan dan referensikan dari tugas dengan environment_key. AI Runtime menginstal ketergantungan yang tercantum sebelum perintah Anda dijalankan:

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: '6'
            dependencies:
              - numpy

Untuk lingkungan yang tersedia, lihat Atur lingkungan Anda.

Kirim kode pelatihan Anda

code_source_path memberi tahu tugas di mana kode pelatihan Anda berada. Bentuknya terdiri dari dua bentuk:

  • Artefak yang dikemas tgz — deklarasikan artefak dan arahkan code_source_path ke file outputnya. Azure Databricks membangun tarball dan mengunggahnya ke databricks bundle deploy. Inilah cara Anda mengirim kode dari direktori proyek lokal atau revisi Git yang sudah dikomitmenkan.
  • Jalur akses ruang kerja atau volume — kode yang sudah diunggah, digunakan apa adanya.

Artefak kemasan

Deklarasikan tgz sebuah artefak dan arahkan code_source_path ke file outputnya. Pada databricks bundle deploy, CLI membangun tarball, mengunggahnya, dan tugas mengekstraknya serta menjalankan perintah Anda terhadapnya:

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

Gunakan include untuk mengemas file dari pohon kerja Anda, atau git untuk mengambil snapshot cabang atau commit yang telah dikomit.

Lokasi workspace atau volume

Untuk menggunakan kode yang sudah diunggah, atur code_source_path ke jalur /Workspace/… atau /Volumes/…. Azure Databricks menggunakan path as-is dan tidak mengemas apa pun.

tgz Bidang artefak:

Field Deskripsi
type tgz membuat tarball terkompresi gzip dari file sumber, alih-alih menjalankan perintah build.
path Direktori dasar yang akan dikemas. include Jalur dan nama entri arsip relatif terhadap jalur tersebut.
include Daftar subpath dari path ke paket. Jangan sertakan path saat mengemas semuanya. Mematuhi .gitignore; sync.include dan sync.exclude yang berlaku untuk seluruh bundel tidak berlaku. Alternatif dari perintah build .
git Ambil snapshot ref Git yang sudah di-commit, bukan working tree. Tetapkan git.branch atau git.commit (commit diprioritaskan jika keduanya ditetapkan). Alternatif dari perintah build .
files[].source Jalan tarball yang dibangun. Arahkan code_source_path ke sini.

Note

AI Runtime mengekstrak kode Anda ke direktori dan mengeksposnya sebagai CODE_SOURCE_PATH variabel lingkungan. Referensikan dari perintah Anda agar jalur relatif terselesaikan, misalnya cd "$CODE_SOURCE_PATH" sebelum menjalankan skrip Anda.

Contoh lengkap

Contoh ini berlatih pada satu GPU A10 dari proyek lokal, tanpa pengaturan CLI sebelumnya selain menginstal dan mengonfigurasi Azure Databricks CLI. Proyek ini memiliki tiga file:

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

command.sh adalah titik masuk yang dinamai oleh command_path. Ini berpindah ke direktori kode hasil ekstraksi dan menjalankan skrip pelatihan:

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

databricks.yml menamai bundel, mengemas src/ sebagai tgz artefak, menjalankannya sebagai ai_runtime_task, menginstal numpy di lingkungan tugas, dan mendefinisikan target pengembangan serta produksi:

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: '6'
            dependencies:
              - numpy

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

Terapkan paket dan jalankan tugas. databricks bundle deploy membangun dan mengunggah tgz artefak serta membuat pekerjaan; databricks bundle run memulainya:

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

Bangun alur kerja multi-tugas

ai_runtime_task merupakan tugas dalam job Azure Databricks, sehingga dapat digabungkan dengan bagian lain dari job tersebut. Anda bisa menjalankan langkah persiapan sebelum pelatihan, menggabungkan tugas GPU dan CPU dalam satu pekerjaan, dan menggunakan akselerator berbeda per tugas.

Urutkan tugas dengan depends_on

Gunakan depends_on untuk menjalankan tugas secara berurutan. Pipeline berikut menjalankan notebook persiapan, lalu tugas pelatihan GPU yang hanya dimulai setelah tugas persiapan berhasil:

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

Gabungkan tugas GPU dan CPU

Dalam pipeline di atas, hanya langkah pelatihan yang membutuhkan GPU. Menjaga pekerjaan non-GPU seperti persiapan data dalam tugas terpisah menjaga waktu GPU tetap fokus pada pelatihan.

Note

An ai_runtime_task tidak mendukung nilai tugas pekerjaan Azure Databricks ({{tasks.<task_key>.values.<name>}} atau dbutils.jobs.taskValues). Untuk mengirim data antar langkah, tulislah ke lokasi bersama yang dapat dibaca oleh kedua tugas, seperti volume Unity Catalog atau file workspace, dan referensikan jalur tersebut dari setiap tugas.

Jadwalkan beban kerja

Tambahkan schedule ke tugas untuk menjalankannya secara berkala. Kirimkan jadwal yang dijeda agar penyebaran bundle tidak memulai run dengan sendirinya, lalu batalkan jeda saat Anda siap:

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

Mendorong dari pengembangan ke produksi

Promosi dari pengembangan ke produksi merupakan fitur standar pada bundle yang diturunkan oleh tugas AI Runtime tanpa perubahan.

Bundel target dan mode

Tentukan target produksi mode: production di samping target pengembangan Anda. Target menentukan tempat bundle diterapkan dan bagaimana nama sumber dayanya ditetapkan:

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

Terapkan dan jalankan

Terapkan dan jalankan bundle ke target menggunakan perintah bundle standar:

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

Langkah berikutnya