VPC-Netzwerk-Peering beim Training verwenden

Sie können AI Platform-Trainingsjobs für das Peering mit Virtual Private Cloud (VPC) konfigurieren. Dadurch können Ihre Trainingsjobs auf private IP-Adressen innerhalb Ihrer Google Cloud- oder lokalen Netzwerke zugreifen. Die Verwendung einer privaten IP-Adresse für die Verbindung zu Ihren Trainingsjobs bietet mehr Netzwerksicherheit und geringere Netzwerklatenz als öffentliche IP-Adressen.

In diesem Leitfaden erfahren Sie, wie Sie eine private IP-Adresse mit AI Platform Training konfigurieren. Dazu verwenden Sie VPC-Netzwerk-Peering, um Ihr Netzwerk mit AI Platform-Trainingsjobs zu verbinden. Dieser Leitfaden wird für Netzwerkadministratoren empfohlen, die bereits mit den Netzwerkkonzepten von Google Cloud vertraut sind.

Überblick

In diesem Leitfaden werden folgende Aufgaben behandelt:

  • Zugriff auf private Dienste für die VPC konfigurieren. Dadurch wird eine Peering-Verbindung zwischen Ihrer VPC und dem freigegebenen VPC-Netzwerk von Google hergestellt.
  • Ziehen Sie den IP-Bereich in Betracht, den Sie für das AI Platform-Training reservieren müssen.
  • Exportieren Sie gegebenenfalls benutzerdefinierte Routen, damit sie von AI Platform Training importiert werden können.
  • Prüfen Sie den Status Ihrer Peering-Verbindungen.
  • Senden Sie einen Trainingsjob in Ihrem Netzwerk.
  • Prüfen Sie, ob in einem Netzwerk aktive Trainingsjobs vorhanden sind, bevor Sie Jobs in einem anderen Netzwerk senden.
  • Testen Sie, ob ein Trainingsjob auf private IP-Adressen in Ihrem Netzwerk zugreifen kann.

Vorbereitung

  • Wählen Sie eine VPC aus, die Sie mit AI Platform-Trainingsjobs verbinden möchten.
  • Wählen oder erstellen Sie ein Google Cloud-Projekt, um Trainingsjobs mit AI Platform Training auszuführen.
  • Die Abrechnung für das Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für Ihr Projekt aktiviert ist.

  • Compute Engine API, AI Platform Training & Prediction, and the Service Networking APIs aktivieren.

    Aktivieren Sie die APIs

  • Optional können Sie eine freigegebene VPC verwenden. Wenn Sie eine freigegebene VPC verwenden, führen Sie Trainingsjobs normalerweise in einem anderen Google Cloud-Projekt als Ihrem VPC-Hostprojekt aus. Aktivieren Sie die Compute Engine API und die Service Networking APIs in beiden Projekten. Freigegebene VPC bereitstellen
  • Installieren Sie das Cloud SDK, wenn Sie die gcloud-Befehlszeilenbeispiele in dieser Anleitung ausführen möchten.

Berechtigungen

Wenn Sie kein Projektinhaber oder -bearbeiter sind, benötigen Sie die Rolle "Netzwerkadministrator", die die Berechtigungen zum Verwalten von Netzwerkressourcen enthält.

Zum Ausführen von Jobs in AI Platform Training benötigen Sie die Berechtigungen, die in den Rollen "AI Platform Training-Administrator" oder "AI Platform Training-Entwickler" enthalten sind. Weitere Informationen zu den IAM-Rollen für AI Platform Training

Peering mit einem lokalen Netzwerk

Für VPC-Netzwerk-Peering mit einem lokalen Netzwerk sind zusätzliche Schritte erforderlich:

  1. Verbinden Sie Ihr lokales Netzwerk mit Ihrer VPC. Sie können einen VPN-Tunnel oder Interconnect verwenden.
  2. Richten Sie benutzerdefinierte Routen von der VPC zu Ihrem lokalen Netzwerk ein.
  3. Exportieren Sie Ihre benutzerdefinierten Routen, damit sie von AI Platform Training importiert werden können.

Zugriff auf private Dienste für Ihre VPC einrichten

