Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Důležité
Modul runtime AI pro úlohy s jedním uzlem je ve verzi Public Preview. Distribuované trénovací rozhraní API pro úlohy s více GPU zůstává v beta verzi.
AI Runtime se nativně integruje s MLflow pro sledování experimentů a zahrnuje integrované podokno prostředků GPU pro monitorování využití, paměti a teploty. Pomocí MLflow můžete protokolovat metriky a spuštění, zobrazit výstup trénování v poznámkovém bloku a uživatelském rozhraní MLflow, uložit kontrolní body modelu do svazků katalogu Unity a sledovat stav GPU při spuštění kódu.
Integrace MLflow
AI Runtime se nativně integruje s MLflow pro sledování experimentů, protokolování modelů a vizualizaci metrik.
Doporučení k nastavení:
Upgradujte MLflow na verzi 3.7 nebo novější a postupujte podle vzorů pracovních postupů hlubokého učení.
Povolení automatického přihlašování pro PyTorch Lightning:
import mlflow mlflow.pytorch.autolog()Přizpůsobte si název spuštění MLflow zapouzdřením trénovacího kódu modelu ve
mlflow.start_run()rámci rozhraní API. Tím získáte kontrolu nad názvem spuštění a umožníte restartování z předchozího spuštění. Název spuštění můžete přizpůsobit pomocí parametrurun_namevmlflow.start_run(run_name="your-custom-name")knihovnách třetích stran, které podporují MLflow (například Hugging Face Transformers). V opačném případě je výchozí název spuštěníjobTaskRun-xxxxx.from transformers import TrainingArguments args = TrainingArguments( report_to="mlflow", run_name="llama7b-sft-lr3e5", # <-- MLflow run name logging_steps=50, )Při použití bezserverového GPU API každé volání
.distributed()automaticky vytvoří běh experimentu v MLflow. Pokud je volána v rámci aktivního běhu MLflow, místo toho se v rámci aktivního nadřazeného běhu vytvoří vnořený podřízený běh.import mlflow with mlflow.start_run() as outer_run: ... run_train.distributed() # creates a nested child run under outer_runChcete-li přizpůsobit experiment používaný funkcí
.distributed(), zavolejtemlflow.set_experiment()před voláním.distributed()nebo nastavte proměnnou prostředíMLFLOW_EXPERIMENT_NAME. Výchozí název experimentu je/Users/{WORKSPACE_USER}/{notebook-name}. Vždy používejte absolutní cesty.import mlflow mlflow.set_experiment("/Users/<username>/my-experiment") run_train.distributed()Alternatively:
import os os.environ["MLFLOW_EXPERIMENT_NAME"] = "/Users/<username>/my-experiment"Pokud chcete obnovit předchozí spuštění MLflow, použijte
mlflow.start_run(run_id="<previous-run-id>").Chcete-li obnovit předchozí běh MLflow pomocí
.distributed(), nastavte před jeho zavolánímMLFLOW_RUN_ID:os.environ["MLFLOW_RUN_ID"] = "<previous-run-id>" run_train.distributed()Nastavte parametr
stepvMLFlowLoggerna přiměřené hodnoty dávkového zpracování. MLflow má limit 10 milionů kroků metrik, takže zaznamenávání každé jednotlivé dávky u rozsáhlých trénovacích běhů může na tento limit narazit. Viz Omezení prostředků.
Zobrazení protokolů
- Výstup notebooku: Standardní výstup a chybový výstup z vašeho trénovacího kódu se zobrazují ve výstupu buňky notebooku.
- Protokoly MLflow: Uživatelské rozhraní experimentu MLflow zobrazuje metriky trénování, parametry a artefakty.
Vytváření kontrolních bodů modelu
Pro distribuované trénování uložte a načtěte kontrolní body modelu asynchronně do svazků katalogu Unity, které poskytují stejné zásady správného řízení jako ostatní objekty katalogu Unity. Použijte UCVolumeWriter a UCVolumeReader z balíčku serverless_gpu.data s rozhraním API Torch Distributed Checkpoint (DCP). Tyto úložné backendy zpracovávají všechny vstupně-výstupní operace přes rychlý místní adresář (/tmp, který je na bezserverových GPU uzlech podložený technologií NVMe), a data pak nahrávají do svazku Unity Catalog nebo z něj stahují, což je rychlejší než zapisovat fragmenty checkpointů přímo do připojeného svazku FUSE. Atomičnost metadat je zachována: zapisující proces publikuje soubor .metadata až po dokončení nahrávání jeho datových shardů.
Note
UCVolumeWriter, UCVolumeReader a UCVolumeDataset vyžadují prostředí GPU verze 5 nebo vyšší (bezserverové rozhraní GPU Python API 0.5.16+).
Kontrolní bod často stačí k omezení ztráty práce po přerušení, ale ne tak často, že režie vstupně-výstupních operací zpomaluje trénování. Snažte se o jeden kontrolní bod každých 30 minut až hodinu a vylaďte interval podle času kroku a velikosti kontrolního bodu.
Chcete-li na pozadí nahrávat checkpointy, zatímco trénink pokračuje, předejte UCVolumeWriter jako parametr storage_writer pro dcp.async_save. Asynchronní ukládání vyžaduje back-end procesoru ve skupině procesů, takže ho inicializujte takto torch.distributed.init_process_group(backend="cpu:gloo,cuda:nccl", ...):
import torch.distributed.checkpoint as dcp
from serverless_gpu.data import UCVolumeWriter
checkpoint_path = "/Volumes/my_catalog/my_schema/model/checkpoints"
writer = UCVolumeWriter(checkpoint_path)
future = dcp.async_save(state_dict, storage_writer=writer)
# ...continue training...
future.result() # blocks until the upload lands on the UC volume
Načtení kontrolního bodu pomocí UCVolumeReader:
from serverless_gpu.data import UCVolumeReader
reader = UCVolumeReader(checkpoint_path)
dcp.load(state_dict, storage_reader=reader)
Vytváření kontrolních bodů datového kanálu
Kontrolní bod modelu zachycuje stav modelu a optimalizátoru, ale ne pozici datového kanálu v datové sadě, takže obnovené spuštění nemůže rychle přejít na přesnou ukázku, kde se zastavila. Počítejte s tím při obnovování: restartujte na hranici epochy, nebo si ve vlastním stavu trénování sledujte zpracované vzorky či shardy, abyste je při obnovení mohli přeskočit.
Monitorujte prostředky GPU
Pomocí podokna prostředků GPU můžete monitorovat stav a využití GPU během spouštění kódu v prostředí AI Runtime. Panel podporuje jednouzlové i víceuzlové úlohy.
Pokud chcete podokno otevřít, připojte notebook k AI Runtime a potom v pravém podokně klikněte na Prostředky GPU
V podokně se zobrazí následující metriky pro každý GPU:
- Procento využití GPU
- Využití paměti GPU
- Teplota
Panel načítá metriky každých 10 sekund a uchovává až 2 hodiny historických dat. Klikněte na Aktualizovat, aby se okamžitě načetly nejnovější hodnoty. Po 5 minutách nečinnosti se podokno pozastaví; znovu ho otevřete, abyste mohli pokračovat v monitorování.
Spolupráce s více uživateli
- Pokud chcete zajistit, aby všichni uživatelé měli přístup ke sdílenému kódu (například k pomocným modulům nebo souborům YAML prostředí), uložte je
/Workspace/Sharedmísto složek specifických pro uživatele, jako/Workspace/Users/<your_email>/je . - Pro kód, který je v aktivním vývoji, použijte uživatelské složky Gitu
/Workspace/Users/<your_email>/a přeneste je do vzdálených úložišť Git. To umožňuje více uživatelům mít klon a větev specifickou pro uživatele, zatímco pro správu verzí stále používá vzdálené úložiště Git. Podívejte se na osvědčené postupy pro používání Gitu v Databricks. - Spolupracovníci můžou poznámkové bloky sdílet a komentovat .
Globální limity v Azure Databricks
Viz Omezení prostředků.