Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Deklarative Automation Bundles'u kullanarak bir AI Çalışma Zamanı GPU iş yükünü planlayın ve bunu yukarı akış veri hazırlığı gibi diğer işlerle birleştirin. İş yükünü ve takvimini YAML'de tanımlayın, sonra bunları bir Job olarak dağıtın. Bir eğitim iş hattı için, CPU işlem kaynağında ön işleme çalıştırın ve veriler hazır olduktan sonra GPU eğitimine başlayın.
Bu rehber, "Hello world" yazdıran bir iş yüküyle başlar, ardından planlanmış bir ön işleme ve eğitim boru hattı oluşturur. Zaten bir AI Çalışma Zamanı iş yükü YAML'niz varsa, Bir AI Çalışma Zamanı iş yükünü pakete dönüştür sayfasına bakınız.
Nasıl çalışır?
- Bir paket , sizin kodunuzu ve bir
databricks.ymlyapılandırmayı içerir. - Bir iş, görevleri gruplar ve ne zaman çalıştıklarını tanımlar.
- Bir
ai_runtime_task, komutunuzu AI Runtime'da çalıştırır.
depends_on alanı görevleri yönlendirilmiş bir asiklik grafik (DAG) olarak bağlar ve schedule alanı işinizi bir kadansa göre programlar.
databricks bundle deploy kodu yükler ve işi oluşturur veya günceller.
databricks bundle run hemen bir iş çalıştırması başlatır. Her run’da AI Runtime, GPU hesaplamasını sağlar, komutunuzu çalıştırır ve run’ı adlı MLflow deneyine kaydeder.
Requirements
- Desteklenen bir bölgedeki çalışma alanı. Gereksinimlere bakınız.
- En yeni Databricks CLI, çalışma alanınızda kimliği doğrulanmış. Bu örnekleri kullanmadan önce mevcut bir kurulumu güncelleyin.
- Ön işleme örneği için, mevcut bir Unity Catalog birimi. İşin çalıştırma kimliği, bu birim için
USE CATALOG,USE SCHEMA,READ VOLUMEveWRITE VOLUMEayrıcalıklarına ihtiyaç duyar. Bkz. Unity Kataloğu birimleri için ayrıcalıklar.
ai_runtime_task içeren Merhaba dünya örneği
Bu örnek, bir A10 GPU'da shell komutu çalıştırıyor.
Paket için bir dizin oluşturun. O dizinde, aşağıdaki içeriklerle
command.sholuşturun:#!/usr/bin/env bash set -euo pipefail echo "Hello world"Aynı dizinde
databricks.ymloluşturun: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: trueBundle dizininden doğrulayın, dağıtın ve işi çalıştırın:
databricks bundle validate --target dev databricks bundle deploy --target dev databricks bundle run hello --target devCLI tarafından yazdırılan çalıştırma URL'sini açın ve
hellogörevinin çıktısını görüntüleyin. İçindeHello worldbulunur. Bu çalışma ayrıca MLflow deneyindehello-ai-runtimede yer alır.
Daha karmaşık örnek: Ön işleme ve eğitim boru hattı planlayın
Bu örnek, CPU hesaplamasında küçük bir veri seti hazırlar, ardından bir A10 GPU üzerinde doğrusal bir model eğitir. Her iki görev de aynı volume dosyasını kullanarak aralarında veri aktarır. İş her gün 09:00 UTC'ye planlanmış, test edilene kadar program duraklatılmış.
Projeyi oluşturma
Aşağıdaki düzenle ayrı bir dizin oluşturun:
scheduled-training/ ├── databricks.yml ├── prep.py ├── command.sh └── src/ └── train.pyAşağıdaki içerikle oluşturun
prep.py.<schema>,<volume>ve<catalog>öğelerini biriminizin adlarıyla değiştirin. Bu kaynak not defteri, giriş değerlerini normalleştirir ve hazırlanan verileri birime yazar:# 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}")Aşağıdaki içeriklerle
src/train.pyoluşturun.prep.pyiçindekiyle aynı birim yolunu kullanın: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}")Eğitim kodunu çalıştırmak için Oluştur
command.sholuşturun. Aşağıdaki paketsrc/içerir, bu nedenleCODE_SOURCE_PATH, çıkarılansrcdizinine işaret eder:#!/usr/bin/env bash set -euo pipefail cd "$CODE_SOURCE_PATH" python train.pydatabricks.ymlöğesini aşağıdaki içeriklerle oluşturun. Paket, GPU görevi içinsrc/içerir.prepnotebook, sunucusuz CPU hesaplamasında çalışır vetrainbaşarılı olduktan sonradepends_onbaşlar.max_concurrent_runs: 1Bu işin çalıştırmaları, birbirlerinin girdi dosyasının üzerine yazmasını önler: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
Zamanlamayı test et ve etkinleştir
Buradan
scheduled-training/demeti dağıtın ve manuel bir çalıştırmaya başlayın:databricks bundle validate --target dev databricks bundle deploy --target dev databricks bundle run train_pipeline --target devCLI tarafından yazdırılan çalıştırma adresini açın.
trainbaşlamadan önceprepişleminin başarılı olduğunu onaylayın.prepçıktısı 10 hazırlanmış satır bildirir vetrainçıktısıTrained on cuda:0ve kaybı bildirir.databricks.ymliçinde, zamanlamanınpause_statusdeğeriniPAUSED'denUNPAUSED'e değiştirin. Zamanlama bloğu şimdi:schedule: quartz_cron_expression: '0 0 9 * * ?' timezone_id: UTC pause_status: UNPAUSEDGünlük programı etkinleştirmek için değişikliği yayınlayın:
databricks bundle deploy --target devpause_status: UNPAUSEDdeğerini açıkça belirtmek, bir geliştirme hedefi için bile bu zamanlamayı etkinleştirir. Jobs & Pipelines’ta, dağıtılan işi açın ve 09:00 UTC için zamanlamasının aktif olduğunu doğrulayın. Bkz İşleri bir zamanlamaya göre çalıştırma.
Zamanlanmış çalışmaları durdurmak için pause_status: PAUSED ayarlayın ve yeniden dağıtın. Örnek işi ve paket tarafından yüklenen dosyaları kaldırmak için, bundle dizininden aşağıdakıları çalıştırın:
databricks bundle destroy --target dev
Biriminizdeki hazırlanan veriler kalır. Artık ihtiyacınız kalmadığında veri scheduled-training dizinini sil.
Ek kaynaklar
- Mevcut bir AI Çalışma Zamanı iş yükü YAML'i bir pakete dönüştürün. Bkz. Bir AI Çalışma Zamanı iş yükünü pakete dönüştür.
- Kod paketleme, hesaplama, ortamlar ve görev parametrelerini yapılandırın. Bkz.: Yapay Zeka çalışma zamanı paketi görevlerini yapılandırma.
- GPU üzerinde mevcut bir not defterini zamanlayın. Bkz. Zamanlanmış not defteri işlerini oluşturma ve yönetme.
- Antrenman koşularını izleyin. Bkz. Deney takibi ve gözlemlenebilirlik.
- Modelin, optimizer'ın ve veri hattının durumunu denetim noktasına kaydedin. Bkz. AI Runtime üzerinde eğitim performansını ve dayanıklılığı artırma.