Wenn Sie den Zugriff auf private Dienste einrichten, stellen Sie eine private Verbindung zwischen Ihrem Netzwerk und einem Netzwerk von Google oder einem Drittanbieterdienst (Dienstersteller) her. In diesem Fall ist AI Platform Training ein Dienstersteller. Zum Einrichten des Zugriffs auf private Dienste reservieren Sie einen IP-Bereich für Dienstersteller und erstellen dann eine Peering-Verbindung mit AI Platform Training.

Wenn Sie bereits eine VPC mit konfiguriertem Zugriff auf private Dienste haben und diese VPC für das Peering mit Ihrem Trainingsjob verwenden möchten, fahren Sie mit dem Exportieren benutzerdefinierter Routen fort.

  1. Legen Sie Umgebungsvariablen für Ihre Projekt-ID, den Namen der Region, den Namen des reservierten Bereichs und den Namen Ihres Netzwerks fest.
    • Wenn Sie eine freigegebene VPC verwenden, verwenden Sie die Projekt-ID Ihres VPC-Hostprojekts. Andernfalls verwenden Sie die Projekt-ID des Google Cloud-Projekts, mit dem Sie Trainingsjobs ausführen.
    • Wählen Sie eine geeignete Region für die Verwendung mit AI Platform Training aus.
  2. Aktivieren Sie die erforderlichen APIs. Wenn Sie eine freigegebene VPC verwenden, müssen Sie die APIs in Ihrem VPC-Hostprojekt und im Google Cloud-Projekt aktivieren, mit dem Sie Trainingsjobs ausführen.
  3. Legen Sie mit gcloud compute addresses create einen reservierten Bereich fest.
  4. Stellen Sie mithilfe von gcloud services vpc-peerings connect eine Peering-Verbindung zwischen Ihrem VPC-Hostprojekt und dem Google-Dienstnetzwerk her.

    PROJECT_ID=YOUR_PROJECT_ID
    gcloud config set project $PROJECT_ID
    
    REGION=YOUR_REGION
    
    # This is for display only; you can name the range anything.
    PEERING_RANGE_NAME=google-reserved-range
    
    NETWORK=YOUR_NETWORK_NAME
    
    # NOTE: `prefix-length=16` means a CIDR block with mask /16 will be
    # reserved for use by Google services, such as AI Platform Training.
    gcloud compute addresses create $PEERING_RANGE_NAME \
      --global \
      --prefix-length=16 \
      --description="peering range for Google service" \
      --network=$NETWORK \
      --purpose=VPC_PEERING
    
    # Create the VPC connection.
    gcloud services vpc-peerings connect \
      --service=servicenetworking.googleapis.com \
      --network=$NETWORK \
      --ranges=$PEERING_RANGE_NAME \
      --project=$PROJECT_ID
    

Weitere Informationen zum Zugriff auf private Dienste

IP-Bereiche für AI Platform-Training reservieren

Wenn Sie einen IP-Bereich für Dienstersteller reservieren, kann der Bereich von AI Platform Training und anderen Diensten verwendet werden. Diese Tabelle zeigt die maximale Anzahl paralleler Trainingsjobs, die Sie mit reservierten Bereichen von /16 bis /19 ausführen können, vorausgesetzt, der Bereich wird fast ausschließlich von AI Platform Training verwendet. Wenn Sie eine Verbindung zu anderen Diensterstellern herstellen, die denselben Bereich verwenden, weisen Sie diesen einen größeren Bereich zu, um die IP-Auslastung zu vermeiden.

Maschinenkonfiguration für Trainingsjob Reservierter Bereich Maximale Anzahl paralleler Jobs
Bis zu 8 Knoten.
Beispiel: 6 Worker, 1 Master und 1 Parameterserver.
/16 63
/17 31
/18 15
/19 7
Bis zu 16 Knoten.
Beispiel: 14 Worker, 1 Master und 1 Parameterserver.
/16 31
/17 15
/18 7
/19 3
Bis zu 32 Knoten.
Beispiel: 30 Worker, 1 Master und 1 Parameterserver.
/16 15
/17 7
/18 3
/19 1

Maschinentypen für Trainingsjobs angeben

Benutzerdefinierte Routen exportieren

