Python-Clientbibliothek verwenden

In dieser Anleitung wird beschrieben, wie Sie mit der Google APIs-Clientbibliothek für Python die REST APIs von AI Platform in Ihren Python-Anwendungen aufrufen. Die Code-Snippets und -beispiele in dieser Dokumentation verwenden diese Python-Clientbibliothek.

In dieser Anleitung erstellen Sie ein Modell in Ihrem Google Cloud Platform-Projekt. Es handelt sich dabei um eine einfache Aufgabe, die problemlos anhand eines kleinen Beispiels ausgeführt werden kann.

Ziele

In dieser grundlegenden Anleitung werden Sie mit jener Python-Clientbibliothek vertraut gemacht. Wenn Sie diese Anleitung abgeschlossen haben, sollten Sie Folgendes können:

  • Abrufen einer Python-Repräsentation der AI Platform-Dienste
  • Erstellen eines Modells mit dieser Repräsentation im Projekt, sodass Sie in der Lage sind, die anderen Modell- und Jobverwaltungs-APIs aufzurufen

Kosten

Für die Vorgänge in dieser Anleitung werden keine Gebühren berechnet. Weitere Informationen finden Sie auf der Preisseite.

Vorbereitung

GCP-Projekt einrichten

  1. Melden Sie sich in Ihrem Google-Konto an.

    Wenn Sie noch kein Konto haben, registrieren Sie sich hier für ein neues Konto.

  2. Wählen Sie ein Google Cloud Platform-Projekt aus oder erstellen Sie eines.

    Zur Seite "Ressourcen verwalten"

  3. Prüfen Sie, ob die Abrechnung für Ihr Google Cloud Platform-Projekt aktiviert ist.

    Informationen zum Aktivieren der Abrechnung

  4. Aktivieren Sie die AI Platform ("Cloud Machine Learning Engine") and Compute Engine erforderlichen APIs.

    Aktivieren Sie die APIs.

  5. Installieren und initialisieren Sie das Cloud SDK.

Authentifizierung einrichten

Sie müssen einen Dienstkontoschlüssel erstellen und eine bestimmte Umgebungsvariable für den Dateipfad zum Dienstkontoschlüssel festlegen, um die Authentifizierung einzurichten.

  1. Erstellen Sie einen Dienstkontoschlüssel für die Authentifizierung:
    1. Wechseln Sie in der GCP Console zur Seite Dienstkontoschlüssel erstellen.

      Zur Seite "Dienstkontoschlüssel erstellen"
    2. Wählen Sie aus der Drop-down-Liste Dienstkonto die Option Neues Dienstkonto aus.
    3. Geben Sie im Feld Dienstkontoname einen Namen ein.
    4. Wählen Sie aus der Drop-down-Liste Rolle die Optionen Machine Learning Engine > ML Engine-Administrator und Storage > Storage-Objekt-Administrator aus.

      Hinweis: Über das Feld Rolle wird Ihr Dienstkonto für den Zugriff auf Ressourcen autorisiert. Sie können dieses Feld später in der GCP Console ansehen und ändern. Wenn Sie eine Produktionsanwendung entwickeln, müssen Sie möglicherweise detailliertere Berechtigungen als Machine Learning Engine > ML Engine-Administrator und Storage > Storage-Objekt-Administrator angeben. Weitere Informationen finden Sie unter Zugriffssteuerung für AI Platform.
    5. Klicken Sie auf Erstellen. Eine JSON-Datei mit Ihrem Schlüssel wird auf Ihren Computer heruntergeladen.
  2. Legen Sie die Umgebungsvariable GOOGLE_APPLICATION_CREDENTIALS auf den Pfad der JSON-Datei fest, die Ihren Dienstkontoschlüssel enthält. Diese Variable gilt nur für Ihre aktuelle Shell-Sitzung. Wenn Sie eine neue Sitzung öffnen, müssen Sie die Variable noch einmal festlegen.

