Wählen Sie Ihre Cookie-Einstellungen aus

Wir verwenden essentielle Cookies und ähnliche Tools, die für die Bereitstellung unserer Website und Services erforderlich sind. Wir verwenden Performance-Cookies, um anonyme Statistiken zu sammeln, damit wir verstehen können, wie Kunden unsere Website nutzen, und Verbesserungen vornehmen können. Essentielle Cookies können nicht deaktiviert werden, aber Sie können auf „Anpassen“ oder „Ablehnen“ klicken, um Performance-Cookies abzulehnen.

Wenn Sie damit einverstanden sind, verwenden AWS und zugelassene Drittanbieter auch Cookies, um nützliche Features der Website bereitzustellen, Ihre Präferenzen zu speichern und relevante Inhalte, einschließlich relevanter Werbung, anzuzeigen. Um alle nicht notwendigen Cookies zu akzeptieren oder abzulehnen, klicken Sie auf „Akzeptieren“ oder „Ablehnen“. Um detailliertere Entscheidungen zu treffen, klicken Sie auf „Anpassen“.

Bereiten Sie einen Trainingsjob mit SageMaker Profiler vor und führen Sie ihn durch

Fokusmodus
Bereiten Sie einen Trainingsjob mit SageMaker Profiler vor und führen Sie ihn durch - Amazon SageMaker KI

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Die Einrichtung zur Ausführung eines Trainingsjobs mit dem SageMaker Profiler besteht aus zwei Schritten: der Anpassung des Trainingsskripts und der Konfiguration des SageMaker Trainingsjob-Launchers.

Schritt 1: Passen Sie Ihr Trainingsskript mit den SageMaker Profiler-Python-Modulen an

Um mit der Erfassung von Kernelläufen zu beginnen, GPUs während der Trainingsjob ausgeführt wird, ändern Sie Ihr Trainingsskript mithilfe der SageMaker Profiler-Python-Module. Importieren Sie die Bibliothek und fügen Sie die Methoden start_profiling() und stop_profiling() hinzu, um den Anfang und das Ende der Profilerstellung zu definieren. Sie können Markierungen im Trainingsskript auch mit Hilfe optionaler benutzerdefinierter Anmerkungen hinzufügen, um die Hardwareaktivitäten während bestimmter Operationen in jedem Schritt zu visualisieren.

Beachten Sie, dass die Annotatoren Operationen aus extrahieren. GPUs Für die Profilierung von CPUs Vorgängen in müssen Sie keine zusätzlichen Anmerkungen hinzufügen. Die CPU-Profilerstellung wird auch aktiviert, wenn Sie die Profilkonfiguration angeben. Dies werden Sie in Schritt 2: Erstellen Sie einen SageMaker KI-Framework-Estimator und aktivieren Sie Profiler SageMaker üben.

Anmerkung

Die Erstellung eines Profils für einen ganzen Trainingsauftrag ist nicht die effizienteste Form der Ressourcennutzung. Wir empfehlen, Profile mit höchstens 300 Schritten eines Trainingsauftrags zu erstellen.

Wichtig

Die Veröffentlichung am 14. Dezember 2023 beinhaltet eine bahnbrechende Änderung. Der Name des SageMaker Profiler-Python-Pakets wurde von smppy in smprof geändert. Dies ist in den SageMaker AI Framework-Containern für TensorFlow v2.12 und höher wirksam.

Wenn Sie eine der früheren Versionen der SageMaker AI Framework Containers wie TensorFlow v2.11.0 verwenden, ist das SageMaker Profiler-Python-Paket weiterhin als verfügbar. smppy Wenn Sie sich nicht sicher sind, welche Version oder welchen Paketnamen Sie verwenden sollten, ersetzen Sie die Importanweisung des SageMaker Profiler-Pakets durch den folgenden Codeausschnitt.

try: import smprof except ImportError: # backward-compatability for TF 2.11 and PT 1.13.1 images import smppy as smprof

Ansatz 1. Verwenden Sie den Kontext-Managersmprof.annotate, um vollständige Funktionen zu kommentieren

Sie können alle Funktionen mit dem Kontext-Manager abwickeln. smprof.annotate() Dieser Wrapper wird empfohlen, wenn Sie ein Profil nach Funktionen statt nach Codezeilen erstellen möchten. Das folgende Beispielskript zeigt, wie der Kontext-Manager so implementiert wird, dass er bei jeder Iteration das Trainingsschleife und ganze Funktionen umschließt.

