Skip to main content
QUICK REVIEW

[論文レビュー] EvoTorch: Scalable Evolutionary Computation in Python

Nihat Engin Toklu, Timothy Atkinson|arXiv (Cornell University)|Feb 24, 2023
Evolutionary Algorithms and Applications被引用数 4
ひとこと要約

EvoTorch は、PyTorch に統合された GPU アクセeleration と分散並列処理を備えた、スケーラブルで高次元問題に適した進化的計算ライブラリです。連続的および離散的最適化をサポートしており、可変長リストや遺伝的プログラミングなどの複雑な構造も含み、100,000 人分の集団サイズですら GPU 上でほぼ一定のウォールクロック時間を達成し、CPU ベースの手法を 10 倍以上上回る性能を発揮します。

ABSTRACT

Evolutionary computation is an important component within various fields such as artificial intelligence research, reinforcement learning, robotics, industrial automation and/or optimization, engineering design, etc. Considering the increasing computational demands and the dimensionalities of modern optimization problems, the requirement for scalable, re-usable, and practical evolutionary algorithm implementations has been growing. To address this requirement, we present EvoTorch: an evolutionary computation library designed to work with high-dimensional optimization problems, with GPU support and with high parallelization capabilities. EvoTorch is based on and seamlessly works with the PyTorch library, and therefore, allows the users to define their optimization problems using a well-known API.

研究の動機と目的

  • 現代の AI および最適化タスクにおける、スケーラブルで再利用可能かつ高パフォーマンスな進化的計算の需要に対応すること。
  • 手動でのテンソル転送を回避するように、PyTorch にネイティブに構築することで、進化的アルゴリズムに効率的な GPU アクセeleration を実現すること。
  • 標準的な連続的ベクトルを超えて、リスト、スタック、辞書などの離散的および構造化された表現を含む多様な最適化問題をサポートすること。
  • Ray を介した分散コンピューティングへのシームレスな統合により、マルチノードクラスタを横断した大規模な実験を可能にすること。
  • PGPE や XNES といった最新鋭のアルゴリズムを用いたニューロエボリューションおよびブラックボックス最適化を容易にすること。

提案手法

  • EvoTorch は、ハードウェアアクセeleration を可能にするために、解決策を PyTorch テンソルとして表現し、GPU 上でのバッチ化されたフィットネス評価を実現します。
  • 可変長シーケンスをバッチ処理および GPU 並列化可能な形で扱えるように、CList、CStack、CQueue などのカスタムで微分可能なデータ構造を導入しています。
  • GPU を複数使用した並列処理、CPU の複数コアを活用した並列処理、および Ray を用いたクラスタを横断した分散並列処理の複数モードをサポートしています。
  • フィットネス関数は、標準的な PyTorch 操作を用いて定義でき、必要に応じて自動微分のサポートも提供します。
  • PyTorch Geometric や Detectron2 などの既存の PyTorch ベースのエコシステムと統合されており、既存の ML パイプラインとの即時互換性を確保しています。
  • PGPE や XNES といった進化的アルゴリズムが、GPU 実行に最適化された形でネイティブに実装されています。

実験結果

リサーチクエスチョン

  • RQ1PyTorch エコシステム内での GPU アクセeleration を用いた進化的計算のスケーラビリティは、どのように達成できるか?
  • RQ2遺伝的プログラミングのような離散的最適化問題において、GPU を用いた並列処理が、大規模な集団サイズにおけるウォールクロック時間にどのように影響を与えるか?
  • RQ3PyTorch ベースのデータ構造が、アルゴリズム的または逐次的なフィットネス関数のベクトル化とハードウェアアクセeleration をどの程度可能にするか?
  • RQ4PyTorch ネイティブの EC ライブラリは、高次元問題において、従来の CPU ベースのライブラリを上回るスケーラビリティとパフォーマンスを発揮できるか?
  • RQ5Ray の統合により、マルチノードクラスタに跨る分散進化的計算をどのように実現できるか、かつ PyTorch との互換性を維持できるか?

主な発見

  • 1 枚の GPU 上で集団サイズが 30,000 に達するまで、EvoTorch はフィットネス評価のウォールクロック時間がほぼ一定を維持しており、強力なスケーラビリティを示しています。
  • 集団サイズが 100,000 の場合、40 スレッドの CPU で実行された CPU ベースの実装と比較して、GPU ベースの実装は 10 倍以上短時間で処理を完了しました。
  • CList などのベクトル化された構造の使用により、バッチ全体にわたる可変長リストのループを回避した効率的な操作が可能になり、コードの明確さとパフォーマンスが向上しました。
  • フィットネス評価がプログラムの逐次的・アルゴリズム的解釈を含む遺伝的プログラミングなど、複雑な離散的問題のサポートに成功しました。
  • EvoTorch は、フィットネス評価と進化的アルゴリズムの両方をエンドツーエンドで GPU アクセeleration することが可能であり、CPU 側のみまたは手動でのデータ転送に依存する手法とは異なります。
  • Ray との統合により、複数のマシンに跨るスムーズなスケーリングが可能になり、大規模な分散進化的実験を実現できました。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。