このガイドでは、トレーニング ジョブでネットワーク内のプライベート IP にアクセスできることをテストする方法について説明します。最初に、VPC ネットワークと AI Platform Training の間にプライベート接続を作成する必要があります。
概要
このテストの設定は、次の 2 つの部分で構成されています。
- ネットワークにエンドポイントを設定する。
- そのエンドポイントにアクセスするテスト トレーニング ジョブを送信する。
エンドポイントの設定
エンドポイントを設定するには、ネットワーク内の VM インスタンスにローカル サーバーを設定します。
- VPC ネットワーク内に Compute Engine インスタンスを作成します。
- ファイアウォール ルールを確認して、AI Platform Training ネットワークからの上り(内向き)が制限されていないことを確認します。制限されている場合、AI Platform Training ネットワークで AI Platform Training(と他のサービス プロデューサー)用に予約した IP 範囲にアクセスできるように、ルールを追加します。
VM のプライベート IP アドレスを確認します。
- [VM インスタンス] ページに移動
- インスタンスの [VM インスタンスの詳細] ページに移動して、ページに記載されている内部 IP を確認します。
インスタンスの名前を設定し、次の
gcloud
コマンドを実行します。INSTANCE_NAME="your-instance-name" gcloud compute instances describe $INSTANCE_NAME \ --format="value(networkInterfaces.networkIP)"
VM に SSH 接続し、Node JS をインストールします。
次の Node JS のサンプルコードをコピーして、プライベート IP アドレスを入力します。
const http = require('http'); // Fill in the value of your vm's private IP const hostname = 'your_private_ip'; const port = 3000; const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hello World ' + req.url + '\n'); }); server.listen(port, hostname, () => { console.log('Server running at http://${hostname}:${port}/'); }); ```
サーバーを実行します。
nodejs hw.js
トレーニング ジョブを送信するために、VM の SSH から抜けます。
テスト トレーニング ジョブの送信
モデルをトレーニングする代わりに、このトレーニング ジョブはエンドポイントにアクセスして、AI Platform Training がネットワーク内のプライベート IP にアクセスできることを確認します。
- Python トレーニング サンプル アプリケーションをコピーして、AI Platform Training に送信します。
プライベート IP アドレスを含むようにコードを更新します。
import logging import os import sys def main(): # Fill in the value of your vm's private IP hostname = "your_private_ip" response = os.system("curl http://" + hostname + ":3000/you_can_write_your_name_here") if response == 0: print(hostname, "is up!") logging.info("%s is up; Peering successful!", hostname) sys.exit(0) else: logging.error("%s is down; Peering failed!", hostname) sys.exit(1) if __name__ == "__main__": logging.getLogger().setLevel(logging.INFO) main()
ネットワークを指定する config.yaml を作成します。共有 VPC を使用している場合は、VPC ホスト プロジェクト番号を使用します。
ネットワーク名が正しくフォーマットされていることを確認します。
PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)") NETWORK=your-network-name cat << EOF > config.yaml trainingInput: scaleTier: BASIC network: projects/$PROJECT_NUMBER/global/networks/$NETWORK EOF
AI Platform Training にジョブを送信します。
BUCKET_NAME=your_bucket_name JOB_ID='test_vpc_peering_job' gcloud ai-platform jobs submit training $JOB_ID \ --module-name trainingcode.test_peering \ --stream-logs \ --runtime-version 1.15 \ --job-dir gs://$BUCKET_NAME/$JOB_ID \ --region us-central1 \ --package-path trainingcode/ \ --config config.yaml
ジョブが正常に完了すると、「Peering successful(ピアリングに成功しました)」と出力されます。これにより、AI Platform Training とのピアリング接続が確認されたことになります。