Trainingsjobs überwachen

Je nach Größe des Datasets und Komplexität des Modells kann das Training viel Zeit in Anspruch nehmen. Das Training mit realen Daten kann viele Stunden dauern. Sie können jedoch verschiedene Aspekte des Jobs während seiner Ausführung überwachen.

Jobstatus prüfen

Die einfachste Möglichkeit, den Gesamtstatus eines Jobs zu prüfen, besteht darin, in der Google Cloud Platform Console die Seite mit den Cloud ML Engine-Jobs aufzurufen. Dieselben Details können auch programmgesteuert und mit dem Befehlszeilentool gcloud abgerufen werden.

Console

  1. Öffnen Sie in der GCP Console die Seite mit den Cloud ML Engine-Jobs.

    Seite "Jobs" in der GCP Console öffnen

  2. Klicken Sie in der Liste auf den Namen des jeweiligen Jobs, um die Seite mit den Jobdetails zu öffnen.

  3. Der Jobstatus ist oben im Bericht aufgeführt. Das Symbol und der Text beschreiben den aktuellen Status des Jobs.

    Jobstatusinformationen oben auf der Seite "Jobdetails"

gcloud

Mit gcloud ml-engine jobs describe rufen Sie über die Befehlszeile Details zum aktuellen Status des Jobs ab:

gcloud ml-engine jobs describe job_name

Mit gcloud ml-engine jobs list können Sie eine Liste der zum Projekt gehörenden Jobs abrufen, die auch den Jobstatus und den Erstellungszeitpunkt enthält. Beachten Sie, dass dieser Befehl in seiner einfachsten Form alle Jobs auflistet, die für das Projekt erstellt wurden. Daher sollten Sie ein Limit in der Anfrage festlegen, um die Anzahl der zurückgegebenen Jobs zu beschränken. Die folgenden Beispiele sollten fürs Erste genügen:

Verwenden Sie das Argument --limit, um die Anzahl der Jobs zu beschränken. In diesem Beispiel werden die neuesten fünf Jobs aufgelistet:

gcloud ml-engine jobs list --limit=5

Verwenden Sie das Argument --filter, um die Liste auf Jobs mit einem bestimmten Attributwert zu beschränken. Sie können ein oder mehrere Attribute des Jobobjekts als Filter angeben. Neben dem Filtern nach grundlegenden Jobattributen besteht auch die Möglichkeit, nach Objekten innerhalb des Jobs zu filtern, zum Beispiel nach dem Objekt "TrainingInput".

Beispiele zum Filtern der Liste:

  • Alle Jobs auflisten, die nach einem bestimmten Zeitpunkt gestartet wurden. Im folgenden Beispiel wird der 15. Januar 2017, 19:00 Uhr verwendet:

    gcloud ml-engine jobs list --filter='createTime>2017-01-15T19:00'
    
  • Die letzten drei Jobs auflisten, deren Namen mit einem bestimmten String beginnen. Der String könnte beispielsweise der Name sein, den Sie für alle Trainingsjobs für ein bestimmtes Modell verwenden. Im folgenden Beispiel wird ein Modell verwendet, dessen Jobkennung "census" lautet. Sie hat als Suffix einen Index, der für jeden Job erhöht wird:

    gcloud ml-engine jobs list --filter='jobId:census*' --limit=3
    
  • Alle fehlgeschlagenen Jobs auflisten, deren Namen mit "rnn" beginnen:

    gcloud ml-engine jobs list --filter='jobId:rnn* AND state:FAILED'
    

Weitere Informationen zu den Ausdrücken, die von der Filteroption unterstützt werden, finden Sie in der Dokumentation zum Befehl gcloud.

