Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit artikel vindt u aanbevelingen voor aanbevolen procedures voor het gebruik van serverloze GPU-rekenkracht in uw notebooks en taken.
Door deze aanbevelingen te volgen, verbetert u de productiviteit, kostenefficiëntie en betrouwbaarheid van uw workloads in Azure Databricks.
De juiste rekenkracht gebruiken
- Serverloze GPU-rekenkracht gebruiken. Deze optie wordt geleverd met torch, cuda en torchvision, geoptimaliseerd voor compatibiliteit. Exacte pakketversies zijn afhankelijk van de omgevingsversies.
- Selecteer uw accelerator in het zijpaneel.
- Gebruik voor externe gedistribueerde trainingsworkloads een A10 GPU. Dit is de client om later een taak naar de externe H100 te verzenden.
- Voor het uitvoeren van grote interactieve taken op het notebook zelf kunt u uw notebook koppelen aan H100, wat 1 knooppunt (8 H100 GPU's) in beslag neemt.
- Om het gebruik van GPU's te voorkomen, kunt u uw notebook koppelen aan een CPU-cluster voor sommige bewerkingen zoals git-kloon en het converteren van Spark DataFrame naar DE MDS-indeling (Mosaic Data Shard).
Aanbevelingen voor MLflow
Gebruik MLflow 3 op Databricks voor een optimale ML-ontwikkelingscyclus. Volg deze tips:
Werk de MLflow van uw omgeving bij naar versie 3.6 of hoger en volg de MLflow Deep Learning-stroom in de MLflow 3 Deep Learning-werkstroom.
Stel de
stepparameter inMLFlowLoggerop een redelijk aantal batches. MLflow heeft een limiet van 10 miljoen metrische stappen die kunnen worden vastgelegd. Zie Resourcelimieten.Schakel
mlflow.pytorch.autolog()in wanneer Pytorch Lightning als trainer wordt gebruikt.Pas de naam van de MLflow-uitvoering aan door uw modeltrainingscode binnen het
mlflow.start_run()API-bereik in te kapselen. Hiermee hebt u controle over de naam van de uitvoering en kunt u opnieuw opstarten vanaf een vorige uitvoering. U kunt de uitvoeringsnaam aanpassen met behulp van derun_nameparameter inmlflow.start_run(run_name="your-custom-name")of in bibliotheken van derden die MLflow ondersteunen (bijvoorbeeld Hugging Face Transformers). Anders isjobTaskRun-xxxxxde standaarduitvoeringsnaam.from transformers import TrainingArguments args = TrainingArguments( report_to="mlflow", run_name="llama7b-sft-lr3e5", # <-- MLflow run name logging_steps=50, )Met de serverloze GPU-API wordt een MLflow-experiment gestart om metrische systeemgegevens te registreren. Standaard wordt de naam
/Users/{WORKSPACE_USER}/{get_notebook_name()}gebruikt, tenzij de gebruiker deze overschrijft met de omgevingsvariabeleMLFLOW_EXPERIMENT_NAME.- Wanneer u de
MLFLOW_EXPERIMENT_NAMEomgevingsvariabele instelt, gebruikt u een absoluut pad. Bijvoorbeeld/Users/<username>/my-experiment. - De naam van het experiment mag niet de naam van de bestaande map bevatten. Als dit bijvoorbeeld
my-experimenteen bestaande map is, wordt in het bovenstaande voorbeeld een foutmelding weergegeven.
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- Wanneer u de
Als u de training van een vorige uitvoering wilt hervatten, geeft u de MLFLOW_RUN_ID van de vorige uitvoering als volgt op.
import os os.environ[‘MLFLOW_RUN_ID’] = <previous_run_id> run_train.distributed()
Modelcontrolepunt
Sla modelcontrolepunten op in Unity Catalog-volumes, die dezelfde governance bieden als andere Unity Catalog-objecten. Gebruik de volgende padindeling om te verwijzen naar bestanden in volumes vanuit een Databricks-notebook:
/Volumes/<catalog>/<schema>/<volume>/<path>/<file-name>
Sla controlepunten op dezelfde manier op als u ze opslaat in lokale opslag.
In het onderstaande voorbeeld ziet u hoe u een PyTorch-controlepunt schrijft naar Unity Catalog-volumes:
import torch
checkpoint = {
"epoch": epoch, # last finished epoch
"model_state_dict": model.state_dict(), # weights & buffers
"optimizer_state_dict": optimizer.state_dict(), # optimizer state
"loss": loss, # optional current loss
"metrics": {"val_acc": val_acc}, # optional metrics
# Add scheduler state, RNG state, and other metadata as needed.
}
checkpoint_path = "/Volumes/my_catalog/my_schema/model/checkpoints/ckpt-0001.pt"
torch.save(checkpoint, checkpoint_path)
Deze benadering werkt ook voor gedistribueerde controlepunten van meerdere knooppunten. In het onderstaande voorbeeld ziet u controlepunten voor gedistribueerde modellen met de Torch Distributed Checkpoint-API:
import torch.distributed.checkpoint as dcp
def save_checkpoint(self, checkpoint_path):
state_dict = self.get_state_dict(model, optimizer)
dcp.save(state_dict, checkpoint_id=checkpoint_path)
trainer.save_checkpoint("/Volumes/my_catalog/my_schema/model/checkpoints")
Samenwerking tussen meerdere gebruikers
- Om ervoor te zorgen dat alle gebruikers toegang hebben tot gedeelde code (bijvoorbeeld helpermodules, environment.yaml), maakt u git-mappen in
/Workspace/Reposof/Workspace/Sharedin plaats van gebruikersspecifieke mappen, zoals/Workspace/Users/<your_email>/. - Voor code die actief is ontwikkeld, gebruikt u Git-mappen in gebruikersspecifieke mappen
/Workspace/Users/<your_email>/en pusht u naar externe Git-opslagplaatsen. Hierdoor kunnen meerdere gebruikers een gebruikersspecifieke kloon (en vertakking) hebben, maar nog steeds een externe Git-opslagplaats gebruiken voor versiebeheer. Bekijk de aanbevolen procedures voor het gebruik van Git op Databricks. - Samenwerkers kunnen notitieblokken delen en er opmerkingen bij plaatsen .
Globale limieten in Databricks
Zie Resourcelimieten.