
Before you begin
- Labs create a Google Cloud project and resources for a fixed time
- Labs have a time limit and no pause feature. If you end the lab, you'll have to restart from the beginning.
- On the top left of your screen, click Start lab to begin
Launch Vertex AI Workbench instance
/ 30
Create a Dockerfile and add model training code
/ 30
Build the container
/ 20
Run a hyperparameter tuning job on Vertex AI
/ 20
このラボでは、Vertex AI を使用して TensorFlow モデル用のハイパーパラメータ調整ジョブを実行する方法を学びます。このラボではモデルコードに TensorFlow を使用しますが、これは別のフレームワークに簡単に置き換えることができます。
このラボでは、Google Cloud で利用できる最新の AI プロダクトを使用します。Vertex AI は Google Cloud 全体の ML サービスを統合してシームレスな開発エクスペリエンスを提供します。以前は、AutoML でトレーニングしたモデルやカスタムモデルには、個別のサービスを介してアクセスする必要がありました。Vertex AI は、これらの個別のサービスを他の新しいプロダクトとともに 1 つの API へと結合します。既存のプロジェクトを Vertex AI に移行することもできます。ご意見やご質問がありましたら、サポートページからお寄せください。
Vertex AI には、エンドツーエンドの ML ワークフローをサポートするさまざまなプロダクトが含まれています。このラボでは、以下でハイライト表示されたプロダクト(トレーニング、ハイパーパラメータ調整、Notebooks)を取り上げます。
Vertex AI には、Workbench と Colab Enterprise の 2 つのノートブック ソリューションがあります。
Vertex AI Workbench は、制御性とカスタマイズ性が重視されるプロジェクトに適した選択肢です。依存関係が複雑な、複数のファイルにわたる複雑なプロジェクトに特に適しています。また、ワークステーションやノートパソコンからクラウドへの移行を行っているデータ サイエンティストにも適した選択肢です。
Vertex AI Workbench のインスタンスには、ディープ ラーニング パッケージのスイート(TensorFlow と PyTorch のフレームワークのサポートを含む)がプリインストールされています。
各ラボでは、新しい Google Cloud プロジェクトとリソースセットを一定時間無料で利用できます。
Qwiklabs にシークレット ウィンドウでログインします。
ラボのアクセス時間(例: 1:15:00
)に注意し、時間内に完了できるようにしてください。
一時停止機能はありません。必要な場合はやり直せますが、最初からになります。
準備ができたら、[ラボを開始] をクリックします。
ラボの認証情報(ユーザー名とパスワード)をメモしておきます。この情報は、Google Cloud Console にログインする際に使用します。
[Google Console を開く] をクリックします。
[別のアカウントを使用] をクリックし、このラボの認証情報をコピーしてプロンプトに貼り付けます。
他の認証情報を使用すると、エラーが発生したり、料金の請求が発生したりします。
利用規約に同意し、再設定用のリソースページをスキップします。
Cloud コンソールで [ナビゲーション メニュー] > [API とサービス] > [ライブラリ] をクリックします。
[Compute Engine API] を探し、まだ有効になっていない場合は [有効にする] をクリックします。これはノートブック インスタンスを作成するために必要です。
Cloud コンソールで [ナビゲーション メニュー] > [API とサービス] > [ライブラリ] をクリックします。
[Google Container Registry API] を探し、まだ有効になっていない場合は [有効にする] を選択します。これは、カスタム トレーニング ジョブのコンテナを作成するために使用します。
Google Cloud コンソールのナビゲーション メニュー()で [Vertex AI] を選択します。
[すべての推奨 API を有効化] をクリックします。
ナビゲーション メニューで [ワークベンチ] をクリックします。
[ワークベンチ] ページの上部で、[インスタンス] ビューになっていることを確認します。
[新規作成] をクリックします。
インスタンスの構成:
インスタンスが作成されるまで数分かかります。作成が完了するとインスタンスの名前の横に緑色のチェックマークが付きます。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
このハイパーパラメータ調整ジョブを Vertex に送信するには、トレーニング アプリケーションのコードを Docker コンテナに配置してこのコンテナを Google Container Registry に push します。この方法により、任意のフレームワークで構築されたモデルのハイパーパラメータを調整できます。
horses_or_humans
という新しいディレクトリを作成し、このディレクトリに移動します。コードをコンテナ化する最初のステップは、Dockerfile の作成です。Dockerfile には、イメージの実行に必要なすべてのコマンドを含めます。このファイルにより、CloudML Hypertune ライブラリなど、必要なライブラリがすべてインストールされ、トレーニング コードのエントリ ポイントが設定されます。
この Dockerfile は Deep Learning Container TensorFlow Enterprise 2.9 GPU Docker イメージを使用します。Google Cloud の Deep Learning Containers には、ML およびデータ サイエンスの一般的なフレームワークが数多くプリインストールされています。
該当するイメージのダウンロード後、この Dockerfile はトレーニング コードのエントリポイントを設定します。これらのファイルはまだ作成していません。次のステップで、モデルのトレーニングおよび調整用のコードを追加します。
この時点で、horses_or_humans/
ディレクトリ内は次のようになっているはずです。
コンテナをビルドする前に、コードを詳しく見ておきましょう。ハイパーパラメータ調整サービスを使用するための専用コンポーネントがいくつかあります。
スクリプトは hypertune
ライブラリをインポートします。ステップ 1 の Dockerfile には、このライブラリの pip install を行う手順が含まれていました。
関数 get_args()
は、調整したい各ハイパーパラメータのコマンドライン引数を定義します。この例で調整するハイパーパラメータは、学習率、オプティマイザーのモメンタム値、モデルの最終隠れ層のニューロン数ですが、その他のパラメータの調整も自由に試してください。これらの引数に渡された値はその後、コード内で対応するハイパーパラメータを設定するために使用されます。
main()
関数の最後で、hypertune
ライブラリは最適化したい指標を定義するために使用されています。TensorFlow では、keras model.fit
メソッドは History
オブジェクトを返します。History.history
属性は、連続したエポックにおけるトレーニングの損失値と指標値の記録です。検証データを model.fit
に渡した場合、History.history
属性には検証損失値と指標値も含まれます。
たとえば、検証データを用いて 3 回のエポックでモデルをトレーニングし、指標として accuracy
を提供した場合、History.history
属性は以下の辞書のようになります。
ハイパーパラメータ調整サービスでモデルの検証精度を最大化する値を見つけたい場合は、その指標を val_accuracy
リストの最後のエントリ(またはNUM_EPOCS - 1
)として定義します。その後、この指標を HyperTune
のインスタンスに渡します。hyperparameter_metric_tag
には任意の文字列を選択できますが、ハイパーパラメータ チューニング ジョブを開始する際には、その文字列を再び使用する必要があります。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
your-cloud-project
の部分は使用しているプロジェクト ID で置き換えてください。gcloud config list --format 'value(core.project)'
を実行します。コンテナを Container Registry に push したら、カスタムモデルのハイパーパラメータ チューニング ジョブをいつでも開始できます。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
このラボでは、Google Container Registry のカスタム コンテナによるカスタム トレーニングを使用します。ハイパーパラメータ調整ジョブは、ビルド済みコンテナを使って実行することもできます。
[新しいモデルのトレーニング] をクリックして、ハイパーパラメータ チューニング ジョブのパラメータを入力します。
horses-humans-hyptertune
」(または任意のモデル名)を入力します。[トレーニング コンテナ] のステップで、[カスタム コンテナ] を選択します。
gcr.io/<your-cloud-project>/horse-human:hypertune
(<your-cloud-project> は使用しているプロジェクト名で置き換える)のようになります。その他のフィールドは空白のままにして、[続行] をクリックします。次に、トレーニング アプリケーションのコードで、コマンドライン引数として設定するハイパーパラメータを追加する必要があります。ハイパーパラメータを追加するには、まずその名前を指定する必要があります。この名前は argparse
に渡した引数名と一致している必要があります。
パラメータ名の learning_rate
を入力します。
[型] には [Double] を選択します。
[Min] には「0.01
」を、[Max] には「1
」を入力します。
[スケーリング] で [Log] を選択します。
[完了] をクリックします。
learning_rate
ハイパーパラメータを追加したら、momentum
および num_neurons
の各パラメータを追加します。
momentum の場合:
momentum
」と入力します。0
」を、[Max] には「1
」を入力します。num_neurons の場合:
num_neurons
」と入力します。64,128,512
」と入力します。ハイパーパラメータを追加した後、最適化する指標と目標を指定します。この指標は、トレーニング アプリケーションで設定した hyperparameter_metric_tag と同じものにしてください。
精度
] を入力します。Vertex AI ハイパーパラメータ調整サービスは、これまでの手順で構成した値を用いてトレーニング アプリケーションのトライアルを複数回にわたって実行します。サービスが実行するトライアルの数に上限を設ける必要があります。
トライアルの回数を増やすと通常は結果が改善されますが、収穫逓減のポイントがあり、それ以降はトライアルの回数を増やしても最適化しようとしている指標にほとんど影響がなくなります。少ないトライアル回数から始めて、選択したハイパーパラメータの影響力を把握してから、十分なトライアル回数までスケールアップするのがベスト プラクティスです。
並列トライアルの数に上限を設定する必要もあります。並列トライアルの回数を増やすと、ハイパーパラメータ調整ジョブの実行時間が短縮されますが、ジョブ全体の効果が低下する可能性がありますこれは、デフォルトの調整戦略では、過去のトライアルの結果を後続のトライアルでの値の割り当てに使用するためです。あまりに多くのトライアルを並列に実行した場合、まだ実行中のトライアルの結果を活用できないまま開始されるトライアルが出てきます。
デモを目的とする場合は、[最大試行数] を 15
に、[並列試行の最大数] を 3
に設定するとよいでしょう。さまざまな数値を試すことができますが、そうすると調整にかかる時間が長くなり、費用がかさみます。
[アルゴリズム] では [デフォルト] を選択します。この設定では、Google Vizier を使用してハイパーパラメータ調整のベイズ最適化が実行されます。このアルゴリズムの詳細については、ベイズ最適化を使用した Cloud Machine Learning Engine のハイパーパラメータ調整について解説したこちらのブログ記事をご覧ください。
[続行] をクリックします。
[コンピューティングと料金] ページで選択されているリージョンはそのままにしておき、[コンピューティング設定] で [新しいワーカープールにデプロイ] を選択します。
次のようにワーカープール 0 を構成します。
100
」と入力します。終了すると、ジョブ名をクリックして調整のトライアル結果を見ることができます。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
このラボで作成したノートブックを引き続き使用する場合は、未使用時にオフにすることをおすすめします。Cloud コンソールの Notebooks UI で、ノートブックを選択して [停止] をクリックします。
ノートブックを完全に削除する場合は、右上にある [削除] ボタンをクリックします。
Storage バケットを削除するには、ナビゲーション メニューの [Cloud Storage]、該当するバケットの順に選択し、[削除] をクリックします。
Vertex AI を使って次のことを行う方法を学びました。
カスタム コンテナに用意されているトレーニング コード用のハイパーパラメータ調整ジョブの起動: ここでは例として TensorFlow モデルを使用しましたが、カスタム コンテナまたは組み込みコンテナを使って任意のフレームワークで構築されたモデルをトレーニングすることもできます。 Vertex AI のさまざまな部分の詳細については、Vertex AI のドキュメントをご覧ください。
ラボでの学習が完了したら、[ラボを終了] をクリックします。ラボで使用したリソースが Qwiklabs から削除され、アカウントの情報も消去されます。
ラボの評価を求めるダイアログが表示されたら、星の数を選択してコメントを入力し、[送信] をクリックします。
星の数は、それぞれ次の評価を表します。
フィードバックを送信しない場合は、ダイアログ ボックスを閉じてください。
フィードバック、ご提案、修正が必要な箇所については、[サポート] タブからお知らせください。
Copyright 2020 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。
このコンテンツは現在ご利用いただけません
利用可能になりましたら、メールでお知らせいたします
ありがとうございます。
利用可能になりましたら、メールでご連絡いたします
One lab at a time
Confirm to end all existing labs and start this one