コンテンツに移動
デベロッパー

ゲームにおける機械学習テストとその重要性

2022年11月18日
Google Cloud Japan Team

※この投稿は米国時間 2022 年 10 月 28 日に、Google Cloud blog に投稿されたものの抄訳です。

はじめに

機械学習(ML)はビデオゲームの開発に欠かせません。ゲーム内の特定のアクションを予測し、特に価値の高いプレーヤーを特定してリーチすることで、結果の向上につながります。そのためには、舞台裏で起きているテストをすべて追跡する必要があります。Google Cloud は最近、Vertex AI Experiments という新機能の一般提供を発表しました。この機能を使用すれば、ゲーム会社は ML テストを追跡して、ML エンジニアリング チームとデータ サイエンス チームをまたいで分析情報やベスト プラクティスを把握できます。

このブログ投稿では、EA Sports の FIFA ビデオゲーム シリーズから人気のビデオゲームのデータセットに焦点を当てます。このデータセットを使用して ML パイプラインを構築し、プレーヤーの全体的な評価を予測します。次に、各種のハイパーパラメータを使用してテストを行い、Vertex AI Experiments で追跡して、最終的にゲーム会社が本番環境に導入する、最もパフォーマンスが良い実行を見極めます。 

テストに関する課題

ML テストの入力には、さまざまな種類があります。仮説を検証するために、特定のアルゴリズムやハイパーパラメータの値をテストし、他の選択肢よりパフォーマンスが高いかどうかを判断する場合もあります。ML テストは一般的に行われていますが、ゲーム会社のデータ サイエンス チームからはしばしば、次のような不満が寄せられています。

当社のチームはさまざまなハイパーパラメータやアルゴリズム、トレーニング データセット、さらには各種ハードウェアまで試しながら、機械学習モデルを開発していました。あらゆる微調整を行い、手ごたえのある結果が得られました。しかし残念ながら、各種のパラメータや反復処理の追跡を行っていなかったため、労力をかけたにもかかわらず、どれが最も効果が高いかは判断できませんでした。

落胆しているゲーム会社のデータ サイエンティストより

ゲーム会社のデータ サイエンティストをはじめとする ML 担当者は、テストに熟練しています。問題にぶつかるのは、豊富な情報を含む実行済みの ML テストのすべてのレコードを追跡しようとするときです。

では、追跡が難しいのはなぜでしょうか。それにはいくつかの理由があります。1 つ目は、複数のトレーニング ジョブの実行を追跡するのには手間がかかるためです。油断していると、どの実行が有効でどの実行が有効でないか、簡単に見失ってしまいます。2 つめは、チームの規模が大きくなるにつれて、問題が複雑さの度合いを増していくからです。すべてのメンバーがテストを追跡するわけではありません。また、一部のメンバーのみが結果を知っていて、他のメンバーに結果が共有されない場合さえあります。3 つめは、データ キャプチャに時間がかかるためです。手動の方法(スプレッドシートによる追跡など)で得られる情報は一貫性に欠けるうえ、不完全なことも多く、分析しづらいのです。

しかし現在は、従来の効果の低い方法から脱却することが可能になりました。データ サイエンス チームと ML エンジニアリング チームがテストの管理、モデルやパイプライン実行の比較、新たな知見の発見をより適切に行えるプラットフォームが存在するからです。

Vertex AI Experiments の概要と仕組み

Vertex AI Experiments の概要を簡単にご説明しましょう。Vertex AI Experiments は、1 か所でより効果的に ML テストをすべて追跡できるサービスです。Vertex AI Experiments で追跡するテストは、一連の実行で構成されます。ビデオゲームの例では ML パイプラインの実行の追跡に焦点を当てますが、テスト内の実行はローカルでトレーニングしたモデルの場合もあります。

Vertex AI Experiments は、Vertex AI スイート内の他のサービスと連携し、さまざまな実行の要素をより効果的に追跡することが可能です。使用するツールは WorkbenchPipelinesExperimentsML Metadata です。以下の図は、これらのツールが連携して関連データをキャプチャし、最終的に本番環境に導入される最もパフォーマンスが高い実行を見つけ出す過程を示したものです。

https://storage.googleapis.com/gweb-cloudblog-publish/images/Figure_1.max-1500x1500.png
図 1: Vertex AI Experiments は複数のツールを活用

最初に必要なこと

Vertex AI Experiments によるテスト実行の追跡は付加価値サービスであり、追加料金は発生しません。ユーザーがテストで使用したリソースのみが請求対象となります。これについては Vertex AI の料金に詳細が記載されています。また、Compute Engine API、Vertex AI API、Notebooks API など、関連する API を有効にしていれば、テスト内の実行の追跡と比較をすぐに開始できます。

ML パイプライン実行を追跡し、プレーヤーの評価をより適切に予測   

