Qiskit 0.30 リリースノート
0.30.1
Terra 0.18.3
前奏曲
このバグフィックスリリースでは、 0.18 のいくつかのマイナーな問題を修正しています。 assemble の性能リグレッションを含みます。 QuantumCircuit オブジェクトを処理する際の性能の後退を含みます。
バグ修正
- を実行すると
AttributeErrorが発生する問題を修正した。ScheduleBlockが発生する問題を修正した。 のように、これらのブロックはパルスジョブとして正しく扱われるようになりました。Schedule. - 複素数パラメータ値を演算子の係数にバインドする際にエラーが発生する問題を修正しました。 の
float。PrimitiveOpへのキャストは、必要に応じてcomplexへのキャストへと一般化されたが、虚数成分がない場合はfloatのままとなる。 6976を修正。 - の1qubitゲートエラーを更新し
plot_error_mapを更新し、 u2 ゲートの代わりに sx ゲートを使うようにする。
エア 0.9.0
変更なし
イグニス 0.6.0
変更なし
アクア 0.9.5
変更なし
IBM Q プロバイダー 0.16.0
変更なし
0.30.0
Terra 0.18.2
変更なし
エア 0.9.0
前奏曲
0.9 リリースには、Dask分散を使用してHPCクラスタ上で大量の回路を並列エクゼキューションするための新しいバックエンドオプションと、その他の一般的なパフォーマンスの向上とバグ修正が含まれています。
新機能
-
set_matrixのサポートを追加した。
-
qiskitライブラリを追加する
SXdgGateおよびCUGateをAerシミュレータバックエンドでサポートされる基底ゲートに追加する。 ゲートはCUGateゲートがネイティブにサポートされているのは、statevectorとunitaryメソッドだけです。 他のシミュレーション手法の場合は、その手法でサポートされている基底ゲートにトランスパイルする必要があります。 -
AerSimulatorおよびQasmSimulatorのすべてのシミュレーション手法に、N量子ビット・パウリ・ゲート (qiskit.circuit.library.generalized_gates.PauliGate) のサポートを追加。 -
HPCクラスタ上で複数の回路を並列実行するために、カスタムエクゼキュータを設定し、ジョブ分割を構成する機能を追加しました。 カスタム・エクゼキューターは
executorオプションで設定でき、ジョブ分割はmax_job_sizeオプションで設定する。例えば、バックエンドを設定し、以下を使用して実行する
backend = AerSimulator(max_job_size=1, executor=custom_executor) job = backend.run(circuits)は、1つの回路を含む複数のジョブに分割する。 ジョブの分割が有効な場合、
runメソッドは、個々のAerJobクラスをすべて含むAerJobSetオブジェクトを返す。 個々のジョブの実行がすべて終了すると、ジョブ結果は自動的に1つのResultオブジェクトにまとめられ、job.result()によって返されます。サポートされるエクゼキュータには、 Python
concurrent.futuresモジュールに含まれるもの(例:ThreadPoolExecutor、ProcessPoolExecutor)、およびオプションのdaskライブラリがインストールされている場合は、 Dask 分散クライアントエクゼキュータが含まれます。 Daskエグゼキュータを使用することで、HPCクラスタ上で複数の回路の並列実行を構成することができます。 -
バックエンドオプション
mps_log_data=Trueを設定することで、実験結果のメタデータにmatrix_product_stateシミュレーションメソッドのロギングデータを記録する機能を追加。 保存されたデータには、結合寸法と、関連するすべての回路命令の後に廃棄された値(近似によって廃棄されたシュミット係数の2乗の合計)が含まれる。 -
AerSimulator、QasmSimulator、StatevectorSimulator、UnitarySimulatorのためのrun()メソッドには、新しいkwarg、parameter_bindsがある。このkwargは、インバウンド回路の未束縛パラメータに使用する値のリストを提供するために使用される。 例:from qiskit.circuit import QuantumCircuit, Parameter from qiskit.providers.aer import AerSimulator shots = 1000 backend = AerSimulator() circuit = QuantumCircuit(2) theta = Parameter('theta') circuit.rx(theta, 0) circuit.cx(0, 1) circuit.measure_all() parameter_binds = [{theta: [0, 3.14, 6.28]}] backend.run(circuit, shots=shots, parameter_binds=parameter_binds).result()は、θに0、 3.14、 6.28 の値を指定して入力回路を3回実行する。 複数のパラメータで実行する場合、値リストの長さはすべて同じでなければならない。 複数の回路で実行する場合、
parameter_bindsの長さは入力回路の数と一致する必要があります(回路にバインドがない場合は、空のdict、{}を使用できます)。 -
PulseSimulator。QuantumCircuitオブジェクトをrun()。 以前はScheduleオブジェクトだけをrun()への入力としていた。 回路または回路のリストがシミュレータに渡されると、回路を実行する前に、回路をスケジュールに変換するためにschedule()を呼び出して回路をスケジュールに変換してから実行します。 例:from qiskit.circuit import QuantumCircuit from qiskit.compiler import transpile from qiskit.test.mock import FakeVigo from qiskit.providers.aer.backends import PulseSimulator backend = PulseSimulator.from_backend(FakeVigo()) circuit = QuantumCircuit(2) circuit.h(0) circuit.cx(0, 1) circuit.measure_all() transpiled_circuit = transpile(circuit, backend) backend.run(circuit)
既知の問題
QasmSimulator、AerSimulatorの extended_stabilizer メソッドにおいて、特定のパウリ演算子成分に対して不正な値を返すため、SaveExpectationValue、SaveExpectationValueVarianceが無効化されました。 詳しくは#1227 <https://github.com/Qiskit/qiskit-aer/issues/1227> を参照。
アップグレードの注意
- qiskit-terra の
u3回路メソッドの非推奨と qiskit-ibmq-provider バックエンドの基底ゲートの変更により、NoiseModelクラスのデフォルト基底が["id", "u3", "cx"]から["id", "rz", "sx", "cx"]に変更されました。 古い基底ゲートを使うには、NoiseModel(basis_gates=["id", "u3", "cx"])として、カスタム基底ゲートでノイズモデルを初期化することができる。 - qiskit-aer 0.7 で非推奨となった Aer バックエンドの
runメソッドからbackend_optionskwarg を削除。 すべての実行オプションは別々のkwargsとして渡されなければならなくなった。 PulseSimulatorのrunメソッドの位置引数としてsystem_modelを渡すことを削除。
非推奨のメモ
- アセンブルしたqobjをAerシミュレータのバックエンドの
run()メソッドに直接渡すことは廃止され、トランスパイルサーキットをbackend.run(circuits, **run_options)として直接渡すようになりました。 qiskit.providers.aer.extensions、すべてのスナップショット命令は非推奨となった。 交換には、qiskit.providers.aer.libraryモジュールの保存手順を使用してください。NoiseModelに非局所量子エラーを追加することは、このノイズが最適化された回路に適用される方法に矛盾があるため、非推奨となっている。 非局所ノイズは、シミュレータで実行する前に、Qiskitでカスタムトランスパイラパスを使用してスケジュールされた回路に手動で追加する必要があります。- GPU シミュレーションを実行するための
StatevectorSimulator,UnitarySimulatorのmethodオプションの使用は廃止されました。 互換性のあるシステムでGPUシミュレーションを実行するには、代わりにdevice='GPU'。
バグ修正
basis_gatesコンフィギュレーション属性の設定方法に関するパフォーマンスの問題を修正。 以前はバックエンドクラスに意図しない副作用があり、シミュレーションの繰り返し実行時間が漸増することがありました。 詳しくは#1229 <https://github.com/Qiskit/qiskit-aer/issues/1229> を参照。- MPS::apply_krausのバグを修正した。 関連する量子ビットにクラウス行列を適用した後、隣接する量子ビットに変更を伝播させる必要がある。
- qiskit-terraがマルチプレクサーゲート内の量子ビットが最初にターゲット、次にゲートのコントロールであると仮定しているのに対し、qiskit-aerが逆の順序を仮定しているバグを修正しました。
- 0.8.0、GPUシミュレーションでGPUメモリに加えて不要なホスト・メモリが割り当てられるバグが修正されました。
- initialize命令が最初の回路命令であったり、全ての量子ビットに適用され、決定論的であったとしても、状態ベクトルおよび行列積状態シミュレーション法における測定サンプリング最適化を無効にしてしまうバグを修正。
- ノルム推定アルゴリズムではなく、計算基底状態との内積を使ってノルムを計算するように問題#1196を修正。
QasmSimulatorとAerSimulatorのstabilizerシミュレーターメソッドにおいて、save_expectation_valueとsnapshot_expectation_valueの期待値が特定のYパウリに対して誤った符号を持つ可能性があるバグを修正。- 必要なメモリがシステムメモリより小さい場合、マルチチャンクシミュレーションが有効になってもシミュレーションが開始される不具合を修正しました。 この場合、メモリ不足例外がスローされる。
set_options(shots=k)を持つバックエンドにshotsオプションを設定すると、常に指定された値ではなくデフォルトのショット数(1024)が実行される問題を修正。AerSimulatorがmax_parallel_experiments=1のオプション値を処理する方法のバグを修正。 これまではmax_parallel_experiments=0と同じ扱いだった。extended_stabilizerシミュレーションメソッドにおいて、qelayゲートとマルチ量子ビットのパウリ命令がサポートされていないものとして誤って扱われていたバグを修正。AerSimulatorとQasmSimulatorのextended_stabilizer_norm_estimation_repetitionsオプションのタイプミスを修正。matrix_product_stateシミュレーションメソッドでunitaryゲートを適用する際に、ゲートが適用される量子ビットの順序の並べ替えを正しくサポートしていなかったバグを修正。- ゲート・フュージョンがサポートされていないにもかかわらず、
matrix_product_stateシミュレーション・メソッドでゲート・フュージョンが有効になってしまう問題を修正しました。 この方法では、フュージョンは常に無効になっている。 matrix_product_state、SVDを実行した後にシュミット係数を切り捨て、正規化を計算する際のシミュレーション方法のバグを修正。
その他の注意事項
matrix_product_stateシミュレーション法の測定サンプリングアルゴリズムの性能を向上。 新しいデフォルトの動作は、常に改良されたmps_apply_measureメソッドを使ってサンプリングする。 カスタム・オプション値mps_sample_measure_algorithm="mps_probabilities"を設定することで、mps_probabilitiesサンプリング方法を使用することができます。
イグニス 0.6.0
変更なし
アクア 0.9.5
変更なし
IBM Q プロバイダー 0.16.0
変更なし