カスタム トレーニングの初心者向けガイド

この初心者向けガイドでは、Gemini Enterprise Agent Platform でのカスタム トレーニングの概要を説明します。カスタム トレーニングとは、TensorFlow、PyTorch、XGBoost などの ML フレームワークを使用してモデルをトレーニングすることを指します。

学習目標

Gemini Enterprise Agent Platform の経験レベル: 初心者

推定所要時間: 15 分

チュートリアルの内容

  • カスタム トレーニングにマネージド サービスを使用するメリット。
  • トレーニング コードをパッケージ化するためのベスト プラクティス
  • トレーニング ジョブの送信方法とモニタリング方法。

マネージド トレーニング サービスを使用する理由

新しい ML の問題に取り組んでいるとします。ノートブックを開き、データをインポートして、テストを実行します。このシナリオでは、選択した ML フレームワークでモデルを作成し、ノートブックのセルを実行してトレーニング ループを実行します。トレーニングが完了したら、モデルの結果を評価して変更を加えた後、トレーニングを再実行します。このワークフローはテストでは便利ですが、ML で本番環境アプリケーションを構築することを考えると、ノートブックのセルを手動で実行することが最も便利な選択肢ではないことに気づくかもしれません。

たとえば、データセットとモデルが大きい場合は、分散トレーニングを試してみることをおすすめします。また、本番環境の設定では、モデルのトレーニングは 1 回だけ行えば良いということはあまりありません。時間をかけてモデルを再トレーニングすることで、モデルを最新の状態を保ち、価値のある結果を出し続けられるようにします。規模を拡大してテストを自動化したい場合や本番環境のアプリケーション用のモデルを再度トレーニングしたい場合は、マネージド ML トレーニング サービスを利用すると、ワークフローが簡素化されます。

このガイドでは、Gemini Enterprise Agent Platform でのカスタムモデルのトレーニングの概要を説明します。トレーニング サービスはフルマネージドであるため、Gemini Enterprise Agent Platform が自動的にコンピューティング リソースをプロビジョニングし、トレーニング タスクを実行して、トレーニング ジョブが終了するとコンピューティング リソースを確実に削除します。なお、ここでは説明しきれないカスタマイズや機能、サービスとのインターフェース方法もあります。このガイドは、概要の説明を目的としています。詳細については、 Gemini Enterprise Agent Platform Training のドキュメントをご覧ください。

カスタム トレーニングの概要

Gemini Enterprise Agent Platform でのカスタムモデルのトレーニングは、次の標準的なワークフローに沿って行います。

  1. トレーニング アプリケーション コードをパッケージ化する。

  2. カスタム トレーニング ジョブを構成して送信する。

  3. カスタム トレーニング ジョブをモニタリングする。

トレーニング アプリケーション コードのパッケージ化

Gemini Enterprise Agent Platform におけるカスタム トレーニング ジョブの実行には、コンテナを使用します。 コンテナとは、アプリケーション コード(この場合はトレーニング コード)を、コードの実行に必要な特定バージョンのライブラリなどの依存関係とともにパッケージ化したものです。コンテナは、依存関係の管理を容易にするだけでなく、ほぼどこでも実行できるため、移植性が高まります。ポータブル コンポーネントを作成するために、パラメータと依存関係を含むトレーニング コードをコンテナにパッケージ化することが、ML アプリケーションをプロトタイプから本番環境に移行する際の重要なステップです。

トレーニング アプリケーションは、カスタム トレーニング ジョブを起動する前にパッケージ化する必要があります。この場合のトレーニング アプリケーションは、データの読み込み、データの前処理、モデルの定義、トレーニング ループの実行などのタスクを実行する 1 つまたは複数のファイルを指します。Gemini Enterprise Agent Platform トレーニング サービスは、ユーザーが提供したコードを実行するため、トレーニング アプリケーションに含めるステップはすべてユーザーに任されています。

Gemini Enterprise Agent Platform には、 TensorFlow、PyTorch、XGBoost、scikit-learn 用のビルド済みコンテナ が用意されています。これらのコンテナは定期的に更新され、トレーニング コードで必要になる共通ライブラリが含まれています。ユーザーは、これらのコンテナのいずれかを使用してトレーニング コードを実行するか、トレーニング コードと依存関係がプリインストールされたカスタム コンテナを作成するかを選択できます。

Gemini Enterprise Agent Platform におけるコードのパッケージ化には、次の 3 つの方法があります。

  1. 1 つの Python ファイルを送信する。
  2. Python ソース ディストリビューションを作成する。
  3. カスタム コンテナを使用する。