ビデオゲームでの Vertex AI Experiments の動作を確認するため、ML パイプラインを構築し、Vertex AI Experiments 内のさまざまな実行を追跡してみましょう。ここでは重要な一部のみをお見せしますが、この例の全パイプライン コードはこちらの Codelab でご確認いただけます。この例では前述のとおり、人気の EA Sports の FIFA ビデオゲーム シリーズのデータセットを活用し、プレーヤーの全体的な評価を予測しています。テストでは以下を行います。

  • ハイパーパラメータのさまざまな値を使用してプレーヤーの評価を予測するために、カスタム Keras 回帰モデルをトレーニングする

  • Kubeflow パイプライン SDK を使用して、スケーラブルな ML パイプラインを構築する

  • 5 ステップのパイプライン(Cloud Storage からのデータの取り込み、データのスケーリング、モデルのトレーニング、その評価、結果としてできたモデルの Cloud Storage への保存)を作成して実行する

  • Vertex ML Metadata を活用し、モデルやモデルの指標などのモデル アーティファクトを保存する

  • Vertex AI Experiments を活用し、ハイパーパラメータのさまざまな値を使用した多様なパイプライン実行の結果を追跡し比較する

ML パイプライン実行を構築、実行、追跡するために、まず、以下のようにいくつかのライブラリをインポートします。

  • Kubeflow Pipelines SDK を使用して、コンポーネントの構築と接続によりパイプライン化を行う

  • Vertex AI SDK により、Vertex Pipelines でパイプラインを実行し、テスト内で実行を追跡する

読み込んでいます...

テストの実行を開始するには、パイプライン トレーニング コンポーネントとして定義することでトレーニング ジョブを指定する必要があります。コンポーネントはデータセットとハイパーパラメータ(例: DROPOUT_RATELEARNING_RATEEPOCHS)を入力および出力モデルの指標(例: MAE および RMSE)として取り込み、また、モデル アーティファクトを取り込みます。

これに加えて、以下の点に留意してください。モデル アーキテクチャにいくつかのパラメータを含め、Keras モデルを微調整するために使用するハイパーパラメータのさまざまな値を、より簡単にテストして渡すことができるようにしています。コードの最後のステップでは、ML メタデータを操作し、モデルの指標とモデル アーティファクトそのものを保存する方法も確認できます。

読み込んでいます...

パイプラインを定義してコンパイルしたら、パイプライン実行を送信する準備が整います。各実行に渡したい各種のハイパーパラメータ値を定義する「実行」と呼ばれる変数を作成することで、テストをスピードアップできます。

読み込んでいます...

次に for ループを活用して、各実行に関連付けられたさまざまなハイパーパラメータ値を正常にパイプライン ジョブにフィードします。

読み込んでいます...

これで、Vertex AI Experiments の動作を確認できるようになりました。Vertex AI SDK for Python は現在、実行に関する情報を返す get_experiment_df メソッドをサポートしています。これを使用して、モデルの指標などの詳細や、任意の実行の現在の状況を把握できます。

読み込んでいます...

Vertex AI SDK を活用してテストを表示したら、パイプラインの異なる実行をより効果的に比較でき、最もパフォーマンスが良い、本番環境に導入すべき実行を特定することができます。これはマネージド ノートブックでプログラマティックに行うことも、コンソール自体で行うことも可能です。

https://storage.googleapis.com/gweb-cloudblog-publish/images/Figure_2.max-1400x1400.png
図 2. テスト内でプログラマティックにパイプライン実行を表示

ここで、ゲーム会社のデータ サイエンティストは上記の結果からどのような情報を得られるのか、疑問に思われるかもしれません。テストの出力には、各パイプライン実行につき 1 行ずつ、合計 5 行の結果が含まれています。MAERMSE はどちらも平均的モデル予測エラーの測定であるため、ほとんどの場合、この 2 つの指標の値は低い方が望ましいです。

Vertex AI Experiments の出力から、両方の指標で最もパフォーマンスの高い実行は最後の実行で、dropout_rate が 0.001、learning_rate が 0.001、epochs のカウントが 20 であることがわかります。このテストに基づくと、ゲーム会社が最終的に本番環境で使用するモデル パラメータは、最後の実行に含まれるものになります。この実行で最も優れたモデル パフォーマンスを得られたからです。

まとめ

ML 担当者はこれまで、旧式のドキュメントや Excel シートを使用して行き当たりばったりに ML テストを追跡していました。これからはそんな方法を取る必要はなくなります。Vertex AI Experiments を使用すれば、ML テストの機能をより効果的に活用できるのです。効果的な追跡を行うことで、豊富な分析情報やベストプラクティスを得らるようになります。また、大規模なチーム全体にわたって行われているテストの分析情報も取得できます。

次のステップとして、ぜひ実際に Vertex AI Experiments をお試しください。Codelab や下記のリソースをご覧いただくと、試用を開始するために必要な情報をご確認いただけます。ご精読ありがとうございました。質問やチャットをご希望の場合は、こちらで著者をお探しください。R.E. Wolfe [Twitter | LinkedIn]


- 機械学習スペシャリスト R.E. Wolfe 
投稿先