はじめに

本書は、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

  • Digital Annealer ポータルへは、Google Chrome でアクセスしてください。
    画面解像度は 1366 \(\times\) 768 ピクセル以上を推奨します。


3. サービスの利用

この章では、サービスの利用方法および注意事項について説明します。


3.1. 提供する API

Web API サービスで提供する API を以下に示します。

3.1.1. QUBO API

契約のタイプ API 種別 説明

・デベロッパー-4c (Developer-4c)
・デベロッパー-3c (Developer-3c)

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)
・プレミアム-3c (Premium-3c)

{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を指定します。


  • QUBO のサイズ

    • QUBO API のリクエストボディの最大サイズは、2GB です。最大 2GB までの QUBO の計算が可能です。

    • プレミアム-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 の契約が必要です。

  • 問題規模

    • プレミアム-4c (Premium-4c)、プレミアム-3c (Premium-3c)、デベロッパー-4c (Developer-4c)、または デベロッパー-3c (Developer-3c) を契約した場合、計算できる問題規模は下記のとおりです。
       非同期 (async):100K (100,000) bit 以下

  • 月額固定契約

    • デベロッパー-4c (Developer-4c)、または デベロッパー-3c (Developer-3c) の月額固定を契約した場合、月毎に使用時間の上限値が設定されており、その上限を超えて使用することはできません。

    • デベロッパー-4c (Developer-4c) の月額固定を契約した場合、QUBO API V3c と QUBO API V4 の使用時間の合計時間が月毎の使用時間の上限を超えると、QUBO API V3c と QUBO API V4 の両方とも使用できなくなります。

  • 多重リクエスト

    • 同期型の qubo/hobo2qubo は、同一アカウントで同時に最大 2 多重までリクエストできます。

    • 非同期型の async/qubo/solve は、同一アカウントで最大 16 多重までリクエストできます。

    • async/qubo/solve の処理結果の数も多重数に含まれるため、不要な処理結果は削除してください。

    • デベロッパー-4c (Developer-4c) を契約した場合、QUBO API V3c と QUBO API V4 の同時リクエスト数の合計が最大 16 になります。

  • 非同期型のジョブ一覧

    • async/jobs を使用してジョブの一覧を取得すると、最大 16 個のジョブ情報を表示することができます。

    • デベロッパー-4c (Developer-4c) を契約した場合、async/jobs を使用してジョブの一覧を取得すると、QUBO API V3c と QUBO API V4 の両方のジョブ情報が表示され、QUBO API V3c と QUBO API V4 のジョブ数の合計が最大 16 になります。

  • API リファレンス

    • QUBO API の詳細は、『Digital Annealer API リファレンス(QUBO API V3c/V4 for Premium)』、『Digital Annealer API リファレンス(QUBO API V4)』、または『Digital Annealer API リファレンス(QUBO API V3c)』を参照してください。

    • プレミアム-4c (Premium-4c)、または プレミアム-3c (Premium-3c) を契約した場合、『Digital Annealer API リファレンス(QUBO API V3c/V4 for Premium)』を参照してください。

    • デベロッパー-4c (Developer-4c) を契約して QUBO API V4 を使用する場合、『Digital Annealer API リファレンス(QUBO API V4)』を参照してください。

    • デベロッパー-4c (Developer-4c)、または デベロッパー-3c (Developer-3c) を契約して QUBO API V3c を使用する場合、『Digital Annealer API リファレンス(QUBO API V3c)』を参照してください。


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 の利用手順の概要を以下に示します。

  1. Azure Blob Storage に問題データ(QUBO)をアップロード

  2. 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"}
  3. Azure Blob Storage のストレージアカウントとSAS トークンを使用したアクセス制御

  4. Azure Blob Storage に配置した問題データ(QUBO)をダウンロード

  5. 計算結果を返信

Azure Blob Storage
図 1. Azure Blob Storage の利用手順の概要

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 に関する説明を削除