Trainingswerklasten producties maken

Important

Deze functie bevindt zich in openbare preview-versie.

Gebruik DAB's om een AI Runtime-trainingsworkload als code te definiëren. Houd het in versiebeheer, rol het uit naar verschillende omgevingen, plan het en combineer het met andere taken. Deze pagina behandelt het 'bring-your-own-training'-traject, waarbij een ai_runtime_task je eigen opdracht uitvoert op een map met code met behulp van serverloze GPU-rekencapaciteit.

Tip

  • Gebruik Declarative Automation Bundles om trainingsworkloads als code te definiëren, ze in te rollen over omgevingen en te plannen.
  • Dan voert ai_runtime_task je eigen commando uit tegen een directory met code (bring-your-own-training).
  • Combineer GPU- en CPU-taken in multitaskjobs.

Dit is een andere taak dan een notebook uitvoeren met een serverloze GPU via een bundel. Voor het basisvoorbeeld van een notebook-op-GPU bundel, zie Schedule with the Jobs API en Declarative Automation Bundles.

Requirements

  • Een werkruimte met AI Runtime ingeschakeld. Zie Vereisten.
  • De Databricks CLI (commandoregelinterface) is geïnstalleerd en geconfigureerd om bundels uit te zetten.

Definieer een AI Runtime-taak in een bundel

Een ai_runtime_task geeft een experiment een naam, verwijst met code_source_path naar je trainingscode en specificeert één deployment: de opdracht die moet worden uitgevoerd en de GPU waarop die wordt uitgevoerd. Voeg dit toe aan een taak in je bundel:

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 wijst naar je verpakte trainingscode, en command_path is het script dat de taak uitvoert. Herpogingen, time-outs en machtigingen worden voor de taak en de job op dezelfde manier ingesteld als voor elke andere Azure Databricks-job, dus je bestaande bundelwerkwijzen blijven van toepassing. Zie Lever je trainingscode voor informatie over hoe je je code verpakt en ernaar verwijst.

ai_runtime_task Velden

Veld Type Description
experiment String Required. De MLflow-experimentnaam voor de run. Zie het bijhouden van experimenten en observabiliteit.
code_source_path String De trainingscode die moet worden uitgevoerd: het uitvoerbestand van een verpakt tgz-artefact, of een /Workspace- of /Volumes-pad naar al geüploade code. Zie Verzend je trainingscode.
deployments Volgorde Required. Een enkele deployment die het commando beschrijft en de rekenomgeving waarop het wordt uitgevoerd. Elke vermelding bevat command_path, compute, en een optioneel name.
deployments[].command_path String Required. Het script waarin de taak op elke node draait.
deployments[].compute.accelerator_type String Required. Het GPU-type, bijvoorbeeld GPU_1xA10, GPU_1xH100, of GPU_8xH100.
deployments[].compute.accelerator_count Integer Required. Het totale aantal GPU's over alle nodes—een veelvoud van het aantal per node dat in accelerator_typeis gecodeerd.
deployments[].name String Een optionele naam voor de deployment, gebruikt in logs en de UI.
docker_image_url String Een optioneel aangepaste Docker-image om het commando in uit te voeren, in plaats van in de beheerde omgeving. Zie Aangepaste Docker-installatiekopieën gebruiken.
mlflow_run String Een optionele weergavenaam voor de MLflow-run.
mlflow_experiment_directory String Een optionele werkruimtemap waarbinnen het experiment wordt aangemaakt. Moet beginnen met /Workspace. Stel dit in wanneer je draait als een serviceprincipal zonder standaard gebruikersdirectory.
mlflow_artifact_location String Een optionele wortellocatie voor MLflow-artefacten, bijvoorbeeld een /Volumes/<catalog>/<schema>/<volume>/… pad. Moet overeenkomen met de locatie van een bestaand experiment of worden weggelaten.

Stel herpogingen, timeouts, machtigingen en de omgeving (environment_key) in voor de taak en job—niet binnen ai_runtime_task. Voor de volledige taakreferentie, zie AI Runtime-taak.

Configureer de hardwareversneller

Stel accelerator_type in op de GPU die je workload nodig heeft, en accelerator_count op het totale aantal GPU's. Het aantal is een veelvoud van het aantal GPU's per node: 1 voor GPU_1xA10 en GPU_1xH100, en 8 voor GPU_8xH100. Als het aantal groter is dan de grootte per knooppunt, wordt de taak over meerdere knooppunten uitgevoerd, bijvoorbeeld: GPU_8xH100 met accelerator_count: 16 wordt op twee knooppunten uitgevoerd. Voor advies bij het kiezen van een accelerator, zie Hardware-opties.

Note

Voor multi-node-runs voert AI Runtime je commando uit op elke node en vult de standaard variabelen voor de distributed training environment in de taakomgeving—NUM_NODES, , WORLD_SIZE, LOCAL_WORLD_SIZE, MASTER_ADDR, en MASTER_PORT. Lees ze uit je commando (bijvoorbeeld een torchrun launch); je zet ze niet in de bundel.

Stel de omgeving en afhankelijkheden in