import smprof SMProf = smprof.SMProfiler.instance() config = smprof.Config() config.profiler = { "EnableCuda": "1", } SMProf.configure(config) SMProf.start_profiling() for epoch in range(args.epochs): if world_size > 1: sampler.set_epoch(epoch) tstart = time.perf_counter() for i, data in enumerate(trainloader, 0): with smprof.annotate("step_"+str(i)): inputs, labels = data inputs = inputs.to("cuda", non_blocking=True) labels = labels.to("cuda", non_blocking=True) optimizer.zero_grad() with smprof.annotate("Forward"): outputs = net(inputs) with smprof.annotate("Loss"): loss = criterion(outputs, labels) with smprof.annotate("Backward"): loss.backward() with smprof.annotate("Optimizer"): optimizer.step() SMProf.stop_profiling()

Ansatz 2. Kommentieren Sie mit smprof.annotation_begin() und smprof.annotation_end() bestimmte Codezeilen in Funktionen

Sie können auch Anmerkungen definieren, um bestimmte Codezeilen zu profilieren. Sie können den genauen Anfangs- und Endpunkt der Profilerstellung auf der Ebene einzelner Codezeilen festlegen, nicht nach Funktionen. Im folgenden Skript wird z. B. der step_annotator zu Beginn jeder Iteration definiert und endet am Ende der Iteration. In der Zwischenzeit werden für jede Operation weitere detaillierte Kommentatoren definiert, die die Zieloperationen während jeder Iteration umschließen.

import smprof SMProf = smprof.SMProfiler.instance() config = smprof.Config() config.profiler = { "EnableCuda": "1", } SMProf.configure(config) SMProf.start_profiling() for epoch in range(args.epochs): if world_size > 1: sampler.set_epoch(epoch) tstart = time.perf_counter() for i, data in enumerate(trainloader, 0): step_annotator = smprof.annotation_begin("step_" + str(i)) inputs, labels = data inputs = inputs.to("cuda", non_blocking=True) labels = labels.to("cuda", non_blocking=True) optimizer.zero_grad() forward_annotator = smprof.annotation_begin("Forward") outputs = net(inputs) smprof.annotation_end(forward_annotator) loss_annotator = smprof.annotation_begin("Loss") loss = criterion(outputs, labels) smprof.annotation_end(loss_annotator) backward_annotator = smprof.annotation_begin("Backward") loss.backward() smprof.annotation_end(backward_annotator) optimizer_annotator = smprof.annotation_begin("Optimizer") optimizer.step() smprof.annotation_end(optimizer_annotator) smprof.annotation_end(step_annotator) SMProf.stop_profiling()

Nachdem Sie die Profiler-Initiierungsmodule mit Anmerkungen versehen und eingerichtet haben, speichern Sie das Skript, um es im folgenden Schritt 2 mit einem SageMaker Trainingsjob-Launcher einzureichen. Der Beispiel-Launcher geht davon aus, dass das Trainingsskript train_with_profiler_demo.py heißt.

Schritt 2: Erstellen Sie einen SageMaker KI-Framework-Estimator und aktivieren Sie Profiler SageMaker