Python-Entwicklungsumgebung einrichten

Wählen Sie eine der folgenden Optionen aus, um Ihre Umgebung lokal auf macOS oder in einer Remoteumgebung in Cloud Shell einzurichten.

Nutzern von macOS wird empfohlen, ihre Umgebung mit dem Tab MACOS einzurichten. Cloud Shell ist unter macOS, Linux und Windows auf dem Tab CLOUD SHELL verfügbar. Sie bietet eine schnelle Möglichkeit für den Test der AI Platform, eignet sich jedoch nicht für fortlaufende Entwicklungsarbeiten.

macOS

  1. Python-Installation überprüfen
    Prüfen Sie, ob Python installiert ist, und installieren Sie es gegebenenfalls.

    python -V
  2. pip-Installation überprüfen
    pip ist der Paketmanager von Python, der in aktuellen Versionen von Python enthalten ist. Mit pip --version können Sie prüfen, ob pip bereits installiert ist. Ist dies nicht der Fall, lesen Sie die Anleitung zum Installieren von pip.

    Mit dem folgenden Befehl können Sie ein Upgrade von pip ausführen:

    pip install -U pip

    Weitere Informationen finden Sie in der Dokumentation zu pip.

  3. virtualenv installieren
    virtualenv ist ein Tool, mit dem sich isolierte Python-Umgebungen erstellen lassen. Überprüfen Sie mit virtualenv --version, ob virtualenv bereits installiert ist. Wenn nicht, installieren Sie virtualenv:

    pip install --user --upgrade virtualenv

    Zur Einrichtung einer isolierten Entwicklungsumgebung für diese Anleitung erstellen Sie in virtualenv eine neue virtuelle Umgebung. Mit dem folgenden Befehl wird beispielsweise eine Umgebung mit dem Namen cmle-env aktiviert:

    virtualenv cmle-env
    source cmle-env/bin/activate
  4. Führen Sie für diese Anleitung die übrigen Befehle in Ihrer virtuellen Umgebung aus.

    Hier finden Sie weitere Informationen zur Verwendung von virtualenv. Führen Sie deactivate zum Beenden von virtualenv aus.

Cloud Shell

  1. Öffnen Sie die Google Cloud Platform Console.

    Zur Google Cloud Platform Console

  2. Klicken Sie im oberen Fensterbereich der Console auf Cloud Shell aktivieren.

    Google Cloud Shell aktivieren

    In einem neuen Frame im unteren Teil der Console wird eine Cloud Shell-Sitzung geöffnet und darin eine Eingabeaufforderung angezeigt. Die Initialisierung der Shell-Sitzung kann einige Sekunden dauern.

    Cloud Shell-Sitzung

    Die Cloud Shell-Sitzung kann jetzt verwendet werden.

  3. Konfigurieren Sie das Befehlszeilentool gcloud für die Verwendung Ihres ausgewählten Projekts:

    gcloud config set project [selected-project-id]

    Dabei ist [selected-project-id] die Projekt-ID. Geben Sie diese ohne die Klammern ein.

Google APIs-Clientbibliothek für Python installieren

Installieren Sie die Google APIs-Clientbibliothek für Python.

In dieser grundlegenden Anleitung werden Sie mit jener Python-Clientbibliothek vertraut gemacht. Wenn Sie diese Anleitung abgeschlossen haben, sollten Sie Folgendes können:

  • Abrufen einer Python-Repräsentation der AI Platform-Dienste
  • Erstellen eines Modells mit dieser Repräsentation im Projekt, sodass Sie in der Lage sind, die anderen Modell- und Jobverwaltungs-APIs aufzurufen
Für die Vorgänge in dieser Anleitung werden keine Gebühren berechnet. Weitere Informationen finden Sie in der Preisübersicht.

Erforderliche Module importieren

