khalil-research/PyEPO

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

해결하는 문제

PyEPO는 "예측 후 최적화"(predict-then-optimize) 문제를 위해 설계되었습니다. 이러한 시나리오에서 머신러닝 모델은 최적화 문제의 계수(비용이나 가중치 등)를 예측하고, 이를 사용하여 최적해를 찾습니다. 전통적으로 모델은 예측 오차를 최소화하도록 학습되지만, PyEPO는 단순히 예측의 정확도가 아닌 최종 의사결정의 품질(리그렛, regret)을 기준으로 예측기를 학습할 수 있게 합니다.

작동 원리

PyEPO는 최적화 솔버와 딥러닝 프론트엔드(PyTorch 및 JAX)를 통합하는 프레임워크를 제공합니다. 미분 불가능한 최적화 계층을 역전파하기 위해 그래디언트 서로게이트(gradient surrogates)를 사용하여 예측기를 엔드투엔드로 학습할 수 있습니다. 이 라이브러리는 선형 계획법(LP), 혼합 정수 계획법(MIP), 이차 목적 함수를 정의하기 위한 심볼릭 DSL을 포함하며, 이를 다양한 솔버 백엔드로 컴파일할 수 있습니다.

대상 사용자

선형 및 정수 계획법을 위해 예측 모델과 하위 의사결정 프로세스를 통합해야 하는 운영 연구(OR) 및 머신러닝 분야의 연구자와 실무자를 대상으로 합니다.

주요 특징

  • 다양한 그래디언트 서로게이트: 서로게이트 손실(SPO+), 섭동법(DPO, PFYL), 정규화 방법(RFWO), 블랙박스 방법(DBB, NID), 콘 정렬 추정(CaVE), 대조 학습 방법(NCE), 랭킹 학습(LTR)을 포함한 7가지 손실 함수 계열을 지원합니다.
  • 멀티 솔버 백엔드: Gurobi, COPT, Pyomo, Google OR-Tools 및 GPU 네이티브 MPAX 솔버와 호환됩니다.
  • 심볼릭 모델링: pyepo.dsl을 사용하여 최적화 문제를 한 번 정의하면 다양한 백엔드로 컴파일할 수 있습니다.
  • GPU 가속: MPAX와 통합되어 GPU에서 선형 및 이차 계획법의 배치 처리가 가능합니다.
  • 성능 최적화: Pathos를 통한 병렬 처리와 중복된 솔버 호출을 줄이기 위한 해(solution) 캐싱 기능을 포함합니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트