Search Unity

2017 年 9 月 17 日、Unity Machine Learning Agents Toolkit(ML-Agents)の最初のバージョンがリリースされました。ゲーム開発者や AI 研究者が、機械学習分野の最新の成果を利用してインテリジェントなエージェントを訓練して組み込むためのプラットフォームとして Unity を使用できるようにする、というシンプルなミッションでした。最初のバージョンをリリースして以来、コミュニティとツールキットは大きく成長し、プロジェクトは 8400 以上の GitHub スターを獲得しました。そして本日、2 年半以上の開発期間と 15 回以上のリリースアップデートを経て、ML-Agents Unity パッケージがバージョン 1.0 となり、プレビュー版パッケージとして利用可能になったことをお知らせいたします。また、ML-Agents の新しい製品とリソースのページをローンチしたことも合わせてお知らせいたします。

ML-Agents はオープンソースのプロジェクトで、ゲームやシミュレーションをインテリジェントなエージェントを訓練するための環境として利用できるようにするものです。シーンを設定し、その中でエージェントを定義するための C# SDK と、2D、3D、VR/AR 環境でエージェントを訓練するための最先端の機械学習ライブラリが含まれています。

本日、ML-Agents は製品版に向けて重要なマイルストーンを迎えました。C# SDK は最初のメジャーバージョンである v1.0 に移行し、現在、Unity パッケージマネージャーから com.unity.ml-agents というプレビューパッケージとして提供されています。これにより、ユーザーには 3 つの重要なメリットがもたらされます。

  • API の安定性:ML-Agents C# SDK は、2 年以上の開発期間を経て、独自の Unity デモ環境(ロコモーションタスクからマルチプレイヤーゲーム、ロボットアームまで)から Unity で作られた実際のゲームまでを使ってテストを行い、進化してきました。その結果、どんなゲームや Unity 環境にも簡単に統合できる、柔軟性があり、機能が豊富で安定した API を実現しました。
  • インストールが簡単:GitHub プロジェクトをクローンすることなく、パッケージマネージャーから直接 ML-Agents Unity パッケージを使い始めることができます。
  • 検証済みの Unity パッケージ(近日公開予定):ML-Agents Unity パッケージは、2020.2 版の Unity エディターで検証済みパッケージになる予定です。

このブログ記事では、ML-Agents の簡単な歴史、最新のマイルストーンリリースである ML-Agents Release 1 の概要、そして今後予定されている ML-Agents の改良について紹介します。

ML-Agents の簡単な歴史

最初に ML-Agents を紹介したブログ記事では、次のように書きました。

「世界で最も人気のある制作エンジンである Unity は、機械学習とゲームの交差点に位置しています。機械学習の研究者が最も強力なトレーニングシナリオを利用できるようにすることは、私たちの使命であり、最新の機械学習技術を利用できるようにすることでゲームコミュニティに恩返しをすることは、非常に重要なことです。」

シンプルなトレーニング環境から複雑なトレーニング環境までカバーする ML-Agents

その後の 2 年半の間に、ML-Agents はその使命を忠実に守り、ゲーミングと機械学習のコミュニティの中で進化してきました。私たちは、カリキュラム学習のような新しい学習オプションの追加、スパース報酬環境のための Curiosity モジュールの実現、学習の速度と効率の向上、マルチエージェントシナリオのための Self-Play の有効化、ML-Agents で学習されたすべてのモデルへのネイティブでクロスプラットフォームな推論サポートの提供など、ツールキットを継続的に改善してきました(ML-Agents のすべての機能については、GitHub の ML-Agents 概要ページを参照してください)。これらの改善により、Puppo のような新しいデモや環境、Jam City の『Snoopy Pop』や Carry Castle の『Source of Madness』のような実際のゲームとの統合が可能になったことを、私たちは実際に目の当たりにしてきました。

『Snoopy Pop』(左上)、『Puppo Day at the Races』(右上)、『Source of Madness』(下)

また、特に AI 研究者の皆さんに向けて、ML-Agents を使って視覚、制御、計画のベンチマークとなる「Obstacle Tower Environment」を構築し、コンテストも開催しました。また、他の研究者や研究室でも、研究ベンチマークを作成するために ML-エージェントを採用しているのを見てきました。代表的な例としては、マルチエージェント環境「Arena」、「Animal AI Olympics」、連続制御の「Marathon Environments」などがあります。

Obstacle Tower Environment(左上)、Marathon Environments(右上)、Animal AI Olympics(左下)、Arena(右下)

最初のリリース以来、ML-Agents コミュニティは、AI 研究者、ゲーム開発者、学生のゆるやかな連帯から、何千人もの参加者が参加するコミュニティへと成長しました。これには、オンラインまたは直接私たちに共有された、ML-Agents のいくつかの創造的なデモンストレーションも含みます。その結果、私たちの GitHub リポジトリは 8,400 以上のスターと 2,300 回以上のフォークを獲得し、また、私たちの研究論文「Unity: A General Platform for Intelligent Agents」は 115 回以上引用されています。

