コストの追跡と削減
ヒント
AWS で量子コンピューティングの基礎について学びましょう。Amazon Braket Digital Learning Plan
Amazon Braket を使用すると、前払いの義務なしで、オンデマンドで量子コンピューティングリソースにアクセスできます。お支払いいただくのは、使用分の料金だけです。料金の詳細については、料金ページ
このセクションの内容:
ほぼリアルタイムのコスト追跡
Braket SDK には、量子ワークロードにほぼリアルタイムのコスト追跡を追加するオプションが用意されています。各サンプルノートブックには、Braket の量子処理ユニット (QPU) とオンデマンドシミュレーターの最大コスト見積もりを提供するコスト追跡コードが含まれています。最大コスト見積もりは USD で表示され、クレジットや割引は含まれません。
注記
表示される料金は、Amazon Braket シミュレーターと量子処理ユニット (QPU) のタスクの使用状況に基づいた見積もりです。表示される料金見積もりは、実際の料金とは異なる場合があります。料金見積もりには、割引やクレジットは勘案されていません。また、Amazon Elastic Compute Cloud (Amazon EC2) など他のサービスの利用状況によっては、追加の料金が発生する可能性もあります。
SV1 のコスト追跡
コスト追跡関数の使用方法を示すために、ベル状態回路を構築し、SV1 シミュレーターで実行します。まず、Braket SDK モジュールをインポートし、ベル状態を定義して、回路に Tracker() 関数を追加します。
#import any required modules from braket.aws import AwsDevice from braket.circuits import Circuit from braket.tracking import Tracker #create our bell circuit circ = Circuit().h(0).cnot(0,1) device = AwsDevice("arn:aws:braket:::device/quantum-simulator/amazon/sv1") with Tracker() as tracker: task = device.run(circ, shots=1000).result() #Your results print(task.measurement_counts)
Counter({'00': 500, '11': 500})
ノートブックを実行すると、ベル状態のシミュレーションで下記の出力が予想されます。トラッカー (コスト追跡) 関数により、送信されたショットの数、完了した量子タスク数、実行期間、請求された実行期間、最大コストが USD で表示されます。実行時間はシミュレーションごとに異なる場合があります。
import datetime tracker.quantum_tasks_statistics() {'arn:aws:braket:::device/quantum-simulator/amazon/sv1': {'shots': 1000, 'tasks': {'COMPLETED': 1}, 'execution_duration': datetime.timedelta(microseconds=4000), 'billed_execution_duration': datetime.timedelta(seconds=3)}} tracker.simulator_tasks_cost()
Decimal('0.0037500000')
コストトラッカーを使用して最大コストを設定する
コストトラッカーを使用して、プログラムの最大コストを設定できます。特定のプログラムに費やす金額に、最大しきい値を設定できるのです。そのように、コストトラッカーを使用して、実行コードにコスト制御ロジックを構築できます。次の例では、Rigetti QPU で同じ回路を実行し、コストを 1 USD に制限しています。コード内で回路の反復を 1 回実行するコストは 0.30 USD です。合計コストが 1 USD を超えるまで反復を繰り返すようにロジックが設定されています。したがって、このコードスニペットは次の反復が 1 USD を超えるまでの 3 回、実行されます。一般的に、プログラムは希望する最大コストに達するまで反復され続けます。この場合、反復は 3 回です。
device = AwsDevice("arn:aws:braket:us-west-1::device/qpu/rigetti/Ankaa-3") with Tracker() as tracker: while tracker.qpu_tasks_cost() < 1: result = device.run(circ, shots=200).result() print(tracker.quantum_tasks_statistics()) print(tracker.qpu_tasks_cost(), "USD")
{'arn:aws:braket:us-west-1::device/qpu/rigetti/Ankaa-3': {'shots': 600, 'tasks': {'COMPLETED': 3}}} 1.4400000000 USD
注記
コストトラッカーは、失敗した TN1 量子タスクの期間については追跡しません。TN1 のシミュレーション中にリハーサルが完了し、縮約ステップが失敗した場合、リハーサル料金はコストトラッカーに表示されません。
コスト削減のベストプラクティス
Amazon Braket を使用する際に次のベストプラクティスを考慮してください。時間を節約し、コストを最小限に抑え、一般的なエラーを回避します。
シミュレーターで検証する
-
QPU で実行する前に、シミュレーターを使用して回路を検証します。これにより、QPU の使用料金が発生することなく回路をファインチューニングできます。
-
シミュレーターで回路を実行した結果は、QPU で回路を実行した結果と同じではない可能性がありますが、シミュレーターを使用してコーディングエラーや構成の問題を特定できます。
特定のデバイスへのユーザーアクセスを制限する
-
権限のないユーザーが特定のデバイスで量子タスクを送信できないように制限を設定できます。アクセスを制限するための推奨される方法は、AWS IAM を使用することです。これを行う方法についての詳細は、アクセスの制限を参照してください。
-
Amazon Braket デバイスへのユーザーアクセスを許可または制限する方法として、管理者アカウントを使用しないことをお勧めします。
請求アラームの設定
-
請求アラームを設定して、請求が事前設定された限度に達したときに通知を受けることもできます。アラームを設定するための推奨される方法は、AWS Budgets を使用する方法です。カスタム予算を設定し、コストまたは使用量が予算額を超える可能性がある場合にアラートを受け取ることができます。情報は AWS Budgets
で入手できます。
少ないショット数で TN1 量子タスクをテストする
-
シミュレーターのコストは QPU より少なくなりますが、特定のシミュレーターは、高いショット数で量子タスクを実行するとコストが高くなる可能性があります。TN1 タスクは少ないshot数でテストすることをお勧めします。 Shot数は、SV1 およびローカルシミュレータータスクのコストには影響しません。
量子タスクがないかすべてのリージョンをチェックする
-
コンソールには、現在の AWS リージョンのタスクのみが表示されます。提出された請求可能な量子タスクを探すときは、必ずすべてのリージョンをチェックしてください。
-
サポートされるデバイスドキュメントページで、デバイスおよび関連するリージョンの一覧を表示できます。