Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Gunakan Bundle Otomasi Deklaratif untuk menjadwalkan beban kerja GPU AI Runtime dan menggabungkannya dengan pekerjaan lain, seperti persiapan data hulu. Definisikan beban kerja dan jadwalnya di YAML, lalu deploy keduanya sebagai job. Untuk pipeline pelatihan, jalankan prapemrosesan pada komputasi CPU dan mulai pelatihan GPU setelah data siap.
Panduan ini dimulai dengan beban kerja yang mencetak "Hello world", lalu membangun pipeline pra-pemrosesan dan pelatihan yang terjadwal. Jika Anda sudah memiliki YAML beban kerja AI Runtime, lihat Konversi beban kerja AI Runtime menjadi bundel.
Cara kerjanya
-
Sebuah bundel berisi kode Anda dan
databricks.ymlkonfigurasi. - Job mengelompokkan tugas dan menentukan kapan tugas tersebut dijalankan.
-
ai_runtime_taskmenjalankan perintah Anda di AI Runtime.
Bidang depends_on menghubungkan tugas ke dalam grafik asiklik terarah (DAG), dan bidang schedule menjadwalkan pekerjaan Anda untuk berjalan secara berkala.
databricks bundle deploy mengunggah kode dan membuat atau memperbarui job.
databricks bundle run segera memulai eksekusi job. Pada setiap eksekusi, AI Runtime menyediakan komputasi GPU, menjalankan perintah Anda, dan merekam run tersebut dalam eksperimen MLflow bernama.
Requirements
- Ruang kerja di wilayah yang didukung. Lihat Persyaratan.
- CLI Databricks terbaru, terautentikasi ke workspace Anda. Perbarui instalasi yang sudah ada sebelum menggunakan contoh-contoh ini.
- Untuk contoh prapemrosesan, gunakan volume Unity Catalog yang sudah ada. Identitas run job membutuhkan
USE CATALOG,USE SCHEMA,READ VOLUME, danWRITE VOLUMEhak istimewa untuk volume tersebut. Lihat Hak Istimewa untuk volume Katalog Unity.
Contoh Hello World dengan ai_runtime_task
Contoh ini menjalankan perintah shell pada satu GPU A10.
Buat direktori untuk bundle. Di direktori tersebut, buat
command.shdengan konten berikut:#!/usr/bin/env bash set -euo pipefail echo "Hello world"Buat
databricks.ymldi direktori yang sama:bundle: name: hello-ai-runtime resources: jobs: hello: name: hello-ai-runtime tasks: - task_key: hello environment_key: default ai_runtime_task: experiment: hello-ai-runtime deployments: - command_path: ${workspace.file_path}/command.sh compute: accelerator_type: GPU_1xA10 accelerator_count: 1 environments: - environment_key: default spec: environment_version: '6' targets: dev: mode: development default: trueDari direktori bundle, validasi, sebarkan, dan jalankan pekerjaan:
databricks bundle validate --target dev databricks bundle deploy --target dev databricks bundle run hello --target devBuka URL run yang dicetak oleh CLI dan lihat output tugas
hello. Ini mengandungHello world. Run ini juga muncul dalamhello-ai-runtimeeksperimen MLflow.
Contoh yang lebih kompleks: Jadwalkan pipeline pra-pemrosesan dan pelatihan
Contoh ini menyiapkan dataset kecil pada komputasi CPU, lalu melatih model linear pada satu GPU A10. Kedua tugas menggunakan file volume yang sama untuk meneruskan data di antara keduanya. Pekerjaan dijadwalkan pada pukul 09:00 UTC setiap hari, dengan jadwal dijeda sampai Anda mengujinya.
Membuat proyek
Buat direktori terpisah dengan tata letak berikut:
scheduled-training/ ├── databricks.yml ├── prep.py ├── command.sh └── src/ └── train.pyBuat
prep.pydengan konten berikut. Ganti<catalog>,<schema>, dan<volume>dengan nama volume Anda. Notebook sumber ini menormalkan nilai input dan menulis data yang telah disiapkan ke volume:# Databricks notebook source import json from pathlib import Path data_path = Path("/Volumes/<catalog>/<schema>/<volume>/scheduled-training/data.json") inputs = [value / 10 for value in range(10)] data = {"x": inputs, "y": [2 * value + 1 for value in inputs]} data_path.parent.mkdir(parents=True, exist_ok=True) data_path.write_text(json.dumps(data)) print(f"Prepared {len(inputs)} rows at {data_path}")Buat
src/train.pydengan konten berikut. Gunakan jalur volume yang sama seperti diprep.py:import json from pathlib import Path import torch data_path = Path("/Volumes/<catalog>/<schema>/<volume>/scheduled-training/data.json") data = json.loads(data_path.read_text()) x = torch.tensor(data["x"], device="cuda").reshape(-1, 1) y = torch.tensor(data["y"], device="cuda").reshape(-1, 1) model = torch.nn.Linear(1, 1).to("cuda") optimizer = torch.optim.SGD(model.parameters(), lr=0.1) for _ in range(200): optimizer.zero_grad() loss = torch.nn.functional.mse_loss(model(x), y) loss.backward() optimizer.step() print(f"Trained on {x.device}: loss={loss.item():.4f}")Buat
command.shuntuk menjalankan kode pelatihan. Bundel di bawah ini berisisrc/, jadiCODE_SOURCE_PATHmenunjuk ke direktorisrcyang diekstrak:#!/usr/bin/env bash set -euo pipefail cd "$CODE_SOURCE_PATH" python train.pyBuat
databricks.ymldengan konten berikut. Bundle ini mengemassrc/untuk tugas GPU.prepNotebook berjalan dengan komputasi CPU serverless, dandepends_onhanya mulaitrainsetelahprepberhasil.max_concurrent_runs: 1mencegah eksekusi pekerjaan ini menimpa file input milik satu sama lain:bundle: name: scheduled-training artifacts: code: type: tgz path: . include: [src] files: - source: ./dist/code.tgz resources: jobs: train_pipeline: name: scheduled-training max_concurrent_runs: 1 schedule: quartz_cron_expression: '0 0 9 * * ?' timezone_id: UTC pause_status: PAUSED tasks: - task_key: prep notebook_task: notebook_path: ./prep.py - task_key: train depends_on: - task_key: prep environment_key: training ai_runtime_task: experiment: scheduled-training code_source_path: ./dist/code.tgz deployments: - command_path: ${workspace.file_path}/command.sh compute: accelerator_type: GPU_1xA10 accelerator_count: 1 environments: - environment_key: training spec: environment_version: '6' dependencies: - torch targets: dev: mode: development default: true
Uji dan aktifkan jadwal
Dari
scheduled-training/, deploy bundle dan mulai proses manual:databricks bundle validate --target dev databricks bundle deploy --target dev databricks bundle run train_pipeline --target devBuka URL run yang dicetak oleh CLI. Pastikan
prepberhasil sebelumtraindimulai. Outputprepmelaporkan 10 baris yang sudah disiapkan, serta outputtrainmelaporkanTrained on cuda:0dan kerugian.Di
databricks.yml, ubah jadwalpause_statusdariPAUSEDkeUNPAUSED. Blok jadwal sekarang adalah:schedule: quartz_cron_expression: '0 0 9 * * ?' timezone_id: UTC pause_status: UNPAUSEDTerapkan perubahan untuk mengaktifkan jadwal harian:
databricks bundle deploy --target devMenetapkan
pause_status: UNPAUSEDsecara eksplisit memungkinkan jadwal ini bahkan untuk target pengembangan. Di Jobs & Pipelines, buka pekerjaan yang telah dideploy dan konfirmasi bahwa jadwalnya aktif pada pukul 09:00 UTC. Lihat Menjalankan pekerjaan sesuai jadwal.
Untuk menjeda pelaksanaan terjadwal, atur pause_status: PAUSED lalu deploy lagi. Untuk menghapus pekerjaan contoh dan file yang diunggah oleh bundle, jalankan hal berikut dari direktori bundle-nya:
databricks bundle destroy --target dev
Data yang sudah disiapkan dalam volume Anda tetap ada. Hapus scheduled-training direktori data saat Anda tidak lagi membutuhkannya.
Sumber daya tambahan
- Konversi YAML beban kerja AI Runtime yang sudah ada menjadi bundel. Lihat Ubah beban kerja AI Runtime menjadi bundel.
- Konfigurasikan pengemasan kode, komputasi, lingkungan, dan parameter tugas. Lihat Konfigurasikan tugas bundel AI Runtime.
- Jadwalkan notebook yang sudah ada di GPU. Lihat Membuat dan mengelola pekerjaan buku catatan terjadwal.
- Lacak sesi latihan. Lihat Pelacakan eksperimen dan observabilitas.
- Checkpoint model, optimizer, dan kondisi pipeline data. Lihat Tingkatkan performa pelatihan dan ketahanan pada AI Runtime.