arrow_back

Awwvision: Kubernetes クラスタからの Cloud Vision API

参加 ログイン

Awwvision: Kubernetes クラスタからの Cloud Vision API

45分 クレジット: 5

GSP066

Google Cloud セルフペース ラボ

概要

この Awwvision ラボでは、KubernetesCloud Vision API を使用して、Reddit の /r/aww サブレディットの画像を Vision API で分類(ラベル付け)して結果をウェブアプリで表示する方法について学びます。

Awwvision には次の 3 つのコンポーネントがあります。

  1. シンプルな Redis インスタンス。

  2. ラベルとそれに関連付けられた画像を表示するウェブアプリ。

  3. Reddit の画像をスクレイピングして Vision API で分類するワーカー。複数のワーカー インスタンス間のタスクの調整には Cloud Pub/Sub を使用します。

設定と要件

Qwiklabs の設定

[ラボを開始] ボタンをクリックする前に

こちらの手順をお読みください。ラボの時間は記録されており、一時停止することはできません。[ラボを開始] をクリックするとスタートするタイマーは、Google Cloud のリソースを利用できる時間を示しています。

この Qwiklabs ハンズオンラボでは、シミュレーションやデモ環境ではなく、実際のクラウド環境を使ってご自身でラボのアクティビティを行うことができます。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。

必要なもの

このラボを完了するためには、下記が必要です。

  • 標準的なインターネット ブラウザ(Chrome を推奨)
  • ラボを完了するために十分な時間

注: すでに個人の Google Cloud アカウントやプロジェクトをお持ちの場合でも、ラボでは使用しないでください。

注: Chrome OS デバイスを使用している場合は、シークレット ウィンドウを開いてこのラボを実行してください。

ラボを開始して Google Cloud コンソールにログインする方法

  1. [ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるポップアップでお支払い方法を選択してください。 左側の [ラボの詳細] パネルには、以下が表示されます。

    • [Google コンソールを開く] ボタン
    • 残り時間
    • このラボで使用する必要がある一時的な認証情報
    • このラボを行うために必要なその他の情報(ある場合)
  2. [Google コンソールを開く] をクリックします。 ラボでリソースが起動し、別のタブで [ログイン] ページが表示されます。

    ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。

    注: [アカウントの選択] ダイアログが表示されたら、[別のアカウントを使用] をクリックします。
  3. 必要に応じて、[ラボの詳細] パネルから [ユーザー名] をコピーして [ログイン] ダイアログに貼り付けます。[次へ] をクリックします。

  4. [ラボの詳細] パネルから [パスワード] をコピーして [ようこそ] ダイアログに貼り付けます。[次へ] をクリックします。

    重要: 認証情報は左側のパネルに表示されたものを使用してください。Google Cloud Skills Boost の認証情報は使用しないでください。 注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。
  5. その後次のように進みます。

    • 利用規約に同意してください。
    • 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
    • 無料トライアルには登録しないでください。

その後このタブで Cloud Console が開きます。

注: 左上にある [ナビゲーション メニュー] をクリックすると、Google Cloud のプロダクトやサービスのリストが含まれるメニューが表示されます。 ナビゲーション メニュー アイコン

Google Cloud Shell の有効化

Google Cloud Shell は、デベロッパー ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Google Cloud Shell では、コマンドラインで GCP リソースにアクセスできます。

GCP Console の右上のツールバーにある [Cloud Shell をアクティブにする] ボタンをクリックします。

Cloud Shell アイコン

[続行] をクリックします。

cloudshell_continue

環境のプロビジョニングと接続には少し時間がかかります。接続すると、すでに認証されており、プロジェクトは PROJECT_ID に設定されています。例えば:

Cloud Shell 端末

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 クラスタを正常的に作成すると、評価スコアが表示されます。

Kubernetes Engine クラスタを作成する

次のコマンドを実行して、コンテナの認証情報を使用します。

gcloud container clusters get-credentials awwvision

kubectl コマンドライン ツールを使用して、すべてが正常に機能していることを確認します。

kubectl cluster-info

仮想環境を作成する

Python 仮想環境を使用して、パッケージのインストール先をシステムとは別の場所にします。

1. `virtualenv` 環境をインストールする sudo apt-get install -y virtualenv 2. 仮想環境を構築します。 python3 -m venv venv 3. 仮想環境をアクティブにします。 source venv/bin/activate

サンプルを入手する

次のコマンドを実行して、プロジェクトにサンプルデータを追加します。

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 リソース(rediswebappworker)がデプロイされます。

クラスタ上の 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 が付けたラベルで分類されています。重複して分類されている画像もありますが、これは、それらの画像で複数のラベルが検出されたためです。ページを表示したときにクローラがまだ終了していなかった可能性があるため、しばらくしたらページを再読み込みしてみてください。

結果は次のようになります。

app_dashboard.png

理解度を確認する

今回のラボで学習した内容の理解を深めるため、以下の選択問題を用意しました。正解を目指して頑張ってください。

お疲れさまでした

ml_quest_icon.png Solutions_Kubernetes-125.png ML-ML-Infrastructure-badge.png

クエストの終了

このセルフペース ラボは、Qwiklabs のクエストである Machine Learning APIKubernetes ソリューションの一部です。クエストとは、学習パスを構成する一連のラボのことです。完了すると成果が認められて上のバッジが贈られます。バッジは公開して、オンライン レジュメやソーシャル メディア アカウントにリンクすることができます。このラボを終えたら、クエストに登録して、すぐにクレジットを受け取れます。受講可能なその他の Qwiklabs のクエストもご覧ください

次のラボの受講

「Machine Learning API」のその他のラボもお試しください。たとえば、Running Dedicated Game Servers in Google Kubernetes EngineDistributed Load Testing Using KubernetesAdvanced ML: ML Infrastructureなどのラボがあります。

次のステップ

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 の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。