Sdílet prostřednictvím


Osvědčené postupy pro výpočetní prostředí GPU bez serveru

Tento článek obsahuje doporučení osvědčených postupů pro používání výpočetních prostředků GPU bez serveru v poznámkových blocích a úlohách.

Podle těchto doporučení zvýšíte produktivitu, nákladovou efektivitu a spolehlivost úloh v Azure Databricks.

Přesuňte kód načítání dat uvnitř dekorátoru @distributed

Velikost datové sady může překročit maximální povolenou velikost dle modulu pickle. Proto se doporučuje, aby se datová sada vygenerovala uvnitř dekorátoru, například takto:

from serverless_gpu import distributed

# this may cause pickle error
dataset = get_dataset(file_path)
@distributed(gpus=8, remote=True)
def run_train():
  # good practice
  dataset = get_dataset(file_path)
  ....

Použití správného výpočetního prostředí

  • Používejte bezserverové výpočetní prostředky GPU. Tato možnost se dodává s torchem, cuda a torchvision optimalizovaným pro kompatibilitu. Přesné verze balíčků budou záviset na verzích prostředí.
  • Na bočním panelu prostředí vyberte akcelerátor.
    • Pro úlohy vzdáleného distribuovaného trénování použijte GPU A10, což bude klient, který později odešle úlohu vzdálenému H100.
    • Pro spouštění velkých interaktivních úloh v samotném poznámkovém bloku můžete poznámkový blok připojit k H100, což vyžaduje 1 uzel (8 H100 GPU).
  • Abyste se vyhnuli zabírání GPU, můžete notebook připojit ke clusteru procesorů pro některé operace, jako je klonování z Git a převod MDS.

Doporučení MLflow

Pro optimální vývojový cyklus ML použijte MLflow 3 v Databricks. Postupujte podle těchto tipů:

  • Upgradujte MLflow ve vašem prostředí na verzi 3.0 nebo novější a postupujte podle MLflow toku pro hluboké učení v pracovním postupu hlubokého učení MLflow 3.

  • step Nastavte parametr MLFlowLogger na přiměřený počet dávek. MLflow má limit 10 milionů metrických kroků, které lze protokolovat. Viz Omezení prostředků.

  • Povolte mlflow.pytorch.autolog(), pokud se jako školitel používá Pytorch Lightning.

  • 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í parametru run_name v mlflow.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,
    )
    
  • Bezserverové rozhraní GPU API spustí experiment MLflow pro protokolování systémových metrik. Ve výchozím nastavení používá název /Users/{WORKSPACE_USER}/{get_notebook_name()}, pokud ho uživatel nepřepíše pomocí proměnné prostředí MLFLOW_EXPERIMENT_NAME.

    • Při nastavování proměnné prostředí MLFLOW_EXPERIMENT_NAME použijte absolutní cestu. Například/Users/<username>/my-experiment.
    • Název experimentu nesmí obsahovat název existující složky. Pokud je například my-experiment existující složka, uvedený příklad skončí chybou.
    import os
    from serverless_gpu import distributed
    os.environ['MLFLOW_EXPERIMENT_NAME'] = '/Users/{WORKSPACE_USER}/my_experiment'
    @distributed(gpus=num_gpus, gpu_type=gpu_type, remote=True)
    def run_train():
    # my training code
    
  • Pokud chcete pokračovat v trénování z předchozího spuštění, zadejte MLFLOW_RUN_ID z předchozího spuštění následujícím způsobem.

    import os
    os.environ[‘MLFLOW_RUN_ID’] = <previous_run_id>
    run_train.distributed()
    

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ř. pomocné moduly, environment.yaml), vytvořte složky Gitu nebo /Workspace/Repos/Workspace/Shared místo uživatelských složek, jako je /Workspace/Users/<your_email>/.
  • 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 specifický pro uživatele (a větev), ale stále používat vzdálené úložiště Git pro správu verzí. 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 Databricks

Viz Omezení prostředků.