ちょっと話題の記事

[速報]AWS初のマネージド量子コンピューティングサービス「Amazon Braket」がGAされました![朗報]

ブラケットの名を冠したあいつがやってきたぞ
2020.08.15

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。


▲ きたぞ……奴が……!

こんにちは。AWS事業本部のShirotaです。お決まりの挨拶はさておいて、早速朗報をお伝えしたいと思います。

Amazon Braketがやってきた!

2020年8月14日(日本時間)、 AWS初のマネージドな量子コンピューティングサービスである 「Amazon Braket」の一般提供(GA)が開始されました!

Quantum computing is now available on AWS through Amazon Braket

re:Invent2019で発表され、当時はプレビュー版の公開のみとなっていたのですが、あれから半年強が過ぎてからの一般提供となりました。
当時の興奮を伝えてくれるブログを以下に貼っておきます。

ところで「Amazon Braketって何だっけ……?量子コンピュータ……?」となっている方もいらっしゃるのでは無いかと思いますので、簡単にAmazon Braketや量子コンピュータについておさらいしておきましょう。

Amazon Braketの三行おさらい

今回は、サクッとおさらいしたいので三行にまとめてみました。今北産業というやつですね。

  • AWSが初めて提供するフルマネージドな量子コンピューティングサービス
  • Amazon Braket SDKがプレインストールされたJupyter NotebookとAmazon Braket APIを用いて量子コンピュータやシミュレータを用いた量子アルゴリズムの実行ができる
  • 3種類の量子コンピュータ(D-Wave,IonQ,Rigetti)を実際に利用することが可能

三行で説明は無茶でした。
Amazon BraketはAWS上で、量子コンピュータに実行させたいアルゴリズムの設計からテスト、実際に実行するまでができるサービスです。
リソースの管理や実行ログなどがAmazon Braketという一つのサービスで完結しているところがこのサービスの長所です。
また、以下の3種類の量子コンピュータが実際に使えたり、シミュレータが用意されているところもAmazon Braketの強みであると言えます。

3種類の量子コンピュータ

Amazon Braketでは、3種類の量子コンピュータがサードパーティによって提供されています。

  • 超伝導量子ビットで量子アニーリング技術を用いる 「D-Wave」
  • イオントラップで量子ゲート方式を用いる「IonQ」
  • 超伝導量子ビットで量子ゲート方式を用いる「Rigetti」

組み合わせ最適化問題に強い量子アニーリングはピンポイントな量子の特性を活かしたものであるのに対して、量子ゲート方式は様々な量子の特性を活かしたものとなっています。
それぞれ、自分が求めたいものに合った量子コンピュータを利用することができます。
ただ、実機を用いる上で量子コンピュータの稼働時間が定められており、以下のようになっている為その点は注意が必要です。

量子コンピュータ名 稼働時間(UTC) 稼働時間(JST)
D-Wave 毎日0:00-23:59 毎日0:00-23:59
IonQ 平日13:00-21:00 平日22:00-翌6:00
Rigetti 平日15:00-19:00,21:00-23:00 平日0:00-4:00,6:00-8:00

日本からだと深夜や早朝の時間に触れる時間が多そうです。


▲ コンソールから利用可否を確認できる。夕方頃に見たら見事に営業時間外だった

利用料金

Amazon Braket自体は、SageMakerノートブックインスタンスを利用したり、実行したタスクを保存するのにS3を用いたりする為様々なサービスの課金が発生します。
それとは別に、提供されている量子コンピュータ自体の利用に関する料金が設定されています。
基本的には従量課金制となっていることがコンソール上から確認できました。(2020年8月14日現在)

量子コンピュータ名 1タスク実行時の料金 1ショット実行時の料金
D-Wave $0.30 $0.00019
IonQ $0.30 $0.01
Rigetti $0.30 $0.00035

利用可能なリージョン

2020年8月14日現在、Amazon Braketは以下のリージョンで提供されています。

  • us-east-1(N.Virginia)
  • us-west-1(N.California)
  • us-west-2(Oregon)

後述しますが、これらはそれぞれAmazon Braketのエンドポイントがあるリージョンとなっています。

早速触ってみた

何はともあれ、ようやくAmazon Braketが一般提供されて触れるようになったので、早速触ってみました。
今回やってみたこととしては、以下になります。

  • Amazon Braketの有効化
  • ノートブックインスタンスの作成
  • D-Waveのチュートリアルを試してタスクの作成

Amazon Braketの有効化(初回)

まず、Amazon Braketを利用する為にはAmazon Braketの有効化が必要となっています。
利用可能リージョンならどこでもいいので、有効化を実施しましょう。(一度、どこかで有効化してしまえばそれ以降は不要です)

初めてAmazon Braketにアクセスすると、以下のような画面が出てきます。
それぞれの項目を確認しながら有効化を進めましょう。
まずは、実行結果を保存する為のS3の指定からです。
S3は接頭辞に「amazon-braket-」がつくものが使用できる仕組みになっているようです。

  • 新規作成(ランダムな接尾辞がつく)
  • 接尾辞を指定して新規作成
  • 今存在するバケットを指定(上記の接頭辞の条件を満たすものが指定できる)

上記三パターンでS3バケットを選ぶ事ができます。
S3は全世界でユニークなものを求められるので、そういう意味では新規作成でサクッと作る方が楽に作成できます。
今回は、AWS側に命名をお任せしてサクッとS3バケットを新規作成しました。


