khalil-research/PyEPO

A PyTorch-based End-to-End Predict-then-Optimize Library for Linear and Integer Programming

解決する課題

PyEPOは「予測・最適化」(predict-then-optimize) 問題のために設計されています。このようなシナリオでは、機械学習モデルが最適化問題の係数(コストや重みなど)を予測し、それを用いて最適解を求めます。従来、モデルは予測誤差を最小化するように学習されてきましたが、PyEPOでは予測の精度だけでなく、最終的な意思決定の質(リグレット)に基づいて予測器を学習させることが可能です。

仕組み

PyEPOは、最適化ソルバーとディープラーニングのフロントエンド(PyTorchおよびJAX)を統合するフレームワークを提供します。微分不可能な最適化層をバックプロパゲーションするために勾配サロゲートを使用し、予測器のエンドツーエンド学習を実現します。このライブラリには、線形計画法 (LP)、混合整数計画法 (MIP)、および二次計画問題を定義するためのシンボリックDSLが含まれており、これらを様々なソルバーバックエンドにコンパイルできます。

対象ユーザー

オペレーションズ・リサーチおよび機械学習の分野で、予測モデルと下流の意思決定プロセスを統合する必要がある研究者や実務者(特に線形計画法や整数計画法を扱う方)を対象としています。

主な特徴

  • 多様な勾配サロゲート: 7つの損失関数ファミリーをサポート。サロゲート損失 (SPO+)、摂動法 (DPO, PFYL)、正則化手法 (RFWO)、ブラックボックス手法 (DBB, NID)、錐アライメント推定 (CaVE)、対照学習手法 (NCE)、ランキング学習 (LTR) が含まれます。
  • マルチソルバーバックエンド: Gurobi, COPT, Pyomo, Google OR-Tools、およびGPUネイティブなMPAXソルバーと互換性があります。
  • シンボリックモデリング: pyepo.dsl を使用して最適化問題を一度定義すれば、異なるバックエンドにコンパイル可能です。
  • GPUアクセラレーション: MPAXと統合されており、GPU上で線形計画および二次計画のバッチ処理が可能です。
  • パフォーマンス最適化: Pathosによる並列処理や、冗長なソルバー呼び出しを減らすための解のキャッシュ機能を備えています。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト