Freigeben über


Bewährte Methoden für serverlose GPU-Compute

Dieser Artikel enthält Empfehlungen für bewährte Methoden für die Verwendung der serverlosen GPU-Berechnung in Ihren Notizbüchern und Aufträgen.

Anhand dieser Empfehlungen verbessern Sie die Produktivität, Kosteneffizienz und Zuverlässigkeit Ihrer Workloads auf Azure Databricks.

Verwenden der richtigen Berechnung

  • Verwenden Sie serverlose GPU-Compute. Diese Option wird mit torch, cuda und torchvision optimiert für Kompatibilität geliefert. Genaue Paketversionen hängen von den Umgebungsversionen ab.
  • Wählen Sie Ihren Beschleuniger im Seitenbereich der Umgebung aus.
    • Verwenden Sie für remote verteilte Schulungsworkloads eine A10-GPU, die der Client ist, um später einen Auftrag an die Remote-H100 zu senden.
    • Zum Ausführen großer interaktiver Aufträge im Notizbuch selbst können Sie Ihr Notizbuch an H100 anfügen, was 1 Knoten (8 H100 GPUs) einnimmt.
  • Um GPUs zu vermeiden, können Sie Ihr Notizbuch an einen CPU-Cluster für einige Vorgänge wie git clone anschließen und einen Spark Dataframe in Mosaic Data Shard (MDS)-Format konvertieren.

MLflow-Empfehlungen

Verwenden Sie für einen optimalen ML-Entwicklungszyklus MLflow 3 auf Databricks. Befolgen Sie diese Tipps:

  • Aktualisieren Sie den MLflow Ihrer Umgebung auf Version 3.6 oder höher, und folgen Sie dem MLflow Deep Learning Flow im MLflow 3 Deep Learning-Workflow.

  • Stellen Sie den Parameter step in MLFlowLogger auf eine angemessene Anzahl von Batches ein. MLflow hat eine Grenze von 10 Millionen Metrikschritten, die protokolliert werden können. Sie Ressourceneinschränkungen.

  • Aktivieren Sie mlflow.pytorch.autolog(), wenn Pytorch Lightning als Trainer verwendet wird.

  • Passen Sie Ihren MLflow-Laufnamen an, indem Sie den Modellschulungscode innerhalb des mlflow.start_run() API-Bereichs einschließen. Dadurch können Sie den Namen der Ausführung steuern und einen Neustart aus einer vorherigen Ausführung ausführen. Sie können den Ausführungsnamen mithilfe des run_name Parameters in mlflow.start_run(run_name="your-custom-name") oder in Drittanbieterbibliotheken anpassen, die MLflow unterstützen (z. B. Hugging Face Transformers). Andernfalls lautet jobTaskRun-xxxxxder Standardlaufname .

    from transformers import TrainingArguments
    args = TrainingArguments(
        report_to="mlflow",
        run_name="llama7b-sft-lr3e5",  # <-- MLflow run name
        logging_steps=50,
    )
    
  • Die serverlose GPU-API startet ein MLflow-Experiment, um Systemmetriken zu protokollieren. Standardmäßig wird der Name /Users/{WORKSPACE_USER}/{get_notebook_name()} verwendet, es sei denn, der Benutzer überschreibt ihn mit der Umgebungsvariable MLFLOW_EXPERIMENT_NAME.

    • Verwenden Sie beim Festlegen der Umgebungsvariablen MLFLOW_EXPERIMENT_NAME einen absoluten Pfad. Beispiel/Users/<username>/my-experiment:
    • Der Experimentname darf nicht den vorhandenen Ordnernamen enthalten. Wenn es sich z. B. my-experiment um einen vorhandenen Ordner handelt, tritt beim obigen Beispiel ein Fehler auf.
    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
    
  • Um die Schulung aus einer vorherigen Ausführung fortzusetzen, geben Sie die MLFLOW_RUN_ID aus der vorherigen Ausführung wie folgt an.

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

Zusammenarbeit mit mehreren Benutzern

  • Um sicherzustellen, dass alle Benutzer auf freigegebenen Code zugreifen können (z. B. Hilfsmodule, Environment.yaml), erstellen Sie Git-Ordner in /Workspace/Repos oder /Workspace/Shared anstelle von benutzerspezifischen Ordnern wie /Workspace/Users/<your_email>/.
  • Verwenden Sie für Code, der sich in der aktiven Entwicklung befindet, Git-Ordner in benutzerspezifischen Ordnern /Workspace/Users/<your_email>/ und pushen Sie zu Remote-Git-Repos. Auf diese Weise können mehrere Benutzer über einen benutzerspezifischen Klon (und eine Verzweigung) verfügen, aber weiterhin ein Git-Remote-Repository für die Versionssteuerung verwenden. Schauen Sie sich bewährte Methoden für die Verwendung von Git auf Databricks an.
  • Mitarbeiter können Notizbücher freigeben und kommentieren .

Globale Grenzwerte in Databricks

Sie Ressourceneinschränkungen.