メインコンテンツへスキップ

Quantum Compute実行モードの概要

IBM Quantum Compute Service が導入された当初、ユーザーは回路を個別のジョブとして実行することしかできませんでした。さまざまな種類の量子ワークロードが登場するにつれて、異なるスケジューリング戦略の必要性が明らかになりました。実行モードはジョブのスケジュール方法を決定し、適切な実行モードを選択することで、ワークロードを予算内で効率的に実行できます。実行モードには、ジョブ、セッション、バッチの3種類があります。

job mode​

コンテキストマネージャーを使用せずに実行する、単一のプリミティブリクエストです。回路と入力はプリミティブ統合ブロック(PUB)としてパッケージ化され、量子コンピューター上の実行タスクとして送信されます。job modeで実行するには、プリミティブをインスタンス化する際に mode=backend を指定します。使用例についてはEstimatorの例およびSamplerの例を参照してください。

batch mode​

複数ジョブからなるワークロードを効率的に実行するための、マルチジョブ管理機能です。これらのワークロードは、互いに条件的な依存関係のない、独立して実行可能なジョブで構成されています。batch modeでは、ユーザーはすべてのジョブを一度に送信します。

システムは各プリミティブジョブの前処理(古典計算)ステップを並列化またはスレッド化し、ジョブをまたいで量子実行をより密にパッケージ化してから、各ジョブの量子実行を連続して実行することで、最も効率的な結果を提供します。スレッド化の詳細については、実行モードFAQページを参照してください。

batch modeで実行される一連のジョブ。各ジョブの古典計算部分が同時に行われ、その後すべてのジョブがQPUに送信されます。QPUは最初のジョブがQPUに到達した時点からロックされ、最後のジョブのQPU処理が完了するまでお客様専用となります。ジョブ間にQPUがアイドル状態になるギャップはありません。

注意事項
  • バッチ処理の場合、ジョブが送信された順序で実行される保証はありません。また、バッチジョブはできる限り近い時間帯に実行されますが、バックエンドへの排他的アクセスは保証されません。そのため、QPUの処理能力が十分であれば、バッチジョブが他のユーザーのジョブと並行して実行される場合があります。また、バッチジョブの間にQPUキャリブレーションジョブが実行される場合があります。
  • バッチ内に送信される最初のジョブのキューイング時間は短縮されません。そのため、単一ジョブを実行する場合、バッチによるメリットはありません。

batch modeで実行するには、プリミティブをインスタンス化する際に mode=batch を指定するか、バッチコンテキストマネージャー内でジョブを実行します。例についてはバッチでのジョブ実行を参照してください。

session mode​

マルチジョブワークロードを実行するための専用ウィンドウです。このウィンドウの間、ユーザーはシステムへの排他的アクセスが保証され、キャリブレーションジョブを含む他のジョブは実行できません。これにより、ユーザーは変分アルゴリズムをより予測可能な方法で実験したり、スタック内の並列性を活用して複数の実験を同時に実行したりすることができます。セッションを使用することで、各ジョブを個別にキューに入れることによる遅延を回避でき、これは古典リソースと量子リソース間で頻繁な通信を必要とする反復タスクに特に有効です。画像のコスト関数は、ユーザーのローカルマシンで実行される量子変分アルゴリズムのコスト関数を表しています。

A sets of jobs being run in session mode and the other is being run in batch mode.  Between each job is the interactive TTL (interactive time to live).  The active window starts when the first job starts and ends after the last job is completed. After the final job of the first set of jobs completes, the active window ends and the session is paused (but not closed).  Another set of jobs then starts and jobs continue in a similar manner. The QPU is reserved for your use during the entire session.

session modeで実行するには、プリミティブをインスタンス化する際に mode=session を指定するか、セッションコンテキストマネージャー内でジョブを実行します。例についてはセッションでのジョブ実行を参照してください。

注意事項
  • セッション内に送信される最初のジョブのキューイング時間は短縮されません。そのため、単一ジョブを実行する場合、セッションによるメリットはありません。
  • Openプランのユーザーはセッションジョブを送信できません。

基本的なワークフロー​

バッチとセッションの基本的なワークフローは似ています。

  1. バッチまたはセッションの最初のジョブは通常のキューに入ります。バッチの場合、ジョブのバッチ全体がまとめてスケジュールされます。

  2. 最初のジョブが実行を開始すると、最大存続時間(TTL)タイマーが始まり、終了に達するまで停止または一時停止しません。

  3. インタラクティブTTLタイマーは各ジョブの完了後に開始されます。インタラクティブTTLウィンドウ内でワークロードジョブの準備ができていない場合、ワークロードは一時的に非アクティブ化され、通常のジョブ選択が再開されます。バッチまたはセッションが最大TTL値に達していない場合、ジョブが非アクティブ化されたワークロードを再アクティブ化できます。

    備考

    ワークロードを再アクティブ化するには、ジョブが通常のキューを通過する必要があります。

  4. 最大TTL値に達すると、ワークロードは終了し、残りのキュー内のジョブはすべて失敗します。現在実行中のジョブは、インスタンスのコスト制限を超える場合、完了まで実行されません。

以下のビデオは、セッションを例として基本的なワークフローを説明しています。

TTLタイマーの詳細については、最大実行時間ガイドを参照してください。

次のステップ​