Amazon Web Services ブログ

Amazon Braket — 量子コンピューティングを実践

昨年、私はAmazon Braket について取り上げ、量子ビットから始めて、量子回路へと進め、量子コンピューティングの基礎をご説明しました。プレビュー中に、Enel、Fidelity (アマゾン ウェブ サービスによる量子コンピューティングの探索)、Volkswagen などの AWS のお客様は Amazon Braket を使用して量子コンピューティングを探索し、経験を積んでいます。

Amazon Braket が一般公開され、D-WaveIonQRigetti などの古典的な電源回路シミュレータと量子コンピュータの両方を利用できるようになったことをお知らせいたします。今日は、簡単な回路の作成およびシミュレーション、そして実際のハードウェア (QPU、または量子処理ユニットとも呼ばれる) での実行という両方の要素をご説明します。

簡単な回路の作成とシミュレーション
以前の記事で述べたように、ノートブックスタイルのインターフェイスを介して Amazon Braket にアクセスすることができます.まず、Amazon Braket コンソールを開き、目的のリージョン (後で詳しく説明します) を選択し、[ノートブックインスタンスを作成] をクリックします。

ノートブックに名前 (amazon-braket-Jeff-2) を指定し、インスタンスタイプを選択して、IAM ロールを選択します。また、root アクセスをオプトアウトして、この例では暗号化キーの使用を中止します。VPC でノートブックを実行することを選択できるので、([追加設定] で) ノートブックの EBS ボリュームのサイズを変更できます。すべての選択を行い、[ノートブックインスタンスを作成] をクリックして続行します:

ノートブックの準備は数分で完了するので、クリックしてアクセスします。

このノートブックモデルは Jupyter に基づいており、例を参照することから始めます。

Superdense Coding の例をクリックして開き、概要と説明を読みます (この通信プロトコルの背後にある数学とロジックの詳細はこちらから、詳しく学ぶことができます)。

ノートブックは、Braket の一部であるシミュレータ、または利用可能な量子コンピュータのいずれかでコードを実行することができます。

# シミュレータのデバイス ARN を選択
device = AwsDevice("arn:aws:braket:::device/quantum-simulator/amazon/sv1")

このコードは、SV1 マネージドシミュレータを選択し、より大きな回路 (25 量子ビット以上) やシミュレーションに多くの計算能力を必要とする回路に対する強さを示しています。小さな回路では、Braket SDK の一部であり、ノートブックインスタンスで実行されるローカルシミュレータを使用することもできます。

device = LocalSimulator()

ノートブックのセルをステップ毎に進め、実行 矢印をクリックして、それぞれを順番に実行します。ノートブックのコードは、Braket API を使用してゼロから量子回路を構築し、それを ASCII 形式で表示します (q0 q1 は量子ビットであり、 T 軸は時間を示し、モーメントで表されます)。

次のセルは、選択したデバイス上で回路を実行し、結果を表示するタスクを作成します。

get_result 関数はノートブック内で定義されます。タスクをデバイスに送信し、タスクのステータスを監視し、タスクが完了するまで待機します。次に、結果 (確率のセット) をキャプチャし、棒グラフにプロットしてから、確率を返します。関数内のコードからわかるように、回路は 1000 回実行されます。各実行は「ショット」と呼ばれます。 上のスクリーンショットから、タスク (504 および 496) によって返されるカウントが最大 1000 まで加算されることを確認できます。Amazon Braket では、タスクごとに 10〜100,000 ショットを指定することができます (デバイスによって異なります)。ショット数が多いほど、精度が向上します。

ノートブックの残りのセルは、他の可能性のあるメッセージで同じ回路を実行し、結果が期待どおりであることを確認します。ご自分で実行して、もっと多く (および他の多くの例) を学ぶことができます!

実際のハードウェアでの実行
Amazon Braket は、3 社のメーカーからの QPU へのアクセスを提供します。詳細については、コンソールの [デバイス] をクリックしてください。

各 QPU は特定の AWS リージョンに関連付けられ、一意の ARN もあります。デバイスカードをクリックして、デバイスを動作させる技術の詳細を学ぶことができます (まるで優れた SF を読んでいるようですが、それが本当であることを保証できます)。そして、ARN を見ることもできます。

ノートブックに新しいセルを作成し、Rigetti Aspen-8 で回路を実行するためのコードをコピー/ペーストします。

device = AwsDevice("arn:aws:braket:::device/qpu/rigetti/Aspen-8")
counts = get_result(device, circ, s3_folder)
print(counts)

これにより、タスクが作成され、QPU 用にキューイングされます。QPU に関連付けられているリージョンのコンソールに切り替えて、タスクを表示することもできます。

D-Wave QPU は、24 時間 365 日体制で Braket タスクを処理します。他の QPU は現在、特定の時間枠で Amazon Braket タスクを処理しており、時間枠外にタスクが作成された場合、タスクはキューに入れられます。タスクが完了すると、ステータスが COMPLETED に変わり、CloudWatch イベントが生成されます。

Amazon Braket API
コンソールを使用してノートブックを作成し、量子コンピューティングタスクを管理しましたが、API と CLI によるサポートも利用できます。最も重要な API 関数は以下のとおりです。

CreateQuantumTask – シミュレータまたは QPU 上で実行されるタスクを作成します。

GetQuantumTask – タスクに関する情報を取得します。

SearchDevices – プロパティベースの検索を使用して、適切な QPU を検索します。

GetDevice – 特定の QPU に関する詳細情報を取得します。

ノートブックのコードからわかるように、CircuitGatesMomentsAsciiCircuitDiagram の各モジュールを含めて、Amazon Braket SDK を使用するコードを書くことができます。

知っておくべきこと
Amazon Braketを評価する際に留意すべき重要な事項をいくつかご紹介します。

新興技術 – 量子コンピューティングは新興の分野です。読者の中にはすでに専門家である人もいらっしゃるでしょうが、それ以外の方々が概念と技術を理解し、使用する方法を修得するのには時間がかかるでしょう。

コンピューティングパラダイムAmazon Braket を通じてアクセスできる QPU は、2 つの異なるパラダイムをサポートしています。IonQ および Rigetti の QPU、シミュレータは回路ベースの量子コンピューティングをサポートし、D-Wave QPU は量子アニーリングをサポートしています。一方のパラダイム用に設計された問題を、もう一方のパラダイムをサポートする QPU で実行することはできません。そのため、探索の早い段階で適切な QPU を選ぶ必要があります。

料金 – 実行する各タスクには、タスクごとの料金と、使用する QPU の種類に固有のショットごとの追加料金が発生します。シミュレーターを使用すると、最低 15 秒で、秒単位で請求される 1 時間ごとの料金がかかります。ノートブックの料金は、SageMaker の場合と同じです。詳細については、Amazon Braket の料金ページをご覧ください。

また、この新しいビデオを見て、詳細を学ぶこともできます。

試してみましょう!
先ほど述べたように、これは新興でエキサイティングな分野であり、Amazon Braket をご利用される機会がありましたら、ぜひ感想をお聞かせください。

Jeff