Wenn Sie benutzerdefinierte Routen verwenden, müssen Sie diese exportieren, damit sie von AI Platform Training importiert werden können. Wenn Sie keine benutzerdefinierten Routen verwenden, fahren Sie mit dem Senden des Trainingsjobs fort.

Zum Exportieren benutzerdefinierter Routen aktualisieren Sie die Peering-Verbindung in Ihrer VPC. Beim Exportieren von benutzerdefinierten Routen werden alle aktiven statischen und dynamischen Routen, die sich in Ihrem VPC-Netzwerk befinden, z. B. Routen zu Ihrem lokalen Netzwerk, an die Netzwerke der Dienstersteller gesendet (in diesem Fall AI Platform Training). Dadurch werden die erforderlichen Verbindungen hergestellt und Trainingsjobs können Traffic an Ihr lokales Netzwerk zurücksenden.

Weitere Informationen zu privaten Verbindungen mit lokalen Netzwerken

Console

  1. Rufen Sie in der Google Cloud Console die Seite „VPC-Netzwerk-Peering“ auf.
    Zur Seite "VPC-Netzwerk-Peering"
  2. Wählen Sie die zu aktualisierende Peering-Verbindung aus.
  3. Klicken Sie auf Bearbeiten.
  4. Wählen Sie Benutzerdefinierte Routen exportieren aus.

gcloud

  1. Suchen Sie den Namen der zu aktualisierenden Peering-Verbindung. Wenn Sie mehrere Peering-Verbindungen haben, lassen Sie das Flag --format weg.

    gcloud services vpc-peerings list \
      --network=$NETWORK \
      --service=servicenetworking.googleapis.com \
      --project=$PROJECT_ID \
      --format "value(peering)"
    
  2. Aktualisieren Sie die Peering-Verbindung, um benutzerdefinierte Routen zu exportieren.

    gcloud compute networks peerings update PEERING-NAME \
        --network=$NETWORK \
        --export-custom-routes \
        --project=$PROJECT_ID
    

Status der Peering-Verbindungen prüfen

Wenn Sie sehen möchten, dass Peering-Verbindungen aktiv sind, können Sie sie hiermit auflisten:

gcloud compute networks peerings list --network $NETWORK

Der Status des gerade erstellten Peerings sollte ACTIVE lauten. Weitere Informationen zu aktiven Peering-Verbindungen

Trainingsjob senden

Wenn Sie Ihren Trainingsjob senden, müssen Sie den Namen des Netzwerks angeben, auf das AI Platform Training Zugriff haben soll.

Wenn Sie einen Trainingsjob ohne Netzwerknamen senden, wird der Trainingsjob standardmäßig ohne Peering-Verbindung und ohne Zugriff auf private IP-Adressen in Ihrem Projekt ausgeführt.

  1. Erstellen Sie eine config.yaml, um das Netzwerk anzugeben. Wenn Sie eine freigegebene VPC verwenden, geben Sie die Nummer Ihres VPC-Hostprojekts an.

    Prüfen Sie, ob der Netzwerkname richtig formatiert ist:

    PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")
    cat << EOF > config.yaml
    trainingInput:
      scaleTier: BASIC
      network: projects/$PROJECT_NUMBER/global/networks/$NETWORK
    EOF
    
  2. Erstellen Sie eine Trainingsanwendung, die Sie an AI Platform Training senden können.

  3. Geben Sie weitere Parameter für Ihren Trainingsjob an. Parameter, die zum Senden eines Trainingsjobs erforderlich sind

    TRAINER_PACKAGE_PATH="PATH_TO_YOUR_TRAINING_APPLICATION"
    now=$(date +"%Y%m%d_%H%M%S")
    JOB_NAME="YOUR_JOB_NAME_$now"
    MAIN_TRAINER_MODULE="trainer.task"
    JOB_DIR="gs://PATH_TO_OUTPUT_DIRECTORY"
    REGION="us-east1"
    RUNTIME_VERSION="2.4"
    PYTHON_VERSION="3.7"
    
  4. Senden Sie den Job und übergeben Sie die Datei config.yaml:

    gcloud ai-platform jobs submit training $JOB_NAME \
      --module-name $MAIN_TRAINER_MODULE \
      --job-dir $JOB_DIR \
      --region $REGION \
      --runtime-version $RUNTIME_VERSION \
      --python-version $PYTHON_VERSION \
      --package-path $TRAINER_PACKAGE_PATH \
      --config config.yaml
    