Python

  1. Stellen Sie den Jobkennungsstring zusammen, indem Sie den Projektnamen so mit dem Jobnamen kombinieren: 'projects/your_project_name/jobs/your_job_name':

    projectName = 'your_project_name'
    projectId = 'projects/{}'.format(projectName)
    jobName = 'your_job_name'
    jobId = '{}/jobs/{}'.format(projectId, jobName)
    
  2. Erstellen Sie die an "projects.jobs.get" gehende Anfrage:

    request = ml.projects().jobs().get(name=jobId)
    
  3. Führen Sie die Anfrage aus. In diesem Beispiel wird der Aufruf execute in einem try-Block platziert, um Ausnahmen abzufangen:

    response = None
    
    try:
        response = request.execute()
    except errors.HttpError, err:
        # Something went wrong. Handle the exception in an appropriate
        #  way for your application.
    
  4. Prüfen Sie die Antwort, um zu bestätigen, dass der Dienstaufruf abgesehen von eventuellen HTTP-Fehlern Daten zurückgegeben hat.

    if response == None:
        # Treat this condition as an error as best suits your
        # application.
    
  5. Rufen Sie Statusdaten ab. Das Antwortobjekt ist ein Wörterbuch, das alle gültigen Mitglieder der Ressource Job enthält, einschließlich der vollständigen Ressource TrainingInput und der gültigen Mitglieder der Ressource TrainingOutput. Im folgenden Beispiel werden der Jobstatus und die Anzahl der vom Job verbrauchten ML-Einheiten ausgegeben.

    print('Job status for {}.{}:'.format(projectName, jobName))
    print('    state : {}'.format(response['state']))
    print('    consumedMLUnits : {}'.format(
        response['trainingOutput']['consumedMLUnits']))
    

Jobs können aufgrund von Problemen mit der Trainingsanwendung oder der Cloud ML Engine-Infrastruktur fehlschlagen. Für die Fehlerbehebung steht Stackdriver Logging zur Verfügung.

Ressourcenverbrauch überwachen

Auf der Seite Jobdetails finden Sie Diagramme zur zusammengefassten CPU- und Speicherauslastung des Jobs:

  1. Gehen Sie in der GCP Console zur Seite mit den Cloud ML Engine-Jobs.

    Zur Seite "Cloud ML Engine-Jobs"

  2. Suchen Sie den Job in der Liste.

  3. Klicken Sie auf den Jobnamen, um die Seite "Jobdetails" zu öffnen.

  4. Scrollen Sie nach unten, um die Ressourcenauslastungsdiagramme anzuzeigen.

    CPU- und Speicherauslastungsdiagramme auf der Cloud ML Engine-Seite "Jobdetails"

Mit Stackdriver Monitoring können Sie detailliertere Informationen zu den Onlineressourcen abrufen, die von Ihren Trainingsjobs genutzt werden. Cloud ML Engine exportiert zwei Messwerte in Stackdriver:

  • ml/training/memory/utilization zeigt den gerade verwendeten Anteil des zugeteilten Speichers an.

  • ml/training/cpu/utilization zeigt den gerade verwendeten Anteil der zugeteilten CPU an.

Mit diesen Messwerten können Sie die CPU- und Speicherauslastung für jede Aufgabe (Worker, Parameterserver und Master) in einem Job einsehen.

.

Mit TensorBoard überwachen

Die Trainingsanwendung lässt sich so konfigurieren, dass Übersichtsdaten gespeichert werden, die Sie dann mit TensorBoard untersuchen und visualisieren können.

Speichern Sie die Übersichtsdaten an einem Cloud Storage-Speicherort und fügen Sie in TensorBoard einen Verweis auf diesen Speicherort ein, um die Daten zu untersuchen. Sie können in TensorBoard auf ein Verzeichnis mit Unterverzeichnissen verweisen, das die Ausgaben mehrerer Jobs enthält.

Weitere Informationen zu TensorBoard und Cloud ML Engine finden Sie im Startleitfaden.

Weitere Informationen

Hat Ihnen diese Seite weitergeholfen? Teilen Sie uns Ihr Feedback mit:

Feedback geben zu...

AI Platform für TensorFlow