▲ でもその場で好きな接尾辞で作成できるの、地味に嬉しい気がする

次に、Amazon Braketを利用する際に必要なIAMロールの作成です。
ここでは、「Amazon Braketを利用する時に必要なIAMロールを作るよ、権限はこんなものがつくよ」と教えてくれるだけで特に選択する項目はないのでそのまま進めます。


▲ ちなみに、その時作成したIAMロールにはこんなポリシーがついていました

最後に、サードパーティ製品(量子コンピュータ)の利用承諾を聞かれます。
Amazon Braketはサードパーティが開発している実際の量子コンピュータを利用することが可能なサービスとなっており、それを利用する承諾が必要となっています。


▲ 勿論承諾、さあ有効化だ

これで、Amazon Braketの有効化は完了しました!

タスク実行用のノートブックインスタンスを作成する

次に、量子アルゴリズムのタスクを実行する為のノートブックインスタンスを作成します。
ここで作成されるのは、Amazon Braket SDKといくつかのチュートリアルがプレインストールされたJupyter Notebookであり、また作成画面に記載されているのですがその実態はSageMakerノートブックインスタンスとなっています。


▲ amazon-braket-から始まるインスタンスが作れます

2020年8月14日現在、選択できるインスタンスタイプは以下となっていました。

  • スタンダード
    • ml.t3.medium
    • ml.t3.large
    • ml.t3.xlarge
    • ml.t3.2xlarge
    • ml.m5.large
    • ml.m5.xlarge
    • ml.m5.2xlarge
    • ml.m5.4xlarge
    • ml.m5.12xlarge
    • ml.m5.24xlarge
  • コンピューティング最適化
    • ml.c5.xlarge
    • ml.c5.2xlarge
    • ml.c5.4xlarge
    • ml.c5.9xlarge
    • ml.c5.18xlarge
  • 加速コンピューティング
    • ml.p3.2xlarge
    • ml.p3.8xlarge
    • ml.p3.16xlarge

利用用途に合わせて、適切なインスタンスタイプを選びましょう。
今回は、サクッと始めたいので一番小さいインスタンスタイプであるml.t3.mediumを選択しました。

次に、ノートブックインスタンスで用いるIAMロールを作成します。


▲ 今回は新規作成を選択

ここで作成したIAMロールには、以下のポリシーがついていました。


▲ Amazon Braket用のSageMaker Notebookのポリシーがついていたりと面白い

これでノートブックインスタンスが作成できます。
インスタンスが起動したら、早速触っていきましょう。

D-Waveのチュートリアルを試してタスクを作成する

Amazon Braketから起動したJupyter Notebookには、何種類かのチュートリアルやサンプルがプレインストールされています。


▲ 色々なアルゴリズムが試せるようになっていた

その中から、今回はD-Waveでグラフ分割問題を解くチュートリアルをやってみました。
基本的には、記述されているコードを順番に実行していくだけで、サンプルのグラフ分割問題をD-Waveに解いてもらうことができます。


▲ 変更した箇所は、途中ではじめに作成したS3バケットを指定したくらい

実際にD-Waveに問題を解いてもらいました。
どれくらい時間がかかるのかな、と思っていましたがチュートリアルの問題では50秒弱で計算が完了していました。


▲ ARNで量子コンピュータを指定するだけで使えてしまった

この実行結果は、途中で指定したS3バケットに保存されています。
そして、それはAmazon Braketのコンソールからタスクとして確認ができるのですが、一点注意が必要です。

量子コンピュータごとにタスクのエンドポイントが異なる

利用する量子コンピュータごとに、エンドポイントが異なります。(S3ははじめに作成したもので共通ですが)
私は一回これが理解できていなくて「us-east-1に作成したS3に結果はあるけど何故かタスクがus-east-1では見られない……」と混乱してしまったので、自身への備忘録も兼ねてここに記しておきます。
各量子コンピュータのタスクは、以下リージョンで確認ができます。

量子コンピュータ名 タスクが確認できるリージョン
D-Wave us-west-2
IonQ us-east-1
Rigetti us-west-1

Amazon Braket Regions and endpoints - Amazon Braket


▲ D-Waveを使ったタスクだったので、オレゴンリージョンにタスクがあった。よかった!

後片付け

量子コンピュータ自体は利用時のみに料金が発生しますが、ノートブックインスタンス等は立ち上げたままだとひたすら従量課金が発生します。
使っていないノートブックインスタンスは停止しておきましょう。


▲ おやすみなさい

より量子コンピュータが気軽に試せる時代がやってくる?

主に、このサービスはAWSを今まで触ったことのない量子コンピュータを使っていた人たちやAWSを利用しつつ他のサービスを用いて量子コンピュータを使っていた人たちに刺さるサービスになってくれるのではないかと思っています。
実際、簡単なチュートリアルを試してみましたが環境の整備から実際に量子コンピュータを利用し、データを保存するところまでが全てAWS上の、Amazon Braketのコンソール上だけで完結しました。

ますます量子コンピュータの利用が手軽になっていき、様々な問題がより最適に、より速く計算されていくようになれば様々な研究の進歩も飛躍的に進んでいくのではないかと思われます。
この記事がAmazon Braketを知らなかった人や、Amazon Braketの一般提供を心待ちにしていた人へ届けば幸いです。