Python ファイル

この方法は簡単なテストに適しています。この方法は、トレーニング アプリケーションの実行に必要なすべてのコードが 1 つの Python ファイルに含まれており、ビルド済みの Gemini Enterprise Agent Platform トレーニング コンテナのいずれかにアプリケーションの実行に必要なすべてのライブラリが含まれている場合に使用できます。トレーニング アプリケーションを 1 つの Python ファイルとしてパッケージ化する例については、ノートブック チュートリアル カスタム トレーニングとバッチ推論をご覧ください。

Python ソース ディストリビューション

トレーニング アプリケーションを含む Python ソース ディストリビューションを作成できます。トレーニング コードと依存関係を含むソース ディストリビューションは、Cloud Storage バケットに保存します。トレーニング アプリケーションを Python ソース ディストリビューションとしてパッケージ化する例については、ノートブックのチュートリアル PyTorch 分類モデルのトレーニング、チューニング、デプロイをご覧ください。

カスタム コンテナ

この方法は、アプリケーションをより詳細に制御したい場合や、Python で記述されていないコードを実行したい場合に有用です。この場合、Dockerfile を作成し、カスタム イメージをビルドして Artifact Registry に push する必要があります。トレーニング アプリケーションをコンテナ化する例については、ノートブック チュートリアルの Profiler を使用してモデルのトレーニング パフォーマンスをプロファイリングするをご覧ください。

コードを Python ソース ディストリビューションやカスタム コンテナとしてパッケージ化する場合は、次のようにアプリケーションを構築することをおすすめします。

training-application-dir/
....setup.py
....Dockerfile
trainer/
....task.py
....model.py
....utils.py

すべてのトレーニング アプリケーション コードを保存するディレクトリ(この場合は training-application-dir)を作成します。このディレクトリには、Python ソース ディストリビューションを使用している場合は setup.py ファイル、カスタム コンテナを使用している場合は Dockerfile を保存します。

どちらのシナリオでも、この上位ディレクトリにはサブディレクトリ trainer も含まれ、そこには、トレーニングを実行するためのすべてのコードが置かれています。trainer の中では、task.py がアプリケーションへのメインのエントリポイントです。このファイルがモデルのトレーニングを実行します。すべてのコードをこのファイルに含めることもできますが、本番環境のアプリケーションでは、model.pydata.pyutils.py などのファイルが加わる可能性があります。

カスタム トレーニングの実行

Gemini Enterprise Agent Platform のトレーニング ジョブでは、コンピューティング リソースのプロビジョニング、トレーニング アプリケーション コードの実行、トレーニング ジョブ終了後のコンピューティング リソースの削除が自動的に行われます。

より複雑なワークフローを構築するようになると、トレーニング ジョブの構成、送信、モニタリングには Agent Platform SDK for Python を使用することになるでしょう。しかし、カスタム トレーニング ジョブを初めて実行する場合は、コンソールを使用するほうが簡単です。 Google Cloud

  1. Google Cloud コンソールで、[トレーニング] ページに移動します。

    [トレーニング] に移動

  2. [新しいモデルのトレーニング] をクリックします。

  3. モデルの [トレーニング方法] で、[カスタム トレーニング(上級者向け)] を選択します。

    トレーニング方法を指定する

  4. [トレーニング コンテナ] セクションで、アプリケーションのパッケージ化方法に応じて、[ビルド済みのコンテナ] または [カスタム コンテナ] を選択します。

    トレーニング コンテナを指定する

  5. [コンピューティングと料金] で、トレーニング ジョブのハードウェアを指定します。単一ノード トレーニングでは、Worker Pool 0 のみを構成する必要があります。分散トレーニングの実行に関心がある場合は、他のワーカープールについて理解する必要があります。詳細については、分散トレーニングをご覧ください。

    トレーニングのコンピューティング

推論コンテナの構成は任意です。Gemini Enterprise Agent Platform でモデルをトレーニングし、生成された保存済みモデルのアーティファクトにアクセスするだけであれば、この手順は省略できます。生成されたモデルを Gemini Enterprise Agent Platform マネージド推論サービスでホストしてデプロイする場合は、推論コンテナを構成する必要があります。詳細については、 カスタム トレーニング済みモデルから推論を取得するをご覧ください。

トレーニング ジョブのモニタリング

トレーニング ジョブは Google Cloud コンソールでモニタリングできます。実行されたすべてのジョブの一覧が表示されます。何か問題が発生した場合は、特定のジョブをクリックしてログを調べることができます

トレーニング ダッシュボード

ノートブック

動画