UberとOpenAIはFiberをオープンソース化した。これは、ユーザがコンピュータークラスターに大規模な機械学習計算を実装できるようにすることを目的とした新しいライブラリである。ライブラリの主な目的は、様々な種類のコンピューティングハードウェアを活用し、アルゴリズムを動的にスケーリングし、クラスターに複雑なアルゴリズムを実装するエンジニアの負担を軽減することである。
要件は多岐にわたるめ、強化学習(RL)や人口ベースのアルゴリズムをディープラーニングなどの他のヒューリスティックとともに、十分な柔軟性を維持しながらサポートするのは、機械学習フレームワークにとっての課題である。TensorFlowやPyTorchなどの確立されたフレームワークは、最も一般的な機械学習手法の分散トレーニングのセットアップをカバーするが、これらのフレームワークは、RLベースおよび人口ベースの手法にはあまり適していない。これらの手法では、シミュレーターとの頻繁な相互連携と複雑で動的なスケーリング戦略を必要とする。Fiberは、これらの新しい要件をサポートするために、分散コンピューティングフレームワークに統合されたPythonユーザインターフェイスを提供する。
Fiberについて公開された研究論文では、フレームワークのオーバーヘッド、進化戦略、および近位ポリシーの最適化(PPO)についてライブラリを評価するために使用された実験について詳しく説明している。研究者は、FiberをIPyParallel(並列コンピューティング用のiPython)、spark、および標準のpythonマルチプロセッシングライブラリとフレームワークオーバーヘッドに関して比較した。そして、タスク期間が短い場合、FiberがiPyParallelおよびSparkよりも優れていることを発見した。これはシミュレーターを扱うときに理解する必要がある重要な指標である。Fiberによって有効化された分散バージョンのPPOのパフォーマンスは、AtariベンチマークのBreakoutでのマルチプロセッシング実装と比較して、FiberがローカルマシンよりもRLアルゴリズムをスケールできることを示している。
Fiberは、APIレイヤー、バックエンドレイヤー、およびクラスターレイヤーに分割される。APIレイヤーには、標準のPythonマルチプロセッシングモジュールと同様の要件とセマンティクスがある。同時に、分散環境で機能するように拡張されている。バックエンドレイヤーは、多数の異なるクラスターマネージャーのタスクの通信を処理できる。最後に、クラスターレイヤーには、KubernetesやPelotonなどのクラスターマネージャーが含まれている。
Fiberは、ジョブバックプロセスと呼ばれる新しい概念を導入している。これらのプロセスの1つを開始すると、現在のクラスターにFiberバックエンドと紐づく新しいジョブが作成される。親コンテナは、子プロセスが同じコンテナイメージで開始される前に、必要なファイル、入力データ、およびそのジョブの他の依存関係をカプセル化する。これにより、一貫した実行環境を保証する。次の図は、このアーキテクチャをより詳細に示している。
Fiberと、Googleの新しい分散強化学習ライブラリSeed RLの関して、最近のリリースから、大手ハイテク企業がコストの削減と最先端の機械学習アルゴリズムのトレーニングプロセスの簡素化の両方を目指していることがわかる。