!!! サイト改修中のため表示が乱れる場合があります(1月末頃まで) !!!
量子アニーリング

21-38. 【試験導入】QUBOアニーリング「TYTAN」に対ワンホット高速GPUサンプラーが追加

やること

前回、 「TYTAN」パッケージに追加された高速GPUサンプラー「ArminSampler」の性能を確認しました。

今月勉強会のときに、「ワンホット制約のある問題の解がイマイチだなぁ」という声が聞かれました。そこで対ワンホットの独自サンプラー「PieckSampler」を試験的に追加しましたので使い方と性能を確認してみましょう。GPU対応してます。(tytan==0.0.27以降)

ベンチマーク問題

前回と同じ180量子ビットの生産計画最適化問題(ジョブスケジューリング問題)を用いました。大域解は74時間(複数パターンあり)です。

この問題はワンホット制約×36式方程式コスト×5式で定式化されており、ワンホット制約のせいで従来の「SASampler」やそれを高速化した「ArminSampler(GPUモード)」の性能が十分に発揮されないのかなと思います。

実行マシン

前回と同じです。

CPU:Ryzen 5 5600G
GPU:RTX 2070(※ColabのTesla T4より性能は高い)

PieckSamplerの実行方法

「PieckSampler」は特殊なコンパイル「PieckCompile」とセットで用いる必要があります。前回はサンプリングが10秒程度で終わるようにパラメータを調整しましたが、こいつはワンホット制約が得意なためshots=1000, T_num=2000にとどめています。CPUモードもGPUモードも3~5秒程度でした。

#コンパイル
qubo, offset = PieckCompile(H).get_qubo()

#サンプラー選択
solver = sampler.PieckSampler(seed=None, mode='GPU') #'CPU', 'GPU'

#サンプリング
result = solver.run(qubo, shots=1000, T_num=2000, show=True)
------ PieckCompile ------
Extracted onehot group: 36
Extracted onehot keys: 180
--------------------------
offset=30980.0
------ PieckSampler ------
MODE: GPU
DEVICE: cuda:0
--------------------------
4.993 s
Energy=-30980.0, Occurrence=1
[[1 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0]
 [0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0]
 [0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1]
 [0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0]
 [0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 0 0 1 0 0 0 0 0 1 1 0 1 0 1 0 0]]
[1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1]
機械0 タスク [ 1  6 10 14 15 28] 時間 74.0
機械1 タスク [ 3 13 27 31] 時間 74.0
機械2 タスク [ 7  8 16 22 24 35 36] 時間 74.0
機械3 タスク [ 4  9 12 18 21 25 26 33] 時間 74.0
機械4 タスク [ 2  5 11 17 19 20 23 29 30 32 34] 時間 74.0

スコア比較

前回のグラフに追加する形で、各10回実行した最良解のエネルギーをまとめました。-30980が大域解です。

PieckSamplerは10回とも大域解を発見しました!ええ!?!?

おわりに

もう少し試しながら改良する予定です。

リアクションのお願い

「参考になった!」「刺激された!」と思ったらぜひリアクションをしましょう。エンジニアの世界はGive and Takeによって成り立っています。これからも無料で良質な情報にアクセスできるよう、Giveする人への感謝をリアクションで示しましょう!

この記事をシェアする

自身のブログ等で使用する場合は引用を忘れずに!

また、寄付も受け付けています。コーヒー1杯でとても喜びます(*˘︶˘*)

 Amazonでギフト券(アマギフ)を贈る

こちらのリンク から金額を指定してお贈りください。(デフォルトで10000円になっているのでご変更ください)

配送:Eメール
受取人:staffあっとvigne-cla.com
贈り主:あなたのお名前やニックネーム
メッセージ:◯◯の記事が参考になりました。など

のようにご入力ください。見返りはありませんのでご了承ください。

 Amazonで食事券(すかいらーく優待券)を贈る

500円 1000円 2000円 5000円 からお贈りください。

配送:Eメール
受取人:staffあっとvigne-cla.com
贈り主:あなたのお名前やニックネーム
メッセージ:◯◯の記事が参考になりました。など

のようにご入力ください。見返りはありませんのでご了承ください。

 その他、ギフト券やクーポン券をメールで贈る

デジタルのギフト券/クーポン券はメールアドレス(staffあっとvigne-cla.com)までお送りください。受領の返信をいたします。
紙のギフト券/クーポン券は 「郵便物はこちらへ」の住所 まで送付してください。名刺やメールアドレスを同封していただければ受領の連絡をいたします。
余った株主優待券等の処理におすすめです。
いずれも見返りはありませんのでご了承ください。

不明点はSNSでお気軽にご連絡ください

ビネクラのTwitter・Youtubeでコメントをください!


Slack・Discordの場合はこちらの公開グループに参加してShoya YasudaまでDMをください!


※当ブログに関することは何でもご相談・ご依頼可能です。

この記事を書いた人
Yasuda

博士(理学)。専門は免疫細胞、数理モデル、シミュレーション。米国、中国で研究に携わった。遺伝的アルゴリズム信者。物価上昇のため半額弁当とともに絶滅寸前。

タイトルとURLをコピーしました