Das folgende Verfahren zeigt, wie Sie einen SageMaker KI-Framework-Estimator für das Training mit dem SageMaker Python-SDK vorbereiten.

  1. Richten Sie mithilfe der Module ProfilerConfig und Profiler wie folgt ein profiler_config Objekt ein.

    from sagemaker import ProfilerConfig, Profiler profiler_config = ProfilerConfig( profile_params = Profiler(cpu_profiling_duration=3600) )

    Im Folgenden finden Sie die Beschreibung des Profiler Moduls und seines Arguments.

    • Profiler: Das Modul zur Aktivierung von SageMaker Profiler mit dem Trainingsjob.

      • cpu_profiling_duration(int): Geben Sie die Zeitdauer in Sekunden für die Aktivierung der Profilerstellung an. CPUs Der Standardwert beträgt 3600 Sekunden.

  2. Erstellen Sie einen SageMaker KI-Framework-Estimator mit dem im vorherigen Schritt erstellten profiler_config Objekt. Der folgende Code zeigt ein Beispiel für die Erstellung eines PyTorch Schätzers. Wenn Sie einen TensorFlow Schätzer erstellen möchten, importieren Sie ihn sagemaker.tensorflow.TensorFlow stattdessen und geben Sie eine der von Profiler unterstützten TensorFlowVersionen an. SageMaker Weitere Informationen zu den unterstützten Frameworks und Instance-Typen finden Sie unter SageMaker Mit Profiler vorinstallierte AI-Framework-Images SageMaker .

    import sagemaker from sagemaker.pytorch import PyTorch estimator = PyTorch( framework_version="2.0.0", role=sagemaker.get_execution_role(), entry_point="train_with_profiler_demo.py", # your training job entry point source_dir=source_dir, # source directory for your training script output_path=output_path, base_job_name="sagemaker-profiler-demo", hyperparameters=hyperparameters, # if any instance_count=1, # Recommended to test with < 8 instance_type=ml.p4d.24xlarge, profiler_config=profiler_config )
  3. Starten Sie den Trainingsauftrag, indem Sie die Methode fit ausführen. Mit wait=False können Sie die Protokolle der Trainingsaufträge stummschalten, so dass sie im Hintergrund laufen.

    estimator.fit(wait=False)

Während der Ausführung des Trainingsauftrags oder nach dessen Abschluss können Sie unter Öffnen Sie die SageMaker Profiler-UI-Anwendung mit dem nächsten Thema fortfahren und damit beginnen, die gespeicherten Profile zu erkunden und zu visualisieren.

Wenn Sie direkt auf die im Amazon-S3-Bucket gespeicherten Profildaten zugreifen möchten, verwenden Sie das folgende Skript, um die S3-URI abzurufen.

import os # This is an ad-hoc function to get the S3 URI # to where the profile output data is saved def get_detailed_profiler_output_uri(estimator): config_name = None for processing in estimator.profiler_rule_configs: params = processing.get("RuleParameters", dict()) rule = config_name = params.get("rule_to_invoke", "") if rule == "DetailedProfilerProcessing": config_name = processing.get("RuleConfigurationName") break return os.path.join( estimator.output_path, estimator.latest_training_job.name, "rule-output", config_name, ) print( f"Profiler output S3 bucket: ", get_detailed_profiler_output_uri(estimator) )

(Optional) Installieren Sie das SageMaker Profiler-Python-Paket

Um SageMaker Profiler auf PyTorch TensorFlow Framework-Images zu verwenden, die nicht in der Liste aufgeführt sindSageMaker Mit Profiler vorinstallierte AI-Framework-Images SageMaker , oder auf Ihrem eigenen benutzerdefinierten Docker-Container für Schulungen, können Sie SageMaker Profiler mithilfe eines der installieren. SageMaker Binärdateien für das Profiler-Python-Paket

Option 1: Installieren Sie das SageMaker Profiler-Paket, während Sie einen Schulungsjob starten

Wenn Sie SageMaker Profiler für Trainingsaufgaben mit PyTorch oder TensorFlow Bildern verwenden möchten, die nicht in aufgeführt sindSageMaker Mit Profiler vorinstallierte AI-Framework-Images SageMaker , erstellen Sie eine requirements.txt Datei und suchen Sie sie unter dem Pfad, den Sie zu dem source_dir Parameter des SageMaker KI-Framework-Estimators in Schritt 2 angegeben haben. Weitere Informationen zum Einrichten einer requirements.txt Datei im Allgemeinen finden Sie unter Verwenden von Bibliotheken von Drittanbietern in der SageMaker Python SDK-Dokumentation. Fügen Sie in der requirements.txt Datei einen der S3-Bucket-Pfade für den hinzuSageMaker Binärdateien für das Profiler-Python-Paket.

# requirements.txt https://smppy.s3.amazonaws.com/tensorflow/cu112/smprof-0.3.332-cp39-cp39-linux_x86_64.whl

Option 2: Installieren Sie das SageMaker Profiler-Paket in Ihren benutzerdefinierten Docker-Containern

Wenn Sie einen benutzerdefinierten Docker-Container für das Training verwenden, fügen Sie einen davon SageMaker Binärdateien für das Profiler-Python-Paket zu Ihrem Dockerfile hinzu.

# Install the smprof package version compatible with your CUDA version RUN pip install https://smppy.s3.amazonaws.com/tensorflow/cu112/smprof-0.3.332-cp39-cp39-linux_x86_64.whl

Anleitungen zum Ausführen eines benutzerdefinierten Docker-Containers für SageMaker KI-Schulungen im Allgemeinen finden Sie unter Anpassung Ihres eigenen Trainingscontainers.

DatenschutzNutzungsbedingungen für die WebsiteCookie-Einstellungen
© 2025, Amazon Web Services, Inc. oder Tochtergesellschaften. Alle Rechte vorbehalten.