チェックポイント
Create a Kubernetes Engine cluster
/ 50
Deploy the sample
/ 50
Awwvision: Kubernetes クラスタからの Cloud Vision API
GSP066
概要
この Awwvision ラボでは、Kubernetes と Cloud Vision API を使用して、Reddit の /r/aww サブレディットの画像を Vision API で分類(ラベル付け)して結果をウェブアプリで表示する方法について学びます。
Awwvision には次の 3 つのコンポーネントがあります。
-
シンプルな Redis インスタンス。
-
ラベルとそれに関連付けられた画像を表示するウェブアプリ。
-
Reddit の画像をスクレイピングして Vision API で分類するワーカー。複数のワーカー インスタンス間のタスクの調整には Cloud Pub/Sub を使用します。
設定と要件
Qwiklabs の設定
[ラボを開始] ボタンをクリックする前に
こちらの手順をお読みください。ラボの時間は記録されており、一時停止することはできません。[ラボを開始] をクリックするとスタートするタイマーは、Google Cloud のリソースを利用できる時間を示しています。
この Qwiklabs ハンズオンラボでは、シミュレーションやデモ環境ではなく、実際のクラウド環境を使ってご自身でラボのアクティビティを行うことができます。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
必要なもの
このラボを完了するためには、下記が必要です。
- 標準的なインターネット ブラウザ(Chrome を推奨)
- ラボを完了するために十分な時間
注: すでに個人の Google Cloud アカウントやプロジェクトをお持ちの場合でも、ラボでは使用しないでください。
注: Chrome OS デバイスを使用している場合は、シークレット ウィンドウを開いてこのラボを実行してください。
ラボを開始して Google Cloud コンソールにログインする方法
-
[ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるポップアップでお支払い方法を選択してください。 左側の [ラボの詳細] パネルには、以下が表示されます。
- [Google コンソールを開く] ボタン
- 残り時間
- このラボで使用する必要がある一時的な認証情報
- このラボを行うために必要なその他の情報(ある場合)
-
[Google コンソールを開く] をクリックします。 ラボでリソースが起動し、別のタブで [ログイン] ページが表示されます。
ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。
注: [アカウントの選択] ダイアログが表示されたら、[別のアカウントを使用] をクリックします。 -
必要に応じて、[ラボの詳細] パネルから [ユーザー名] をコピーして [ログイン] ダイアログに貼り付けます。[次へ] をクリックします。
-
[ラボの詳細] パネルから [パスワード] をコピーして [ようこそ] ダイアログに貼り付けます。[次へ] をクリックします。
重要: 認証情報は左側のパネルに表示されたものを使用してください。Google Cloud Skills Boost の認証情報は使用しないでください。 注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。 -
その後次のように進みます。
- 利用規約に同意してください。
- 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
- 無料トライアルには登録しないでください。
その後このタブで Cloud Console が開きます。
Google Cloud Shell の有効化
Google Cloud Shell は、デベロッパー ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Google Cloud Shell では、コマンドラインで GCP リソースにアクセスできます。
GCP Console の右上のツールバーにある [Cloud Shell をアクティブにする] ボタンをクリックします。
[続行] をクリックします。
環境のプロビジョニングと接続には少し時間がかかります。接続すると、すでに認証されており、プロジェクトは PROJECT_ID に設定されています。例えば:
gcloud
は Google Cloud Platform のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。
次のコマンドを使用すると、有効なアカウント名を一覧表示できます。
gcloud auth list
出力:
ACTIVE: *
ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net
To set the active account, run:
$ gcloud config set account `ACCOUNT`
次のコマンドを使用すると、プロジェクト ID を一覧表示できます。
gcloud config list project
出力:
[core]
project = <project_ID>
出力例:
[core]
project = qwiklabs-gcp-44776a13dea667a6
Kubernetes Engine クラスタを作成する
このラボでは、gcloud(Google Cloud のコマンドライン ツール)を使用して Kubernetes Engine クラスタを作成します。ノードはいくつでも指定できますが、少なくとも 1 つ必要です。Pub/Sub と Vision API にアクセスを許可するために cloud-platform スコープを使用します。
Cloud Shell で次のコマンドを実行して、us-central1-a
ゾーンにクラスタを作成します。
gcloud config set compute/zone us-central1-a
その後、次のコマンドを実行してクラスタを起動します。
gcloud container clusters create awwvision \
--num-nodes 2 \
--scopes cloud-platform
完了したタスクをテストする
[進行状況を確認] をクリックして、実行したタスクを確認します。Kubernetes クラスタを正常的に作成すると、評価スコアが表示されます。
次のコマンドを実行して、コンテナの認証情報を使用します。
gcloud container clusters get-credentials awwvision
kubectl
コマンドライン ツールを使用して、すべてが正常に機能していることを確認します。
kubectl cluster-info
仮想環境を作成する
Python 仮想環境を使用して、パッケージのインストール先をシステムとは別の場所にします。
1. `virtualenv` 環境をインストールするサンプルを入手する
次のコマンドを実行して、プロジェクトにサンプルデータを追加します。
gsutil -m cp -r gs://spls/gsp066/cloud-vision .
サンプルをデプロイする
Cloud Shell で、追加した cloud-vision リポジトリの python/awwvision
ディレクトリに移動します。
cd cloud-vision/python/awwvision
awwvision
ディレクトリで make all
を実行して、すべての内容をビルドしてデプロイします。
make all
このプロセスの一環として、Docker イメージがビルドされ、Google Container Registry のプライベート コンテナ レジストリにアップロードされます。さらに、テンプレートから yaml
ファイルが生成され、プロジェクト固有の情報が入力されて、それらを使ってこのラボの Kubernetes リソース(redis
、webapp
、worker
)がデプロイされます。
クラスタ上の Kubernetes リソースを確認する
デプロイが完了したら、Kubernetes リソースが稼働していることを確認します。
まず、次のコマンドを実行してポッドを一覧表示します。
kubectl get pods
次のような結果が表示されるはずです(ポッド名は異なります)。すべてのポッドのステータスが「Running」になるまで次のコマンドを実行しないでください。
NAME READY STATUS RESTARTS AGE
awwvision-webapp-vwmr1 1/1 Running 0 1m
awwvision-worker-oz6xn 1/1 Running 0 1m
awwvision-worker-qc0b0 1/1 Running 0 1m
awwvision-worker-xpe53 1/1 Running 0 1m
redis-master-rpap8 1/1 Running 0 2m
次に、次のコマンドを実行して Deployment を一覧表示します。
kubectl get deployments -o wide
各 Deployment に指定されているレプリカの数と、使用されているイメージが表示されます。
NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
awwvision-webapp 1/1 1 1 1m awwvision-webapp gcr.io/your-project/awwvision-webapp app=awwvision
awwvision-worker 3/3 3 3 1m awwvision-worker gcr.io/your-project/awwvision-worker app=awwvision
redis-master 1/1 1 1 1m redis-master redis app=redis
デプロイが完了したら、次のコマンドを実行して、webapp サービスの外部 IP アドレスを取得します。
kubectl get svc awwvision-webapp
割り当てられた外部 IP が出力に表示されるまでに数分かかることがあります。次のような結果が表示されるはずです(IP は異なります)。
NAME TYPE CLUSTER_IP EXTERNAL_IP PORT(S) AGE
awwvision-webapp LoadBalancer 10.163.250.49 23.236.61.91 80:31925/TCP 13m
完了したタスクをテストする
[進行状況を確認] をクリックして、実行したタスクを確認します。サンプルアプリのデプロイに成功すると、評価スコアが表示されます。
新しいウェブアプリにアクセスしてクローラを開始する
awwvision-webapp
サービスの外部 IP をコピーして、新しいブラウザタブでウェブアプリを開きます。ウェブアプリが表示されたら、[Start the Crawler] ボタンをクリックします。
続いて [GO BACK] をクリックすると、/r/aww サブレディットの画像が表示されます。これらの画像は、Vision API が付けたラベルで分類されています。重複して分類されている画像もありますが、これは、それらの画像で複数のラベルが検出されたためです。ページを表示したときにクローラがまだ終了していなかった可能性があるため、しばらくしたらページを再読み込みしてみてください。
結果は次のようになります。
理解度を確認する
今回のラボで学習した内容の理解を深めるため、以下の選択問題を用意しました。正解を目指して頑張ってください。
お疲れさまでした
クエストの終了
このセルフペース ラボは、Qwiklabs のクエストである Machine Learning API と Kubernetes ソリューションの一部です。クエストとは、学習パスを構成する一連のラボのことです。完了すると成果が認められて上のバッジが贈られます。バッジは公開して、オンライン レジュメやソーシャル メディア アカウントにリンクすることができます。このラボを終えたら、クエストに登録して、すぐにクレジットを受け取れます。受講可能なその他の Qwiklabs のクエストもご覧ください。
次のラボの受講
「Machine Learning API」のその他のラボもお試しください。たとえば、Running Dedicated Game Servers in Google Kubernetes Engine、Distributed Load Testing Using Kubernetes、Advanced ML: ML Infrastructureなどのラボがあります。
次のステップ
- Coursera の機械学習コースに登録する。
Google Cloud Training & Certification
Google Cloud 技術を最大限に活用できるようになります。このクラスでは、必要な技術力とベスト プラクティスを習得し、継続的に学習することができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、仮想環境など、多忙なスケジュールに対応できるオプションが用意されています。認定資格を取得することで、Google Cloud の技術のスキルと知識を証明できます。
マニュアルの最終更新日: 2022 年 4 月 12 日
ラボの最終テスト日: 2022 年 4 月 12 日
Copyright 2020 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。