Jobs in verschiedenen Netzwerken ausführen

Sie können Trainingsjobs nicht an ein neues Netzwerk senden, während noch aktive Trainingsjobs in einem anderen Netzwerk vorhanden sind. Bevor Sie zu einem anderen Netzwerk wechseln, müssen Sie warten, bis alle gesendeten Trainingsjobs abgeschlossen sind, oder sie abbrechen. Wenn Sie beispielsweise ein Netzwerk zum Testen einrichten und Trainingsjobs in diesem Testnetzwerk gesendet haben, müssen Sie im Testnetzwerk nach aktiven Jobs suchen und prüfen, dass diese abgeschlossen oder abgebrochen sind, bevor Sie Trainingsjobs in einem anderen Netzwerk für die Produktion senden.

Listen Sie Trainingsjobs auf, die noch in einem Netzwerk aktiv sind:

PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")
NETWORK_FULL_NAME="projects/$PROJECT_NUMBER/global/networks/$NETWORK"

gcloud ai-platform jobs list \
  --filter "(state=queued OR state=running) AND (trainingInput.network=$NETWORK_FULL_NAME)"

Ihre Ausgabe sieht in etwa so aus:

JOB_ID                                             STATUS     CREATED
job_20200502_151443                                QUEUED     2020-05-02T15:14:47

Wenn Jobs aufgelistet sind, können Sie warten, bis sie abgeschlossen sind, oder sie mit gcloud ai-platform jobs cancel abbrechen.

Zugriff auf Trainingsjobs testen

In diesem Abschnitt wird erläutert, wie Sie testen können, ob ein Trainingsjob auf private IP-Adressen in Ihrem Netzwerk zugreifen kann.

  1. Erstellen Sie eine Compute Engine-Instanz in Ihrem VPC-Netzwerk.
  2. Prüfen Sie Ihre Firewallregeln, um sicherzustellen, dass sie den eingehenden Traffic aus dem AI Platform-Trainingsnetzwerk nicht einschränken. Falls ja, fügen Sie eine Regel hinzu, um sicherzustellen, dass das AI Platform Training-Netzwerk auf den IP-Bereich zugreifen kann, den Sie für AI Platform Training (und andere Dienstersteller) reserviert haben.
  3. Richten Sie einen lokalen Server auf der VM-Instanz ein, um einen Endpunkt für den Zugriff auf einen Trainingsjob zu erstellen.
  4. Erstellen Sie eine Python-Trainingsanwendung, die Sie an AI Platform Training senden können. Senden Sie anstelle des Modelltrainingscodes Code, der auf den Endpunkt zugreift, den Sie im vorherigen Schritt eingerichtet haben.
  5. Senden Sie den Job an AI Platform Training.

Fehlerbehebung

In diesem Abschnitt werden einige häufige Probleme bei der Konfiguration von VPC-Netzwerk-Peering mit AI Platform Training aufgeführt.

  • Verwenden Sie beim Senden des Trainingsjobs den vollständigen Netzwerknamen:

    "projects/YOUR_PROJECT_NUMBER/global/network/YOUR_NETWORK_NAME"

  • Verwenden Sie keine TPUs in einem Trainingsjob, der mit Ihrem Netzwerk verbunden ist. TPUs werden beim VPC-Netzwerk-Peering in AI Platform Training nicht unterstützt.

  • Achten Sie darauf, dass in einem Netzwerk keine aktiven Trainingsjobs vorhanden sind, bevor Sie Trainingsjobs in einem anderen Netzwerk senden.

  • Achten Sie darauf, dass Sie allen Diensterstellern, mit denen Ihr Netzwerk verbunden ist, einen ausreichenden IP-Bereich zugewiesen haben, einschließlich AI Platform Training.

Weitere Informationen zur Fehlerbehebung finden Sie in der Anleitung zur Fehlerbehebung für VPC-Netzwerk-Peering.

Nächste Schritte