--- hide-toc: true --- # Amplify SDK の特長 Amplify SDK のゴールは、**組合せ最適化問題をシンプルかつ直感的に定式化し、様々なマシンやソルバーを用いて求解を実行する**ことです。そのため、Amplify SDK は以下のような特長を持っています。 (easy-to-use)= ## 🔰 直感的で使いやすい Amplify SDK は、組合せ最適化問題の中でも主に二次計画問題 (Quadratic Programming) に焦点を当てています。実数変数、整数変数、バイナリ変数 (0-1 変数)、イジング変数 ($\pm 1$ 変数) による多変数多項式で記述される数理最適化モデルの構築および求解が簡単かつ直感的に行えます。 一方で、各マシンやソルバーが対象とする最適化モデル (扱える変数の種類や多項式の次数、問題の種類) はマシンによって異なります。例えば、[量子アニーリングマシン](https://en.wikipedia.org/wiki/Quantum_annealing) は、[QUBO](https://en.wikipedia.org/wiki/Quadratic_unconstrained_binary_optimization) と呼ばれるバイナリ変数 (またはイジング変数) による制約条件無しの二次計画問題を対象とします。また、Gurobi などの MIP ソルバーは実数変数や整数変数を扱うことができます。 Amplify SDK の持つユニークな特徴として、このようなマシンやソルバーの違いを可能な限り吸収し、**変数変換**、**次数下げ**、**制約条件の実装**、**ハードウェアトポロジーへの埋め込み** などの **モデル変換**を**自動** で行うことで、直感的に組合せ最適化問題を定式化できることが挙げられます。ユーザはモデルの変換処理の詳細やマシンやソルバーの仕様について意識する必要がありません。特に、QUBO ソルバーを一般の数理最適化ソルバーのように扱うために豊富な機能が実装されていることは注目に値する点です。 (blazing-fast)= ## 🚅 高速な数式処理 二次計画問題 (あるいはそれより高次) では、多項式の項数が変数の数のべき乗に比例して大きくなり得ます。一方で、最近のイジングマシンは求解可能な問題が10万変数規模にまで拡大しています。このような大規模な問題は数ギガバイトものデータ量が要求されることになり、数式処理の高速化とメモリ効率の向上が必須となります。 Amplify SDK は同種の定式化ソフトウェアと比較しても、**非常に高速**かつ**省メモリ**で処理するように設計されています。ベンチマーク結果は[](benchmark.md)を参照してください。これは、多項式の数式処理、モデル変換、マシンに送信するデータ構築などの Amplify SDK のコア機能が C++ で実装された高速なアルゴリズムと高度なチューニングによって提供されているためです。特に、Amplify SDK は多項式配列に対して [NumPy](https://numpy.org/doc/stable/index.html) と互換性のある配列プログラミング機能を提供しています。これらの機能を活用することにより非常に高速な数式処理が実現されます。 (multiple-solvers)= ## 🔱 複数のソルバーに対応 Amplify は以下のマシンとソルバーに対応しています。今後も対応マシンは増えていく見込みです。ソルバー開発者との連携や追加対応のリクエストを歓迎しますので是非ご連絡ください。 * [量子アニーリングマシン](https://en.wikipedia.org/wiki/Quantum_annealing) * [D-Wave](https://www.dwavesys.com/) * D-Wave Advantage * Leap's Hybrid BQM Solver * Leap's Hybrid CQM Solver * [Future Release] 量子モンテカルロ法によるソフトウェアシミュレータ (同梱) * イジングマシン・アニーリングマシン * [Fixstars Amplify](https://amplify.fixstars.com/) * [Amplify Annealing Engine](https://amplify.fixstars.com/engine/) * [Fujitsu Digital Annealer](https://www.fujitsu.com/global/services/business-services/digital-annealer/) * Fujitsu DA4 Solver * Fujitsu DA3c Solver * [TOSHIBA SQBM+](https://www.global.toshiba/jp/products-solutions/ai-iot/sbm.html) * TOSHIBA SQBM+ V2 * [NEC Vector Annealing Service](https://jpn.nec.com/nec-vector-annealing-service/) * NEC Vector Annealing 2.0 * [DNP アニーリングソフトウェア](https://www.dnp.co.jp/biz/products/detail/20172671_4986.html) * 量子コンピュータ * [Future Release] [IBM-Quantum](https://www.ibm.com/quantum-computing/) (Qiskit) * [Future Release] [Qulacs](https://github.com/qulacs/qulacs) * MIP ソルバー * [Gurobi](https://www.gurobi.com/) (wide-range-users)= ## 🧑‍💻️ 幅広い対象ユーザ Amplify は、組合せ最適化を利用するアプリケーション開発から定式化やマシンに対する学術研究利用まで、様々なユーザ層向けに設計されています。Amplify を組合せ最適化問題を求解するミドルウェアとして活用することで、短時間で組合せ最適化問題を実装することができます。 また、Amplify の特長である高レベルな **モデル変換機能** (変数変換、次数下げ、制約条件の実装など) は最先端の知見に基づいており、処理内容やアルゴリズムは全てドキュメントに記述されています。さらに、モデル変換処理のアルゴリズムやパラメータの変更、モデル変換の結果や処理時間の確認、低レベルインターフェースを利用したデバッグなども行えるように設計されています。そのため、組合せ最適化問題の定式化やマシンに対する学術研究を行うユーザは、Amplify の提供する機能を活用することで、自身の新たな定式化アルゴリズムの開発やソルバーの性能調査などを効率的に行うことができます。 ## 🐲 進化し続ける Fixstars Amplify Amplify の最初のバージョンは 2020年 7月にリリースされました。当初の Amplify は、D-Wave に代表される[量子アニーリングマシン](https://en.wikipedia.org/wiki/Quantum_annealing) とそれにインスパイアされた[イジングマシン](https://en.wikipedia.org/wiki/Quantum_annealing)のクラウドサービスを便利に使うソフトウェアとして、[QUBO](https://en.wikipedia.org/wiki/Quadratic_unconstrained_binary_optimization) を前提とした数理モデルの構築を行うように設計されていました。 継続的に開発が進められる中で、Amplify がサポートとするマシンの拡大やマシンのアップデートによる機能拡充には、必ずしも [QUBO](https://en.wikipedia.org/wiki/Quadratic_unconstrained_binary_optimization) の枠組みにとらわれない、より柔軟な定式化への対応が行われてきました。また、数理最適化ソルバーとして代表的な Gurobi のサポートを追加したことや、[QUBO](https://en.wikipedia.org/wiki/Quadratic_unconstrained_binary_optimization) であっても整数変数や実数変数を取り扱いという要望もあり、Amplify にはより一般的な数理計画モデルへの対応が求められるようになりました。 2024年にリリースした Amplify の新しいバージョン (v1系) では全ての仕様が見直され、より一般的な数理計画モデルの構築を行えるように再設計されました。もちろん、これまでのように Amplify SDK で [QUBO](https://en.wikipedia.org/wiki/Quadratic_unconstrained_binary_optimization) の定式化を行うことも可能ですが、[QUBO](https://en.wikipedia.org/wiki/Quadratic_unconstrained_binary_optimization) の枠組みを超えた変数タイプや制約条件であっても、マシンやソルバーの有する求解機能に合わせ、自動的に最大限に性能を引き出せるようなモデル変換・パラメータチューニングが行われます。これにより、Amplify はより幅広いユーザや問題に対応できるようになりました。