Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
I den här artikeln får du rekommendationer om bästa praxis för att använda serverlös GPU-beräkning i dina notebook-filer och jobb.
Genom att följa dessa rekommendationer förbättrar du produktiviteten, kostnadseffektiviteten och tillförlitligheten för dina arbetsbelastningar i Azure Databricks.
Använda rätt beräkning
- Använd serverlös GPU-beräkning. Det här alternativet levereras med torch, cuda och torchvision optimerade för kompatibilitet. Exakta paketversioner beror på miljöversionerna.
- Välj din accelerator i miljösidans panel.
- För fjärrfördelade träningsarbetsbelastningar använder du en A10 GPU, som är klienten för att skicka ett jobb till fjärr-H100 senare.
- För att köra omfattande interaktiva jobb direkt på notebook kan du koppla den till H100, vilket upptar en nod (8 H100-GPU:er).
- För att undvika att ta upp GPU:er kan du koppla din notebook till ett CPU-kluster för åtgärder som git-kloning och konvertering av Spark Dataframe till MDS-format (Mosaic Data Shard).
MLflow-rekommendationer
För en optimal ML-utvecklingscykel använder du MLflow 3 på Databricks. Följ dessa tips:
Uppgradera miljöns MLflow till version 3.6 eller senare och följ MLflows djupinlärningsflöde i MLflow 3-arbetsflödet för djupinlärning.
Ange parametern
stepiMLFlowLoggertill ett rimligt antal batchar. MLflow har en gräns på 10 miljoner måttsteg som kan loggas. Se Resursbegränsningar.Aktivera
mlflow.pytorch.autolog()om Pytorch Lightning används som tränare.Anpassa MLflow-körningsnamnet genom att kapsla in din modellträningskod inom API-omfånget
mlflow.start_run(). Detta ger dig kontroll över körningsnamnet och gör att du kan starta om från en tidigare körning. Du kan anpassa körningsnamnet med hjälp av parameternrun_nameimlflow.start_run(run_name="your-custom-name")eller i bibliotek från tredje part som stöder MLflow (till exempel Hugging Face Transformers). Annars är standardkörningsnamnetjobTaskRun-xxxxx.from transformers import TrainingArguments args = TrainingArguments( report_to="mlflow", run_name="llama7b-sft-lr3e5", # <-- MLflow run name logging_steps=50, )Det serverlösa GPU-API:et startar ett MLflow-experiment för att logga systemmått. Som standard använder den namnet
/Users/{WORKSPACE_USER}/{get_notebook_name()}såvida inte användaren skriver över det med miljövariabelnMLFLOW_EXPERIMENT_NAME.- När du ställer in
MLFLOW_EXPERIMENT_NAMEmiljövariabeln använder du en absolut sökväg. Till exempel/Users/<username>/my-experiment. - Experimentnamnet får inte innehålla det befintliga mappnamnet. Om till exempel
my-experimentär en befintlig mapp kommer det att generera ett fel.
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- När du ställer in
Om du vill återuppta träningen från en tidigare körning anger du MLFLOW_RUN_ID från föregående körning enligt följande.
import os os.environ[‘MLFLOW_RUN_ID’] = <previous_run_id> run_train.distributed()
Samarbete för flera användare
- För att säkerställa att alla användare kan komma åt delad kod (t.ex. hjälpmoduler, environment.yaml), skapar du git-mappar i eller
/Workspace/Reposi/Workspace/Sharedstället för användarspecifika mappar som/Workspace/Users/<your_email>/. - För kod som är i aktiv utveckling använder du Git-mappar i användarspecifika mappar
/Workspace/Users/<your_email>/och push-överför till fjärranslutna Git-lagringsplatser. Detta gör att flera användare kan ha en användarspecifik klon (och gren) men ändå använda en fjärransluten Git-lagringsplats för versionskontroll. Se metodtips för att använda Git på Databricks. - Medarbetare kan dela och kommentera anteckningsböcker.
Läs in data i dekoratören @distributed
När du använder det serverlösa GPU-API: et för distribuerad träning flyttar du datainläsningskoden i @distributed dekoratören. Datamängdens storlek kan överskrida den maximala storlek som tillåts av pickle, så vi rekommenderar att du genererar datamängden inuti dekoratören enligt nedan:
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)
....