セッション
class Session(backend, max_time=None, *, create_new=True)
ベース: object
Qiskit Runtime セッションを作成するためのクラス。
Qiskit Runtime session 量子コンピューターへの反復呼び出しのコレクションをグループ化することができる。 セッションが開始されるのは、セッション内の最初のジョブが開始されたときである。 セッション内の後続ジョブは、スケジューラによって優先順位が付けられる。
この Session クラスを使用して Qiskit Runtime セッションを開き、1 つ以上のプリミティブにジョブを投入できます。
例:
from qiskit.circuit import QuantumCircuit, QuantumRegister, ClassicalRegister
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager
from qiskit_ibm_runtime import QiskitRuntimeService, Session, SamplerV2 as Sampler
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
# Bell Circuit
qr = QuantumRegister(2, name="qr")
cr = ClassicalRegister(2, name="cr")
qc = QuantumCircuit(qr, cr, name="bell")
qc.h(qr[0])
qc.cx(qr[0], qr[1])
qc.measure(qr, cr)
pm = generate_preset_pass_manager(backend=backend, optimization_level=1)
isa_circuit = pm.run(qc)
with Session(backend=backend) as session:
sampler = Sampler(mode=session)
job = sampler.run([isa_circuit])
pub_result = job.result()[0]
print(f"Sampler job ID: {job.job_id()}")
print(f"Counts: {pub_result.data.cr.get_counts()}")パラメーター
- backend (BackendV2) –
Backendクラスのインスタンス。 - max_time (int | str | None) – ランタイムセッションが強制終了される前に開いていられる最大時間。 秒単位の整数(int)または文字列(例: “2h、 30m、 40s” )で指定できます。 この値は、システムが課す最大値よりも小さくなければなりません。
- create_new (bool | None) – Trueの場合、POSTセッションAPIエンドポイントが呼び出され、新しいセッションが作成されます。 が呼び出された
from_id()際に新しいセッションの作成を防止します。
レイズ
ValueError - 入力値が無効な場合。
属性
service
session_id
セッション ID を返します。
戻り値
セッション ID。 バックエンドがシミュレータの場合はなし。
方法
backend
cancel
close
close()
セッションを終了し、新しいジョブの受付を停止します。
セッションを閉じると、新しいジョブは受け付けられなくなりますが、キューに入れられたジョブや実行中のジョブは完了まで実行されます。 保留中のジョブがなくなると、セッションは終了する。
戻りの型
なし
details
details()
セッションの詳細を返す。
戻り値
セッションの詳細が記載された辞書。
idセッションのID。backend_nameセッションに使用するバックエンド。interactive_timeout:セッションが非アクティブになるまでに許容される、ジョブ間の最大アイドル時間(秒)。max_time:セッションの最大許容時間(秒)。active_timeout:セッションがアクティブでいられる最大時間(秒)。state:セッションの状態 - オープン、アクティブ、非アクティブ、クローズ。accepting_jobs:セッションが仕事を受け付けているかどうか。last_job_started:セッションの最後のジョブが開始された時のタイムスタンプ。last_job_completed:セッションの最後のジョブが完了した時のタイムスタンプ。started_at:セッション開始のタイムスタンプ。closed_at:セッションが終了した時のタイムスタンプ。activated_at:セッションの状態がアクティブに変更された時のタイムスタンプ。mode:セッションの実行モード。usage_time:セッションまたはバッチの使用時間(秒)。 使用量とは、量子システムがジョブを完了させるためにコミットしている時間のことである。
戻りの型
辞書[文字列、 任意] | なし
from_id
classmethod from_id(session_id, service, use_fractional_gates=False, calibration_id=None)
session_id指定された.を使用してSessionオブジェクトを作成します。
例:
from qiskit_ibm_runtime import QiskitRuntimeService, Session
service = QiskitRuntimeService()
job = service.job(<job_id>)
existing_session_id = job.session_id
new_session = Session.from_id(existing_session_id, service)パラメーター
- session_id (str) – 作成するセッションのID。 これは既存のセッションIDである必要があります。
- service (QiskitRuntimeService) – クラスの
QiskitRuntimeServiceインスタンス。session_id複数のインスタンスを使用する場合、アクティブなクラウドインスタンスは、serviceそのリソースへのアクセス権を持つインスタンスに置き換えられますのでご注意ください。 複数のインスタンスの使用方法に関するドキュメントとQiskitRuntimeService、アクティブなインスタンスを確認する方法active_instance()をご確認ください。 - use_fractional_gates (bool) – セッションの作成に使用されるバックエンドで、フラクショナルゲートを許可するかどうか。
- calibration_id (str | None) – セッションの作成に使用されるバックエンドのキャリブレーションID。
レイズ
- IBMInputValueError – 指定された session_id が存在しない場合。
- IBMRuntimeError – セッションのバックエンドが不明な場合。
戻り値
与えられた session_id
戻りの型
status
status()
現在のセッションの状態を返します。
戻り値
セッションの状態を文字列で表す。
Pending:セッションは作成されているが、アクティブではない。 このセッションの次のジョブがデキューされたときにアクティブになる。In progress, accepting new jobsセッションはアクティブで、新しい仕事を受け付けています。In progress, not accepting new jobsセッションはアクティブで、新しい仕事は受け付けていません。Closed: max_timeが切れたか、セッションが明示的に閉じられた。Noneステータスの詳細は不明。
戻りの型
str|なし
usage
usage()
セッションの使用量を秒単位で返します。
セッションの使用量は、最初のジョブが開始されてから、セッションが非アクティブになるか、閉じられるか、最後のジョブが完了するまでの時間である。
バッチ使用量は、すべてのジョブがQPUで費やす時間です。
戻りの型
フロート|なし