Wenn Sie mit der Google APIs-Clientbibliothek für Python die REST APIs von AI Platform in Ihren Python-Anwendungen aufrufen möchten, müssen Sie deren Paket und das OAuth2-Paket importieren. Für diese Anleitung (und für die meisten Standardanwendungsfälle der AI Platform) müssen Sie nur bestimmte Module importieren:

Informationen zu den anderen verfügbaren Modulen finden Sie in der Dokumentation zum jeweiligen Paket.

Erstellen Sie mit Ihrem bevorzugten Editor eine neue Python-Datei und fügen Sie diese Zeilen hinzu:

from oauth2client.client import GoogleCredentials
from googleapiclient import discovery
from googleapiclient import errors

Python-Darstellung der API erstellen

Erstellen Sie Ihre Python-Darstellung der REST API. Dazu rufen Sie die Methode build auf, da die API-Clientbibliothek mithilfe der Diensterkennung dynamisch Verbindungen mit den Diensten einrichtet, wenn diese beim Aufruf vorhanden sind. Rufen Sie das Objekt auf, das die ml-Dienste einschließt:

ml = discovery.build('ml','v1')

Parameter und Anfragetext konfigurieren

Die Parameter und der Anfragetext, die an die REST API übergeben werden, müssen erstellt werden, um einen Aufruf für einen Dienst durchzuführen. Die Parameter werden als reguläre Python-Parameter an die Methode übergeben, mit welcher der Aufruf durchgeführt wird. Der Text stellt eine JSON-Ressource wie beim direkten Aufruf der API mit einer HTTP-Anfrage dar.

Werfen Sie einen Blick auf die REST API für die Erstellung eines Modells im neuen Browsertab, projects.models.create:

  • Beachten Sie den Pfadparameter parent. Dieser ist Teil des URI der Anfrage, der das Projekt identifiziert. Wenn Sie die HTTP-POST-Anfrage direkt ausführen, verwenden Sie den folgenden URI:

    https://ml.googleapis.com/v1/projects/your_project_ID/models
    

    Bei Verwendung der API-Clientbibliothek ist der variable Teil des URI ein Stringparameter für den API-Aufruf. Sie legen für diesen 'projects/<var>your_project_ID</var>' fest. Speichern Sie Ihr Projekt in einer Variable, um API-Aufrufe übersichtlicher zu machen:

    project_id = 'projects/{}'.format('your_project_ID')
    
  • Der Anfragetext ist eine JSON-Ressource, die die Modellinformationen enthält. In der Ressourcendefinition des Modells enthält der Text zwei Eingabewerte: name und description (optional). Sie können anstelle von JSON ein Python-Wörterbuch übergeben. Die API-Clientbibliothek führt dann die notwendige Konvertierung durch.

    Erstellen Sie Ihr Python-Wörterbuch:

    request_dict = {'name': 'your-model-name',
                   'description': 'This is a machine learning model entry.'}
    

Anfrage erstellen

Der Aufruf von APIs mit der Python-Clientbibliothek erfolgt in zwei Schritten: Zuerst erstellen Sie eine Anfrage, dann führen Sie mit dieser Anfrage den Aufruf durch.

Anfrage erstellen

Verwenden Sie die zuvor erstellten Clientobjekte (wenn Sie das Code-Snippet wie angegeben verwendet haben, lauten sie ml) als Basis der API-Hierarchie und geben Sie die gewünschte API an. Jede Sammlung im API-Pfad verhält sich wie eine Funktion, die eine Liste der darin enthaltenen Sammlungen und Methoden zurückgibt. Beispielsweise ist das Stammverzeichnis aller AI Platform-APIs projects. Ihr Aufruf beginnt also mit ml.projects().

Verwenden Sie für Ihre Anfrage folgenden Code:

request = ml.projects().models().create(parent=project_id, body=request_dict)

Anfrage senden

Die im letzten Schritt erstellte Anfrage gibt eine execute-Methode an, die Sie zum Senden der Anfrage an den Dienst aufrufen:

response = request.execute()