ML-Agents Unity パッケージ v1.0

本日、最新リリースML-Agents Unity パッケージv1.0.0 となり、Unity パッケージマネージャーのプレビューパッケージとして利用できるようになりました。私たちの研究論文「Unity: A General Platform for Intelligent Agents」も、ML-Agents Release 1 を反映して更新されました。

このバージョン変更は、ML-Agents の中核に関わる 2 つの改善を反映したものです。

  1. パッケージの構成:1 つは Unity パッケージ、もう 1 つは Unity から Python への通信と機械学習アルゴリズムを含む 3 つの Python パッケージです。私たちのトレーニングアルゴリズムを変更したり、独自のアルゴリズムを構築したりするような研究者でない限り、Unity パッケージをプロジェクトに統合し、私たちが用意したトレーニング CLI を使用するだけで、ML-Agents とのやり取りを行うことができます。
  2. API の改善。数か月前に、C# SDK をより簡単に、より直感的に使えるようにするために全体的な改修を開始しました。その結果、2019 年 9 月の v0.10.0 から始まり、最新のリリースに至るまで、数回のリリースに分けて段階的に大規模な改善が行われました。これらの変更点の詳細は、リリースノートに記載されています。

ML-Agents Release 1 から、GitHub でリリースが行われるたびに、ML-Agents を構成する各パッケージの新しいバージョンが公開されます。ML-Agents Release 1 では、以下のバージョンを設定しています。

  • com.unity.ml-agent(v1.0.0、C#)
    • パブリック API が定義されており、将来のリリースではセマンティックバージョニングに従うことになります。さらに、このパッケージはプレビュー版パッケージとして Unity パッケージマネージャーに追加されました。Unity 2020.2 では、検証済みパッケージのリリースを予定しています。
  • Communicator(v1.0.0、C#/Python)
    • Unity と Python 間の通信プロトコルが安定化し、セマンティックバージョニングに従うことになります。機能は、同じメジャーバージョンの通信プロトコルを使用している C#と Python の両方のパッケージ間で後方互換性と前方互換性を持つようになります。
  • ml-agents, ml-agents-envs, gym-unity(v0.16.0, Python)
    • Python のパッケージは今後も進化、改善を続けていきますが、後方互換性は保障されません。CLI の将来的な改善により、前のバージョンとの互換性がない形での変更が発生する可能性がありますが、近日中に CLI のファイナライズと安定化を行う予定です。

パッケージのバージョニングと GitHub リリースの対応する変更の詳細はバージョニングのページで確認できます。

今後の予定

ML-Agents Release 1 は、非常にエキサイティングな旅の始まりです。私たちは、学習アルゴリズムの性能と効率を改善し、皆さんからのフィードバックに基づいて Unity パッケージを進化させ、ML-Agents のゲームや産業用アプリケーションから着想を得つつ、サンプル環境を追加することで、ツールキットの開発を続けていく予定です。ML-Agents フォーラムでは、私たちのロードマップに関する最新情報をご提供しています。また、ロードマップに対するご意見やご要望も同じフォーラムでお受けします。

中核となるツールキットの進化に加えて、いくつかのエキサイティングな改良が計画されていますので、その概要を簡単にご紹介します。

Unity 2020.2 で検証済みパッケージへ

Unity であるパッケージを検証済みにすることには、そのパッケージが重要なテストを受け、特定のバージョンの Unity で安全に動作することが検証されていることを伝え、ユーザーに安心感を提供するという意味があります。つまり、もし皆さんが製品版のゲームに ML-Agents を使いたいと思ったときに、Unity として皆さんをサポートできるようにしたいと考えているということです。私たちは、Unity 2020.2 に向けて、ML-Agents の検証済みパッケージのリリースを計画しています。これは同時に、Unity 2020 の LTS サイクルで ML-Agents の Unity パッケージをサポートする予定であるということにもなります。

ML-Agents Cloud

ML-Agents Cloud でトレーニングをスケールアウト

ML-Agents のユーザーからのフィードバックでよく受けるものとして、Python をインストールせずに学習したいというものがあります。また、ユーザーがローカルマシン上で学習を行うには限界があり、一度に学習できる環境やハイパーパラメーターのバリエーションの数が制限されてしまうこともあります。ML-Agents Cloud は、ML-Agents のユーザーがスケーラブルなクラウドインフラ上でトレーニングを行うことができるようにするためのクラウドサービスで、今年中に提供を開始する予定です。ユーザーは、多数の学習セッションを同時に送信したり、多くのマシンにまたがって学習セッションを簡単にスケールアウトして、より速い結果を得ることができるようになります。

現在、ML-Agents Cloud への早期プレビューアクセスのための登録を受け付けています。既存の ML-Agents ユーザーで、実験のスケーリングや管理にお困りの方はぜひご検討ください。登録はこちらから行えます。

DOTS の世界での ML-Agents

Unity のコアは、Data-Oriented Technology Stack(DOTS)を使って再構築されつつあります。DOTS は、ビルドのサイズを小さくして高速に実行できるようにすることで、パフォーマンスに大きなメリットをもたらします。これらの利点は、シミュレーションや機械学習の文脈ではさらに大きくなります。このような事情から、DOTS 用に構築されたバージョンの ML-Agents を Unity 社内で試作しています。DOTS プロトタイプをサンプルシーン(上記参照)や「MegaCity」や「TinyRacing」などの Unity デモに統合することにすでに成功しています。その結果は目を見張るものがありました。MegaCity のような複雑で大規模な環境でも、標準的なノートパソコンを使ってわずか数時間でエージェントに学習させることができました。今年中には、DOTS 用の ML-Agents の実験的なバージョンをリリースする予定です。

 

ゲームや Unity プロジェクトを DOTS を使って開発されていて、ML-Agents に興味をお持ちの方は、ぜひメールでご連絡ください。私たちは、DOTS 用の ML-Agents の改良に協力していただけるプレビューユーザーを募集しています。

ロボティクス

Unity のロボティクス研究者にとって、NVIDIA PhysX 4.0 を搭載した Unity は、ロボティクスシミュレーションの品質を劇的に向上させました(「Unity 2019.3 における物理関連の変更事項」を参照)。Unity 2020.1 には、Nvidia の PhysX 4.1 を搭載した新しいアーティキュレーション関節システムが含まれており、ロボットアームと連続関節のシミュレーションが劇的に向上しています。このシステムでは、Featherstone のアルゴリズム、次元削減された座標表現、新しい非線形反復ソルバーを使用して、関節内の不要なストレッチを大幅に削減しています。実際に、多くの関節を連鎖させても、安定した正確な動きを実現できるようになりました。

Unity 2020.1 ベータ版では、すでに新しいアーティキュレーション関節システムを利用することができます。上記のロボティクス環境を試してみたい方や、独自のロボティクス環境を作成するためのサンプルプロジェクトとして使用したい方は、Unity Robotics Demo プロジェクト(ML-Agents Release 1 と統合されています)をチェックしてみてください。さらに、ML-Agents 内のサンプル環境を拡張して、さらにロボティクス環境や連続制御環境を追加する予定です。

ML-Agents Release 1 を使った実装方法を学びたい方へ

Immersive Limit と提携して Unity Learn コース「ML-Agents: Hummingbirds」を作成しました。このコースでは、ML-Agents Release 1 を使った実装方法を演習、コードのウォークスルー、有益なディスカッションを通して学ぶことができます。

6 自由度を持ち、複雑な経路を飛ぶハチドリを花のあるところまで連れていく難しいタスクを遂行するよう、ニューラルネットワークを学習させる方法を学びます。このコースの終了時には、ML-Agents Release 1 の能力を活用してインテリジェントなエージェントを作成し、Unity のゲームやシミュレーションプロジェクトに統合する方法を十分に理解できるようになるでしょう。

このコースは 5 月末に提供予定です。ご興味のある方は、こちらのフォームからご登録ください。コースに関する最新情報をご提供いたします。

謝辞

Unity ML-Agents チームを代表して、皆様の長年にわたる継続的なご支援に感謝いたします。引き続き、ML-Agents へのご期待とご支援を頂ければ幸いです。

Unity ML-Agents チームメンバー(名前は画像の左から右、上から下の順):Jason Bowman、Jeffrey Shih、Andrew Cohen、Yuan Gao、Chris Elion、Arthur Juliani、Ervin Teng、Chris Goy、Anupam Bhatnagar、Jonathan Harper、Vincent-Pierre Berges、Marwan Mattar。画像には写っていませんが、Hunter Henry もメンバーの一員です。

次のステップ

ML-Agents の利用を開始したい方は、まず GitHub 上のホームページをチェックしてください。

このリリースで提供されている機能をお使いの方は、ぜひご連絡ください。ML-Agents に関するフィードバック、一般的な問題、質問などは、ML-Agents フォーラムに連絡するか、直接メールでお気軽にお問い合わせください。バグに遭遇した場合は、ML-Agents GitHub の issues ページから連絡してください。

機械学習とゲームのエキサイティングな交差点で働きたい方は、いくつかのポジションで求人を出しておりますので、ぜひご応募ください。

13 replies on “ML-Agents Unity パッケージ v1.0 を発表しました”

Fantastic. I’ve been watching and using this project for a while now and I’m glad that it is finally achieving 1.0 status and even moreso, getting easier to install. This should greatly increase adoption!

Congratulations! the next generation of video Games are coming and im sooo excited for that ,

Congratulations, I have only been following the project since 0.13, but it has been a cavalcade of upgrades. Good work getting the job done with the world shifting around you.

I have been waiting for this release Thank you unity and ml-agents team. Love your work!!!

Hi Alsharefee – you can use ML-Agents today w/o Anaconda (either through a straight install with Python or using virtual envs). Let me know if that answers your question.

Comments are closed.