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

Qiskit Runtimeワークロードの最大実行時間

公平性を確保するために、各Qiskit Runtimeジョブが実行できる時間にはサービスが算出する最大値が設定されています。ジョブがこの制限時間を超えた場合、強制的にキャンセルされ、RuntimeJobMaxTimeoutError例外が発生します。コストを管理するために、ジョブに最大実行時間を設定することもできます。

備考

コスト上限に達すると、セッションまたはバッチは即座に終了されます。

最大実行時間の設定

ジョブの最大実行時間は、以下の値のうち小さい方が適用されます:

  • max_execution_timeに設定された値
  • サービスが決定するジョブのタイムアウト値

max_execution_timeの値は、ウォールクロック時間ではなく、量子時間(quantum time)に基づいています。量子時間とは、QPUがお客様のジョブの処理に専念している時間のことです。

以下の例に示すように、ジョブオプションで最大実行時間(秒単位)を設定してください。オプションの設定方法については、オプションの指定を参照してください。

from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import EstimatorV2 as Estimator

service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)

estimator = Estimator(mode=backend)

estimator.options.max_execution_time = 2500

以下のようにジョブのメトリクスを取得することで、完了したジョブが使用した量子時間を確認することもできます:

# Find quantum time used by the job
print(f"Quantum time used by job {job.job_id()} was {job.metrics()['usage']['quantum_seconds']} seconds")

サービスが算出する最大実行時間

サービスは、入力回路とオプションに基づいて適切なジョブのタイムアウト値を算出します。このサービスが算出するタイムアウトは、デバイスの公平な使用を確保するために最大3時間に制限されています。ジョブにmax_execution_timeが指定されている場合は、2つの値のうち小さい方が使用されます。

たとえば、max_execution_time=5000(約83分)を指定しても、サービスがジョブの実行に5分(300秒)以上かかるべきではないと判断した場合、ジョブは5分後にキャンセルされます。

バッチの最大実行時間

バッチが開始されると、最大生存時間(maximum TTL)の値が割り当てられます。このTTLに達すると、バッチは終了され、すでに実行中のジョブは引き続き実行されますが、バッチ内に残っているキュー済みのジョブは失敗状態になります。

バッチには、設定できないジョブ間のインタラクティブな生存時間(interactive TTL)もあります。バッチを明示的にクローズしない場合、インタラクティブTTLが切れた後に非アクティブ化されますが、最大TTLに達するまでいつでも再アクティブ化できます。

これらの値の操作方法については、バッチでジョブを実行するを参照してください。

セッションの最大実行時間

セッションが開始されると、セッションの実行可能時間を決定する最大TTL値が割り当てられます。このTTLに達すると、セッションは終了され、すでに実行中のジョブは引き続き実行されますが、セッション内に残っているキュー済みのジョブは失敗状態になります。

設定できないインタラクティブTTL値もあります。その期間内にセッションのジョブがキューに入れられなかった場合、セッションは一時的に非アクティブ化されます。

これらの値の操作方法については、セッションでジョブを実行するを参照してください。

その他の制限事項

  • ジョブへの入力は50MBを超えることができません。
  • オープンプランのユーザーは、28日間のローリングウィンドウ内で最大10分の量子時間を使用できます。量子時間とは、QPUがお客様のジョブの処理に専念している時間のことです。インスタンスの使用状況はインスタンスページで確認できます。

次のステップ

Recommendations