arrow_back

Awwvision: Kubernetes クラスタから Cloud Vision API を使用する

参加 ログイン
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Awwvision: Kubernetes クラスタから Cloud Vision API を使用する

Lab 45分 universal_currency_alt クレジット: 5 show_chart 中級
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP066

Google Cloud セルフペース ラボ

概要

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

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

  1. シンプルな Redis インスタンス。
  2. ラベルとそれに関連付けられた画像を表示するウェブアプリ。
  3. Reddit の画像を抽出して Vision API で分類するワーカー。複数のワーカー インスタンス間のタスクの調整には Cloud Pub/Sub を使用します。

設定と要件

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

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

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

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

  • 標準的なインターネット ブラウザ(Chrome を推奨)
注: このラボの実行には、シークレット モードまたはシークレット ブラウジング ウィンドウを使用してください。これにより、個人アカウントと受講者アカウント間の競合を防ぎ、個人アカウントに追加料金が発生することを防ぎます。
  • ラボを完了するために十分な時間を確保してください。ラボをいったん開始すると一時停止することはできません。
注: すでに個人の Google Cloud アカウントやプロジェクトをお持ちの場合でも、このラボでは使用しないでください。アカウントへの追加料金が発生する可能性があります。

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

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

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

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

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

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

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

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

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

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

Cloud Shell をアクティブにする

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

  1. Google Cloud コンソールの上部にある「Cloud Shell をアクティブにする」アイコン 「Cloud Shell をアクティブにする」アイコン をクリックします。

接続した時点で認証が完了しており、プロジェクトに各自の PROJECT_ID が設定されます。出力には、このセッションの PROJECT_ID を宣言する次の行が含まれています。

Your Cloud Platform project in this session is set to YOUR_PROJECT_ID

gcloud は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。

  1. (省略可)次のコマンドを使用すると、有効なアカウント名を一覧表示できます。
gcloud auth list
  1. [承認] をクリックします。

  2. 出力は次のようになります。

出力:

ACTIVE: * ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (省略可)次のコマンドを使用すると、プロジェクト ID を一覧表示できます。
gcloud config list project

出力:

[core] project = <project_ID>

出力例:

[core] project = qwiklabs-gcp-44776a13dea667a6 注: Google Cloud における gcloud ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。

タスク 1. Kubernetes Engine クラスタを作成する

このラボでは、Google Cloud のコマンドライン ツールである gcloud を使用して、Kubernetes Engine クラスタを設定します。ノードはいくつでも指定できますが、少なくとも 1 つ必要です。Pub/Sub と Vision API にアクセスを許可するために cloud-platform スコープを使用します。

  1. Cloud Shell で次のコマンドを実行して、 ゾーンにクラスタを作成します。
gcloud config set compute/zone {{{project_0.default_zone | Zone}}}
  1. その後、次のコマンドを実行してクラスタを起動します。
gcloud container clusters create awwvision \ --num-nodes 2 \ --scopes cloud-platform

完了したタスクをテストする

[進行状況を確認] をクリックして、実行したタスクを確認します。Kubernetes クラスタが正常に作成されている場合は、評価スコアが表示されます。

Kubernetes Engine クラスタを作成する
  1. 次のコマンドを実行して、作成したコンテナの認証情報を使用するよう指定します。
gcloud container clusters get-credentials awwvision
  1. kubectl コマンドライン ツールを使用して、問題が生じていないことを確認します。
kubectl cluster-info

タスク 2. 仮想環境を作成する

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

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

タスク 3. サンプルを追加する

  • 次のコマンドを実行して、プロジェクトにサンプルデータを追加します。
gsutil -m cp -r gs://spls/gsp066/cloud-vision .

タスク 4. サンプルをデプロイする

  1. Cloud Shell で、複製した cloud-vision リポジトリの python/awwvision ディレクトリに移動します。
cd cloud-vision/python/awwvision
  1. awwvision ディレクトリで make all を実行し、すべての内容のビルドとデプロイを行います。
make all

このプロセスの一環として、Docker イメージがビルドされ、Google Container Registry のプライベート コンテナ レジストリにアップロードされます。

また、テンプレートから yaml ファイルが生成され、対象のプロジェクトに固有の情報が指定されます。そしてこのラボで使用する Kubernetes リソース(rediswebappworker)が、生成されたファイルを使ってデプロイされます。

タスク 5. クラスタ上の Kubernetes リソースを確認する

デプロイが完了したら、Kubernetes リソースが稼働していることを確認します。

  1. まず、次のコマンドを実行して Pod を一覧表示します。
kubectl get pods

次のような結果が表示されます(Pod 名は異なります)。すべての Pod のステータスが「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
  1. 次に、次のコマンドを実行して 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
  1. デプロイが完了したら、次のコマンドを実行し、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

完了したタスクをテストする

[進行状況を確認] をクリックして、実行したタスクを確認します。サンプルアプリが正常にデプロイされている場合は、評価スコアが表示されます。

サンプルをデプロイする

タスク 6. 新しいウェブアプリにアクセスしてクローラを開始する

  1. awwvision-webapp サービスの外部 IP をコピーして新しいブラウザタブに貼り付けると、対象のウェブアプリが表示されます。表示されたら [Start the Crawler] をクリックします。

  2. 続いて [GO BACK] をクリックすると、/r/aww サブレディットの画像が表示されます。これらの画像は、Vision API のラベルで分類されています。重複して分類されている画像もありますが、それは複数のラベルが検出されたことを示しています。なお、ページを表示したときにクローラがまだ終了していなかった可能性もあるため、少し時間をおいてページを再読み込みしてみましょう。

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

複数の写真をタイル表示する Awwvision ウェブページ

タスク 7. 理解度チェック

以下の問題に取り組み、今回のラボで学習した内容の理解を深めましょう。正解を目指して頑張ってください。

お疲れさまでした

Kubernetes と Cloud Vision API を使用して、Reddit の /r/aww サブレディットから取得した画像を分類し、結果をウェブ アプリケーションで表示しました。

クエストを完了する

このセルフペース ラボは、「Integrate with Machine Learning APIs」と「Advanced ML: ML Infrastructure」のクエストの一部です。クエストとは学習プログラムを構成する一連のラボのことで、完了すると成果が認められて上のようなバッジが贈られます。バッジは公開して、オンライン レジュメやソーシャル メディア アカウントにリンクできます。このラボの修了後、このラボが含まれるクエストに登録すれば、すぐにクレジットを受け取ることができます。受講可能な全クエストについては、Google Cloud Skills Boost カタログをご覧ください。

次のラボを受講する

ML API に関する別のラボ(「Kubernetes を使用した負荷分散のテスト」など)をお試しください。

次のステップと詳細情報

詳しくは、Coursera の ML コースにご登録ください。

Google Cloud トレーニングと認定資格

Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。

マニュアルの最終更新日: 2023 年 10 月 6 日

ラボの最終テスト日: 2023 年 10 月 9 日

Copyright 2024 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。