最新バージョンの紹介¶
このページでは、Amplify AE の最新バージョン (v1.0系) における主な改良点と新機能について説明します。最新版は従来の Amplify AE (v0.9系) と比較して、次の主要な点で大幅な性能向上を実現しています。
GPU 最適化アルゴリズムの刷新
高次多項式(最大 4 次)への対応
制約条件の取り扱い強化(不等式制約、制約重みの自動調整)
現在、両方のバージョンが並行して提供されていますが、最新版への移行を強く推奨します。
最新版への移行方法¶
Amplify SDK を使用している場合、従来版の Amplify AE から最新版への移行はクライアントクラスの置き換えのみで行えます。パラメータ設定の方法もほぼ同様ですが、一部名称が変更されています。
以下は置き換えの一例です。
from amplify import FixstarsClient
client = FixstarsClient()
# API トークンを設定
client.token = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
# 実行時間を1秒に設定
client.parameters.timeout = 1000
from amplify import AmplifyAEClient
from datetime import timedelta
client = AmplifyAEClient()
# API トークンを設定
client.token = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
# 実行時間を1秒に設定 (注: パラメータ名が変更)
client.parameters.time_limit_ms = timedelta(milliseconds=1000)
AmplifyAEClient の使い方の詳細については、クライアントページを参照してください。
アップデートの背景¶
従来版の Amplify AE は、大規模問題に対応可能な GPU ベースのイジングマシンでしたが、QUBO ソルバー特有の課題を抱えていました。
不等式制約を扱うためには、補助変数の導入が必要であること
制約ペナルティの重み設定において、チューニングの手間がかかること
3 次以上の多項式を扱うためには、次数下げ処理が必要であること
これらの課題は、求解の精度や速度の低下を招く要因となっていました。
最新版の Amplify AE は、これらの課題を根本から解決するためにアルゴリズムを刷新しています。最大 4 次までの多項式を直接扱えるようになり、さらに、制約条件に対する重みの設定が不要になりました。これにより、従来バージョンや他社ソルバーとは一線を画す、圧倒的なパフォーマンスを実現しています。
ベンチマークによる性能検証¶
最新の Amplify AE の実力を、一般的なベンチマーク問題および弊社が過去に対応した実問題で測定しました。比較対象として、他社(A社、B社)のソルバーの結果も掲載しています。
グラフの横軸は実行時間、縦軸は目的関数の値です。プロットが左下にあるほど、速く良い解が得られることを示します。
2 次ナップサック問題¶
2 次ナップサック問題において、最新の Amplify AE は極めて良い求解性能を記録しました。問題セットには ベンチマーク問題集 から jeu_300_50_1 を使用しました。この問題セットは、300個のアイテムから50個を選択するナップサック問題です。
ソルバー名 |
最適解の取得時間 |
|---|---|
Amplify AE |
0.233 s 🏆 |
A 社ソルバー |
4.08 s |
B 社ソルバー |
50.0 s |
最適解への到達速度は、A 社ソルバーの 18 倍、B 社ソルバーの 217 倍に達しました。
実企業の人員シフト最適化問題¶
多数の制約(等式制約 365 個、不等式制約 720 個)が絡み合う複雑な人員シフト問題でも、Amplify AE はその実力を発揮しました。
ソルバー名 |
最良解の目的関数値 (実行60秒) |
|---|---|
Amplify AE |
23.7 🏆 |
A 社ソルバー |
24.5 |
B 社ソルバー |
(実行可能解を得られず) |
A 社ソルバーの 6 倍の速度で最適解に到達しました。B 社ソルバーは複雑な制約条件の組み合わせに対処できず、実行可能解が見つかりませんでした。
制約条件の対応強化¶
以下は複数種類の制約条件が複雑に絡み合う実課題に基づく生産計画問題における求解結果の比較グラフです。
この結果から、最新版は従来版と比較して 100 倍以上高速に実行可能解を発見し、さらに従来版よりも質の高い解に到達していることが分かります。実運用で直面する複雑な制約条件を持つ問題において、Amplify AE は大幅な性能向上を実現しています。
制約重みの自動調整¶
最新版ではこの求解性能を従来より遥かに手軽にご利用いただけます。従来の最適化において、特に多くのユーザ様が躓かれていたのが制約の重み調整でした。最新版ではこの問題を抜本的に解決する機能を取り入れています。
移行はシンプルです。FixstarsClient クラスを AmplifyAEClient クラスに置き換えるだけで、制約重み調整が不要になります。
例えば一般的な QUBO ソルバーにおいて制約重みの考慮が必須な問題である巡回セールスマン問題(TSP)でも次のように重み不要で最大の求解性能を発揮して求解できます。
model = Model(
route_length,
(one_hot(q, axis=1) + one_hot(q, axis=0)) * distance.max(),
)
model = Model(
route_length,
(one_hot(q, axis=1) + one_hot(q, axis=0)),
)
制約の重み調整は QUBO ソルバー特有の課題の一つで、制約の多い複雑な問題ほど適切な重みを見つけることは簡単ではありません。最新版の Amplify AE では、複数の制約条件式間の重み、目的関数と制約条件の間の重みのどちらについても自動で調整します。これにより、ユーザの定式化時の手間を削減し、常に最大の求解性能を発揮します。また、最適な重みが与えられるために手動チューニング時よりも高い求解精度を実現します。
不等式制約に補助変数が不要¶
最適化を複雑化させる要因の一つとして不等式制約の取り扱いも挙げられます。最新版の Amplify AE ではアルゴリズムの刷新により、不等式制約を含む問題に対する性能が飛躍的に向上しました。こちらも定式化の変更は不要でAmplifyAEClient クラスに変更いただくだけでご利用いただけます。
不等式制約の取り扱いも QUBO ソルバーに特有の課題です。不等式制約の表現には補助変数を新たに発行する必要があるため、問題サイズが増大し求解が難しくなるという課題があります。従来は定式化の段階で一部の不等式制約について、不正確ながら問題が解きやすくなるペナルティ関数を選択していただくことで問題を緩和する(緩和法)などの工夫が必要な場合がありました。
最新版の Amplify AE では、 ソルバー内部でペナルティ関数を生成する機能を導入することで、不等式の正確な表現を維持しながら、問題サイズに影響を与えず取り扱えるようになりました。不等式制約についてもユーザの試行錯誤を削減し、より本質的な問題へ集中することを可能とします。
高次多項式への対応¶
従来版の Amplify AE を含む QUBO ソルバーは、目的関数や制約条件が二次形式であることを前提として設計されてきました。しかし、実務における次の例のような課題では、変数間の相互作用が複雑化し、三次以上の高次多項式での定式化を余儀なくされるケースが多々あります。
実務における高次多項式問題の例
物流:輸送コストの最小化と平準化、複雑なネットワーク制約の考慮
生産計画:複数のマシンや複数の工程にまたがる、複雑な非線形制約を持つ最適化
通信ネットワーク:帯域割り当てやリソース利用における多変数間の複雑な相互作用
このような高次の問題に対しては、目的関数と制約条件をソルバーが扱える次数まで次数下げを行う必要があります。次数下げでは、多数の補助変数と制約を導入する必要があるため、問題が複雑化し、結果として実用的な計算時間で有効な解を得ることが困難になるという課題がありました。
最新版の Amplify AE では、目的関数・制約条件ともに最大四次式まで直接取り扱えるようになり、四次までの問題は次数下げの必要がなくなりました。
高次多項式対応による効果:
性能の飛躍的向上:次数下げを不要とすることで、従来のソルバーでは求解が困難であった、あるいは解の質が悪化していた高次の問題に対して、圧倒的な性能を発揮します。
問題表現の忠実性:複雑な相互作用を持つ問題を、より自然な形で定式化し、問題サイズが不必要に増大するのを防ぎます。
一方、学術研究等で要望の強い、理想的な量子アニーリングマシンとして振る舞う、QUBO ソルバーモードもご用意しております。そのため、Amplify AE は実務・研究の両方で有効にご活用いただける高性能な組合せ最適化ソルバーとなっています。
従来版との性能比較¶
目的関数が四次式となる LABS(Low Autocorrelation Binary Sequence:低自己相関二値列問題)問題と BVRP(Balanced Vehicle Routing Problem:負荷平準化配車計画問題)について、従来版の Amplify AE との比較を実施しました。
LABS 問題:できる限りノイズが少ない(自己相関が低い)電気信号の並びを見つけ出すための最適化問題です。
BVRP:複数台の車両の総経路長の最小化に加え、各車両の負荷を平準化するために各経路の分散(ばらつき)の最小化も目的とした最適化問題です。
以下はそれぞれの問題における求解結果の比較グラフです。グラフの横軸は実行時間、縦軸は目的関数の値です。プロットが左下にあるほど、速く良い解が得られることを示します。
LABS 問題:従来版と比較して、より高速に実行可能解を発見し、さらに従来版よりも質の高い解に到達しています。
BVRP:次数下げによる補助変数の増大が原因で実行可能解の発見に至らなかった従来版に対し、最新版は高速に実行可能解を見つけ、その後も継続的に解の質を改善しています。
以上の結果から、高次(四次)の問題に対して、最新版 Amplify AE は従来版と比較して大幅な性能向上を実現していることが分かります。
参考
慶応義塾大学田中研究室による こちらの論文 では、最新版 Amplify AE を用いて、従来のように次数下げを行うよりも高次式を直接扱う手法の方が、構造の単純さ・計算の安定性・解の品質の点において優れていることが実証されています。技術的な詳細に関心をお持ちの方は、ぜひご一読ください。
マルチ GPU オプション¶
標準の利用プランでは 1 つの GPU を利用することができますが、複数の GPU を利用できる GPU 追加オプションをご用意しています。複数の GPU を活用することで、次の方法で利用できます。
複数ジョブの並列実行¶
複数の最適化問題を解きたい場合、各 GPU で並列にジョブを実行することで効率的に求解することができます。 Amplify SDK を使用している場合、solve 関数を parallel_solve 関数に置き換えるだけで複数の問題をご契約している複数 GPU を使って並列に解くことができます。
マルチ GPU による求解¶
Amplify AE は複数の GPU が連携してアニーリングするアルゴリズムを取り入れており、これによって良い解をより高速・高精度に求めることが可能になっています。 Amplify SDK を使用している場合、クライアントのパラメータとして使用する GPU の数を指定することでマルチ GPU による求解が実行できます。
マルチ GPU の計算性能¶
最大カット問題を対象として、各プランのアニーリング速度 (時間あたりの解の探索回数) の比較を行いました。
次のグラフはご利用プランを GPU の種類によって ベーシック/スタンダードプラン、プレミアムプラン、Sプレミアムプランに分類し、異なる3つの問題サイズでのアニーリング速度比を示したものです。Sプレミアム (2 GPUs) と Sプレミアム (4 GPUs) はマルチ GPU 求解時の性能を表しています。
高性能な GPU を利用できる上位のプランになるほどアニーリング速度が速くなっています。また、マルチ GPU 求解によってさらに高速な解の探索が実現されています。 ご利用プランやマルチ GPU オプションによる性能差は問題サイズが大きくなるほど顕著になっています。
今後の展望¶
さらなるアルゴリズムの改良や新機能の追加を通じて、より多様な最適化問題に対応できるよう努めます。実用的な最適化ソリューションとしての価値を高めていくためにも、ユーザの皆様からのフィードバックを積極的に取り入れていきますので、ご意見をお寄せください。
直近では、最新の NVIDIA Blackwell アーキテクチャの GPU に対応予定です。