Entwickler kombinieren diesen Schritt in der Regel mit dem letzten Schritt:

response = ml.projects().models().create(parent=project_id,
                                         body=request_dict).execute()

Einfache Fehler abfangen

Bei der Durchführung von API-Aufrufen über das Internet gibt es viele potenzielle Fehlerquellen. Es ist deshalb empfehlenswert, gängige Fehler systematisch abzufangen. Der einfachste Weg zur Fehlerbehandlung ist die Platzierung Ihrer Anfrage in einem try-Block und das Abfangen möglicher Fehler. Bei den meisten denkbaren Fehlern des Dienstes handelt es sich um HTTP-Fehler, die in der Klasse HttpError gekapselt sind. Damit diese Fehler abgefangen werden können, verwenden Sie das Modul errors aus dem Paket googleapiclient.

Kapseln Sie Ihren request.execute()-Aufruf in einem try-Block. Fügen Sie außerdem eine print-Anweisung im Block ein, damit erst dann versucht wird, die Antwort auszugeben, wenn der Aufruf erfolgreich war:

try:
    response = request.execute()
    print(response)

Fügen Sie einen entsprechenden Block hinzu, um HTTP-Fehler abzufangen. Mit HttpError._get_reason() können Sie die Textfelder für die Fehlerursache aus der Antwort abrufen:

except errors.HttpError, err:
    # Something went wrong, print out some information.
    print('There was an error creating the model. Check the details:')
    print(err._get_reason())

Möglicherweise reicht aber eine einfache Ausgabeanweisung für Ihre Anwendung nicht aus.

Alle Anweisungen zusammengefasst

So sieht das Beispiel komplett aus:

from googleapiclient import discovery
from googleapiclient import errors

# Store your full project ID in a variable in the format the API needs.
project_id = 'projects/{}'.format('your_project_ID')

# Build a representation of the Cloud ML API.
ml = discovery.build('ml', 'v1')

# Create a dictionary with the fields from the request body.
request_dict = {'name': 'your_model_name',
               'description': 'your_model_description'}

# Create a request to call projects.models.create.
request = ml.projects().models().create(
              parent=project_id, body=request_dict)

# Make the call.
try:
    response = request.execute()
    print(response)
except errors.HttpError, err:
    # Something went wrong, print out some information.
    print('There was an error creating the model. Check the details:')
    print(err._get_reason())

Auf andere Methoden übertragen

Sie können mit der hier dargestellten Prozedur auch alle anderen REST API-Aufrufe durchführen. Für einige APIs sind komplexere JSON-Ressourcen als für das Erstellen eines Modells erforderlich. Die grundsätzliche Vorgehensweise unterscheidet sich aber nicht:

  1. Importieren Sie googleapiclient.discovery und googleapiclient.errors.

  2. Verwenden Sie das Erkennungsmodul, um eine Python-Repräsentation Ihrer API zu erstellen.

  3. Verwenden Sie die API-Darstellung als eine Reihe verschachtelter Objekte, um die gewünschte API zu ermitteln und eine Anfrage zu erstellen. Beispiel:

    request = ml.projects().models().versions().delete(
        name='projects/myproject/models/mymodel/versions/myversion')
    
  4. Rufen Sie request.execute() auf, um die Anfrage zu senden und Ausnahmen in einer für Ihre Anwendung geeigneten Weise zu verarbeiten.

  5. Wenn ein Antworttext vorhanden ist, können Sie diesen wie ein Python-Wörterbuch behandeln und damit die in der API-Referenz angegebenen JSON-Objekte ermitteln. Beachten Sie, dass viele der Objekte in Antworten Felder haben, die nur in bestimmten Fällen vorhanden sind. Es wird empfohlen, immer eine Prüfung vorzunehmen, um zentrale Fehler zu vermeiden:

    response = request.execute()
    
    some_value = response.get('some_key') or 'default_value'
    

Weitere Informationen

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

Feedback geben zu...