Definieer een environments blok voor de job en verwijs er vanuit de taak naar met environment_key. AI Runtime installeert de vermelde afhankelijkheden voordat je commando wordt uitgevoerd:

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

Voor de beschikbare omgevingen, zie Instellen van je omgeving.

Stuur je trainingscode

code_source_path geeft de taak aan waar je trainingscode staat. Het heeft een van twee vormen:

  • Een verpakt tgz artefact — declareer een artefact en wijs code_source_path naar het uitvoerbestand. Azure Databricks bouwt de tarball en uploadt deze op databricks bundle deploy. Zo verzend je code vanuit een lokale projectmap of een toegewijde Git-revisie.
  • Een werkruimte- of volumepad — code die al is geüpload en ongewijzigd wordt gebruikt.

Verpakt artefact

Declareer een tgz artefact en wijs code_source_path naar het uitvoerbestand. Op databricks bundle deploy, bouwt de CLI de tarball, uploadt hem, en de taak haalt hem uit en voert jouw commando ertegen:

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

Gebruik include om bestanden uit je werkboom te verpakken, of git om een momentopname te maken van een gecommitteerde branch of commit.

Werkruimte of volumepad

Om code te gebruiken die al is geüpload, stel code_source_path in op een /Workspace/…- of /Volumes/…-pad. Azure Databricks gebruikt het pad as-is en verpakt niets.

De artefactvelden tgz :

Veld Description
type tgz maakt een gecomprimeerd tar-archief van bronbestanden, in plaats van een opdracht met build uit te voeren.
path De basismap die moet worden verpakt. include paden en de itemnamen van het archief zijn relatief daaraan.
include Een lijst met subpaden van path om te verpakken. Laat het verpakken van path volledig weg. Houdt rekening met .gitignore; de bundelbrede sync.include en sync.exclude zijn niet van toepassing. Alternatief voor een build commando.
git Maak een snapshot van een gecommitteerde Git-referentie in plaats van de werkende boom. Set git.branch of git.commit (commit wint als beide zijn gezet). Alternatief voor een build commando.
files[].source Het pad van de gegenereerde tarball. Wijs code_source_path hiernaar.

Note

AI Runtime haalt je code uit naar een map en stelt deze bloot als de CODE_SOURCE_PATH omgevingsvariabele. Referer het vanuit je commando zodat relatieve paden worden opgelost, bijvoorbeeld cd "$CODE_SOURCE_PATH" voordat je je script uitvoert.

Volledig voorbeeld

Dit voorbeeld traint op een enkele A10 GPU van een lokaal project, zonder voorafgaande CLI-instellingen behalve het installeren en configureren van de Azure Databricks CLI. Het project bestaat uit drie bestanden:

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

command.sh is het toegangspunt dat door command_pathwordt genoemd. Het gaat naar de map met de uitgepakte code en voert het trainingsscript uit:

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

databricks.yml benoemt de bundel, verpakt src/ als artefact tgz , voert het uit als een ai_runtime_task, installeert numpy in de taakomgeving en definieert ontwikkelings- en productiedoelen:

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

Implementeer de bundel en voer de taak uit. databricks bundle deploy bouwt en uploadt het tgz artefact en creëert de taak; databricks bundle run start het:

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

Bouw workflows voor meerdere taken

Een ai_runtime_task is een Azure Databricks-jobtaak, dus het werkt samen met de rest van een job. Je kunt een voorbereidingsstap uitvoeren vóór de training, GPU- en CPU-taken combineren in één taak, en per taak verschillende accelerators gebruiken.

Taken ordenen met depends_on

Gebruik depends_on om taken achtereenvolgens uit te voeren. De volgende pijplijn voert een voorbereidingsnotitieboek uit, gevolgd door een GPU-trainingstaak die pas begint nadat de voorbereidingstaak is geslaagd:

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

Combineer GPU- en CPU-taken

In de bovenstaande pipeline heeft alleen de trainingsstap een GPU nodig. Het vasthouden van niet-GPU-werk, zoals datavoorbereiding, in aparte taken houdt GPU-tijd gericht op training.

Note

An ai_runtime_task ondersteunt geen Azure Databricks taakwaarden ({{tasks.<task_key>.values.<name>}} of dbutils.jobs.taskValues). Om gegevens tussen stappen door te geven, schrijf je deze naar een gedeelde locatie die beide taken kunnen lezen, zoals een Unity Catalog-volume of een werkruimtebestand, en verwijs je naar dat pad vanuit elke taak.

Plan de werklast in

Voeg een schedule toe aan de taak om deze volgens een schema uit te voeren. Stuur het schema gepauzeerd zodat het uitrollen van de bundel niet vanzelf start, en zet het dan weer op pauze wanneer je er klaar voor bent:

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

Promoten van ontwikkeling naar productie

Promotie van ontwikkeling naar productie is een standaard bundelfunctie die de AI Runtime-taak ongewijzigd overneemt.

Doelen en modi van bundels

Definieer naast je ontwikkeldoel mode: production ook een productiedoel. Het doel bepaalt waar de bundel wordt ingezet en hoe de bronnen worden genoemd:

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

Implementeren en uitvoeren

Deploy en voer de bundel uit tegen een doel met de standaard bundelcommando's:

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

Volgende stappen