本書は、Digital Annealer サービスの利用方法および運用管理方法を説明します。
本書は、Digital Annealer サービスを利用して組合せ最適化問題を解くためのプログラムやアプリケーションを開発する方、
および、それらのプログラムやアプリケーションを実行する方を対象として説明します。
本書を読むにあたって、以下の知識が必要です。
-
組合せ最適化問題に関する基本的な知識
-
量子アニーリング、シミュレーテッドアニーリングなどの組合せ最適化問題のアルゴリズムに関する基本的な知識
-
Web API に関する基本的な知識
本書では、略称および記号を使用しています。
- 製品名/技術名の略称
製品名/技術名 | 略称 |
---|---|
Google Chrome™ ブラウザ |
Google Chrome |
- 記号
記号 | 意味 |
---|---|
『 』 |
参照先がほかのマニュアルの場合、そのマニュアル名を『 』で囲んでいます |
また、以下のアイコンを使用します。
注意 |
備考 |
本書で使用する用語について説明します。
用語 | 説明 |
---|---|
Digital Annealer (デジタルアニーラ) |
量子現象に着想を得たデジタル回路で、現在の汎用コンピュータでは解くことが難しい「組合せ最適化問題」を高速で解く新しい技術です。 |
問題規模 |
組合せ最適化問題を構成する変数の数です。 |
FujitsuDA3Solver |
第三世代または第四世代 Digital Annealer を用いて大規模問題を扱うことが可能なソルバーです。計算できる問題規模は最大 100K (100,000) bit です。 |
HOBO (Higher Order Binary Optimization) |
組合せ最適化問題を高次単項式または高次多項式で表したものです。 |
QUBO (Quadratic Unconstrained Binary Optimization) |
組合せ最適化問題を二次多項式で表したものです。 |
Web API |
HTTP プロトコルを用いてネットワーク越しに呼び出すアプリケーション間およびシステム間インターフェースです。 |
Azure Blob Storage |
マイクロソフトが提供するオブジェクトストレージです。Digital Annealer サービスでは、Azure Blob Storage にアップロードした問題データ(QUBO)を、FujitsuDA3Solver の計算対象として指定することができます。問題データ(QUBO)のサイズの上限は 20GB です。Azure Blob Storage を使用する場合は別途 Microsoft Azure の契約が必要です。 |
タイプID (Type ID) |
タイプID (Type ID) は、Premium-3c および Premium-4c のサービス開始時に通知される"type"+"4桁の数字"のIDです。(例:type1234) |
本ドキュメントを輸出または第三者へ提供する場合は、お客様が居住する国および米国輸出管理関連法規等の規制をご確認の うえ、必要な手続をおとりください。
本サービスは、一般事務用、パーソナル用、家庭用、通常の産業等の一般的用途を想定して開発・設計・製造されているもので
あり、原子力施設における核反応制御、航空機自動飛行制御、航空交通管制、大量輸送システムにおける運行制御、生命維持の
ための医療用機器、兵器システムにおけるミサイル発射制御など、極めて高度な安全性が要求され、仮に当該安全性が確保され
ない場合、直接生命・身体に対する重大な危険性を伴う用途(以下「ハイセイフティ用途」という)に使用されるよう開発・設計
・製造されたものではありません。
お客様は本サービスを必要な安全性を確保する措置を施すことなくハイセイフティ用途に使用しないでください。また、お客様
がハイセイフティ用途に本サービスを使用したことにより発生する、お客様または第三者からのいかなる請求または損害賠償に
対しても富士通株式会社およびその関連会社は一切責任を負いかねます。
-
Google は、Google Inc. の商標または登録商標です。
-
Microsoft、Azure は、米国Microsoft Corporationの米国およびその他の国における商標または登録商標です。
-
その他の会社名、各製品名などの固有名詞は、各社の商号、登録商標または商標です。
-
その他、会社名、システム名、製品名などには必ずしも商標表示を付記しておりません。
1. 概要
この章では、Digital Annealer の概要について説明します。
1.1. Digital Annealer とは
Digital Annealer は、量子現象を用いた計算方法に着想を得て設計したデジタル回路です。アニーリング方式を用いて、組合せ
最適化問題を高速に解くことができます。従来のコンピュータのようなプログラミングは必要なく、パラメーターを設定するだけで
計算が行われます。また、任意の素子同士が自由に信号をやりとりできる全結合型の構造を採用しているため、従来のコンピュータ
や量子アニーリングマシンでは計算量が膨大で解けなかった複雑な問題を計算させることができます。
Digital Annealer は、QUBO (Quadratic Unconstrained Binary Optimization) を入力データとして持ち、以下の評価関数
(エネルギー) を最小化するための組合せを探索します。
\(\displaystyle{E(x) = \sum_{i} \sum_{j>i} J_{ij}x_{i}x_{j} + \sum_{i}h_{i}x_{i} + c}\)
2 値変数 \(x \; (x \in \{0, 1\})\) により、組合せの状態を表現しています。
2. サービス利用開始
この章では、サービスの利用開始について説明します。
2.1. アカウント登録
Digital Annealer サービスを利用するには、Digital Annealer ポータルのDAアカウント作成ページ (下記のURL) にアクセスして、アカウント登録を行ってください。
https://portal.aispf.global.fujitsu.com/#/digitalannealer
|
3. サービスの利用
この章では、サービスの利用方法および注意事項について説明します。
3.1. 提供する API
Web API サービスで提供する API を以下に示します。
3.1.1. QUBO API
契約のタイプ | API | 種別 | 説明 |
---|---|---|---|
・デベロッパー-4c (Developer-4c) |
qubo/hobo2qubo |
同期 (sync) |
HOBO (Higher Order Binary Optimization) を QUBO (Quadratic Unconstrained Binary Optimization) に変換します。 |
async/qubo/solve |
非同期 (async) |
FujitsuDA3Solver を使用して QUBO の最適解を求めるジョブを登録します。計算できる問題規模は 100K (100,000) bit 以下です。 |
|
async/jobs |
ジョブの一覧を取得します。 |
||
async/jobs/result/{Job_ID} |
ジョブの結果を取得または削除します。{Job_ID}にジョブIDを指定します。 |
||
async/jobs/cancel |
ジョブをキャンセルします。 |
||
・プレミアム-4c (Premium-4c) |
{Type_ID}/hobo2qubo |
同期 (sync) |
HOBO (Higher Order Binary Optimization) を QUBO (Quadratic Unconstrained Binary Optimization) に変換します。{Type_ID}にタイプIDを指定します。 |
{Type_ID}/async/solve |
非同期 (async) |
FujitsuDA3Solver を使用して QUBO の最適解を求めるジョブを登録します。計算できる問題規模は 100K (100,000) bit 以下です。{Type_ID}にタイプIDを指定します。 |
|
{Type_ID}/async/jobs |
ジョブの一覧を取得します。{Type_ID}にタイプIDを指定します。 |
||
{Type_ID}/async/jobs/result/{Job_ID} |
ジョブの結果を取得または削除します。{Type_ID}にタイプIDを指定します。{Job_ID}にジョブIDを指定します。 |
||
{Type_ID}/async/jobs/cancel |
ジョブをキャンセルします。{Type_ID}にタイプIDを指定します。 |
|
4. QUBO API の使用方法
この章では、数理モデルを使用して組合せ最適化問題を解く方法について説明します。
4.1. Digital Annealer の計算精度
Digital Annealer は、二次のバイナリ多項式の係数を整数としてエンコードします。
Digital Annealer の計算精度は以下のとおりです。最適解を得るために、QUBO の各項の係数を Digital Annealer の計算精度の範囲内で指定することを推奨します。
ソルバー | 問題の規模 | 二次項 | 線形項 |
---|---|---|---|
FujitsuDA3Solver |
~100,000 bit |
64 bitの符号付き整数(*1) |
76 bit の符号付き整数 |
*1: \(-2^{63} + 1\)~\(2^{63} - 1\)の範囲とします。
4.1.1. Scaling and Rounding
整数でない係数や Digital Annealer の計算精度範囲外の係数を持つ項が含まれる QUBO を、Digital Annealer の計算精度範囲内の整数を係数にもつ項だけを含む QUBO に自動で変換する機能です。
FujitsuDA3Solver を使用している場合、アニーリング時にこの機能が有効になります。
async/qubo/solve で指定可能な QUBO の各項の係数の範囲は、『Digital Annealer API リファレンス(QUBO API V3c/V4 for Premium)』、『Digital Annealer API リファレンス(QUBO API V4)』、または『Digital Annealer API リファレンス(QUBO API V3c)』を参照してください。 |
4.2. API の使用方法
提供する各 API の仕様および使用方法については、『Digital Annealer API リファレンス(QUBO API V3c/V4 for Premium)』、『Digital Annealer API リファレンス(QUBO API V4)』、または『Digital Annealer API リファレンス(QUBO API V3c)』を参照してください。
4.2.1. Azure Blob Storageについて
プレミアム-4c (Premium-4c)、プレミアム-3c (Premium-3c)、デベロッパー-4c (Developer-4c)、またはデベロッパー-3c (Developer-3c) を契約して QUBO API V4 または QUBO API V3c を使用する場合、Azure Blob Storage を使用すれば、最大 20GB までの QUBO の計算が可能です。Azure Blob Storage を使用する場合は別途 Microsoft Azure の契約が必要です。Digital Annealerで Azure Blob Storage を使用する場合は、下記のスペックを推奨します。
項目 | 値 |
---|---|
パフォーマンス/アクセス層 |
Standard/ホット以上 |
冗長性(レプリケーション) |
ローカル冗長ストレージ(LRS)以上 |
リージョン |
東日本 |
Azure Blob Storage の利用手順の概要を以下に示します。
-
Azure Blob Storage に問題データ(QUBO)をアップロード
-
Azure Blob Storage のストレージアカウントとSAS トークンを指定して Azure Blob Storage に配置した問題を解くリクエストを送信
例:Azure Blob Storage に配置した問題を QUBO API V4 で解くジョブを登録する場合 ストレージアカウント名をリクエストヘッダ X-Storage-Account-Name に指定します。 コンテナ名をリクエストボディの bucket_name に指定します。 BLOB SAS トークンをリクエストヘッダ X-Blob-Sas-Token に指定します。
ストレージアカウント名: samplestorage バケット名(コンテナ名): sample BLOB SAS トークン: sp=racwdl&st=2021-07-20T11:58:45Z&se=2021-07-20T19:58:45Z&spr=https&sv=2020-08-04&sr=c&sig=Gf3coiBWO0Y8FrGnw82OI0zBB1jpDTRJF8o%2FdGYNEM0%3D
$ cat sample-qubo.json { "fujitsuDA3": { "time_limit_sec": 10 }, "object_format": "json", "bucket_name": "sample", "binary_polynomial_object_name": "sample-binary-polynomial", "penalty_binary_polynomial_object_name": "sample-penalty-binary-polynomial" }
$ curl -v -k -X POST https://api.aispf.global.fujitsu.com/da/v4/async/qubo/solve \ -H 'Content-Type: application/json' \ -H 'X-Access-Token: 6470a9c268cfbe17cd7ad744c12cbc9f0129462aae818156b5224826f4ef0591' \ -H 'X-Storage-Account-Name: samplestorage' \ -H 'X-Blob-Sas-Token: sp=racwdl&st=2021-07-20T11:58:45Z&se=2021-07-20T19:58:45Z&spr=https&sv=2020-08-04&sr=c&sig=Gf3coiBWO0Y8FrGnw82OI0zBB1jpDTRJF8o%2FdGYNEM0%3D' \ -d @sample-qubo.json {"job_id":"b2374563-3e80-425c-bffb-c6eeeff3c4df-212012224838091"}
-
Azure Blob Storage のストレージアカウントとSAS トークンを使用したアクセス制御
-
Azure Blob Storage に配置した問題データ(QUBO)をダウンロード
-
計算結果を返信
4.3. 注意事項
QUBO API 使用時の注意事項について説明します。
-
リクエスト時に指定したパラメーター名(キー)に誤り(スペルミスを含む)がある場合、その指定が無視され処理が続行されることがあります。それにより期待する処理結果が得られないことがありますので注意して指定してください。
-
同期型の qubo/hobo2qubo のリクエスト後に、実行中のジョブを中断することはできません。間違ってリクエストしてしまったり、処理に時間がかかったりしている場合でも、処理が終了するまでお待ちください。
非同期型の async/qubo/solve のリクエストの場合、ジョブが実行前であればキャンセル (async/jobs/cancel を使用) できます。 -
FujitsuDA3Solver を使用する場合、計算にかかる時間 (solve_time) は、実行時間の上限値を指定する以下のパラメーターに指定する値 (単位は秒) で決まります。
-
time_limit_sec パラメーター
-
-
問題の規模(ビット数)が大きいと、スケーリング処理やエネルギーの再計算など、CPU を使用して計算する処理に時間がかかることがあります。 指定したソルバーやパラメーターの設定値によって、CPU を使用して計算する処理にかかる時間は異なります。
- 改版履歴
版数 | 日付 | 変更箇所 | 変更内容 |
---|---|---|---|
初版 |
2020年1月 |
全体 |
新規作成 |
第二版 |
2021年1月 |
全体 |
FujitsuDA3Solver に関する説明を追加 |
第三版 |
2021年8月 |
全体 |
QUBO API V3 に関する説明を修正 |
第四版 |
2022年5月 |
全体 |
QUBO API V4 に関する説明を追加 |
第五版 |
2022年12月 |
全体 |
QUBO API V3c に関する説明を追加 |
第六版 |
2023年6月 |
全体 |
Premium-3c と Premium-4c に関する説明を追加 |
第七版 |
2023年7月 |
全体 |
Developer-3c に関する説明を追加 |
第八版 |
2024年4月 |
全体 |
QUBO API V2、QUBO API V3、最適化ソリューションAPI に関する説明を削除 |