Azure Quantum のジョブを処理する

Azure Quantum で量子プログラムを実行するときは、ジョブを 作成して実行します。 ジョブを作成して実行する手順は、ジョブの種類とプロバイダー、および target ワークスペースに対して構成する手順によって異なります。

ジョブ プロパティ

すべてのジョブに共通する次のプロパティがあります。

プロパティ 説明
ID ジョブの一意の識別子。 ワークスペース内で一意である必要があります。
プロバイダー "" にジョブを実行させるか。
ターゲット "" に対してジョブを実行するか。 たとえば、プロバイダーから提供される正確な量子ハードウェアや量子シミュレーターなどです。
名前 ジョブの整理に役立つユーザー定義の名前。
パラメーター の省略可能な入力パラメーター targets。 使用可能なパラメーターの定義については、選択した target ドキュメントを参照してください。

ジョブを作成すると、その状態と実行履歴に関するさまざまなメタデータが使用できるようになります。

ジョブのライフサイクル

量子プログラムを作成したら、ジョブを target 選択して送信できます。

次の図は、ジョブを送信した後の基本的なワークフローを示しています:

Azure 量子ジョブのフロー

まず Azure Quantum は、ワークスペースで構成した Azure Storage アカウントにジョブをアップロードします。 次に、ジョブに指定したプロバイダーのジョブがジョブキューに追加されます。 その後、Azure Quantum によってプログラムがダウンロードされ、プロバイダー用に変換されます。 プロバイダーはジョブを処理し、Azure Storage に出力を返します。この出力はダウンロードに使用できます。

ジョブの監視

ジョブを送信したら、ジョブの状態を監視できます。 ジョブの状態は次のとおりです:

状態 Description
waiting ジョブは実行を待機しています。 一部のジョブは、待機中の状態で前処理タスクを実行します。 waiting は常に最初の状態ですが、waiting で観察する前に、ジョブが executing の状態に移ることもあります。
executing target現在、ジョブが実行されています。
succeeded ジョブは正常に完了し、出力を利用できます。 これは最終状態です。
failed ジョブが失敗し、エラー情報が表示されます。 これは最終状態です。
取り消し済み ユーザーがジョブの実行をキャンセルするように要求しました。 これは最終状態です。 詳細については、この記事の「Job Cancellation (ジョブのキャンセル)」を参照してください。

succeededfailedcancelledの状態は、最終状態とみなされます。 ジョブがこれらの状態のいずれかになると、更新は行われず、対応するジョブ出力データも変更されません。

次の図は、ジョブの状態遷移の可能性を示しています:

Azure Qauntum へのジョブ送信のワークフローを示す図。

ジョブが正常に完了すると、Azure Storage アカウントの出力データへのリンクが表示されます。 このデータにアクセスする方法は、ジョブの送信に使用した SDK またはツールによって異なります。

ジョブを監視する方法

Python、Azure portal、Azure CLI を使用してジョブを監視できます。

ジョブのすべてのプロパティにアクセスできます job.details。 たとえば、次のようにジョブ名、状態、ID にアクセスできます。

print(job.details)
print("\nJob name:", job.details.name)
print("Job status:", job.details.status)
print("Job ID:", job.details.id)
{'additional_properties': {'isCancelling': False}, 'id': '0fc396d2-97dd-11ee-9958-6ca1004ff31f', 'name': 'MyPythonJob', 'provider_id': 'rigetti'...}
Job name: MyPythonJob
Job status: Succeeded
Job ID: fc396d2-97dd-11ee-9958-6ca1004ff31f

ジョブの数

多数のジョブから結果のカウントを取得するには、ツールのローカル インストールをQuantum Development Kit実行できます。 ローカル インストールを使用すると、ジョブ ID をローカルに格納できます。

次のコードをコピーして、ジョブとその結果の一覧を取得できます。

for job in workspace.list_jobs():
    print(job.id, job.details.name, job.details.output_data_uri)

ジョブのキャンセル

ジョブがまだ最終的な状態になっていない場合 (例: succeededfailedcancelled)、ジョブのキャンセルを要求することができます。 すべてのプロバイダーが waiting 状態にある場合は、ジョブを取り消します。 ただし、ジョブが executing 状態である場合、すべてのプロバイダーが取り消しをサポートするわけではありません。

Note

ジョブの実行を開始した後で取り消した場合、そのジョブの一部または全部の料金がアカウントに請求される可能性があります。 選択したプロバイダーの課金ドキュメントを参照してください