Qiskit 0.46 リリースノート
0.46.3
前奏曲
Qiskit 0.46.3 は 0.46 シリーズのマイナーなバグ修正とバックポートリリースです。 このリリースは、 0.46 のマイナーバージョンの最後のリリースでもあり、その寿命を示すものでもある。
バグ修正
-
のデコレーターが欠落していたのを修正した。
C3SXGateがGate.to_matrix()が呼ばれた場合に失敗していたのを修正した。 ゲートマトリックスは期待通りに戻ってきた。 -
属性を使用する場合
QuantumCircuit.parameters属性は、パラメトリック回路でQuantumCircuit.copy_empty_like()を使用した場合、属性は正しく空になります。 以前は、内部キャッシュは無効化されることなくコピーされていた。 修正 #12617。 -
を修正しました。
SolovayKitaev既存の.npyファイルから基本近似値を読み込む際のトランスパイラ・パスを修正。 以前は、(ゲートのキャンセルなどによる)さらなる削減を可能にする保存された近似値をロードすると、実行時に失敗することがあった。 さらに、U(2)ゲート積とSO(3)表現の大域的な位相差は、保存-再読み込み手順の間に失われた。 修正 Qiskit/qiskit#12576. -
コンストラクター
GenericBackendV2は、バックエンドのサイズに割り当てることができない基底ゲートを受け入れていたため、不正なバックエンドの作成を許していた。 つまり、1量子ビットを持つバックエンドは、2量子ビットのゲートを持つ基底を受け入れるべきではない。 -
以前は
DAGCircuit.replace_block_with_op()n-qubitオペレーションをmqubitのブロックに置くことができ、DAGを無効な状態にすることができた。 この動作は修正され、この試行ではDAGCircuitError.
その他の注意事項
- このリリースでは、 constraints.txt ファイルを拡張し、Qiskit 0.46.3 依存関係の固定バージョン番号の完全なリストを追加しました。 このリリースで 0.46 のバージョンが終了するため、 constraints.txt のバージョン仕様に基づき、今後も再現可能なインストール環境が保証されます。
0.46.2
前奏曲
Qiskit 0.46.2 は、 0.46 シリーズのマイナーなバグフィックスとバックポートのリリースです。
新機能
- Qiskit の本リリースでは、 NumPy 2.0 のサポートを最終的に完了しました。 Qiskitは当面、Numpy 1.x と 2.x の両方をサポートし続けます。
バグ修正
-
mpl出力オプションを使用する際、circuit_drawer()またはQuantumCircuit.draw()で、描画される回路に ControlFlow 操作があり、foldオプションが -1 に設定されている場合(折り返しがないことを意味する)、プログラムがハングする問題を修正しました。 修正 #12012。 -
これにより
EvolvedOperatorAnsatzは、演算子の引数が空リストの場合を正しく処理するようになった。 以前はエラーになっていた。 -
これからは
EvolvedOperatorAnsatzは、量子ビットがゼロのときにはqregを持たない。QuantumRegisterインスタンスを持つ代わりに この動作は、スーパークラスとの整合性をより高めています。QuantumCircuit. -
メソッド
Instruction.repeat()メソッドはconditionを外側の返されたInstructionに移動し、その定義の内側のゲートは無条件のままにする。 以前はClassicalRegisterインスタンスを内部定義に残していましたが、これは無効な状態であり、後でトランスパイルやエクスポートの際など、一見無関係なバグとして現れていました。 #11935 を修正。 -
特定のパルス単位を秒とナノ秒の間でスケーリングする際の浮動小数点の不正確さを修正。 パルスが記号的に定義されていた場合、
symengineの特定のビルドに対するスケーリングによって不要な浮動小数点エラーが発生する可能性があり、記号が完全にバインドされた後に予期しない結果が現れる可能性がある。 12392を参照。 -
引数でdraw関数が呼び出されたときにパルススケジュールを描画しない
qiskit.visualization.pulse_v2.interface.draw()のバグを修正。BackendV2引数で呼び出された場合にパルススケジュールを描画しないバグを修正しました。 V2 バックエンドはハードウェア・チャンネルの周波数を報告しないため、生成された図面は「no freq」と表示される 各チャンネルのラベルの下。 -
この
VF2Layoutを渡すと例外が発生する。Targetを渡すと例外が発生する。 これはAer 0.13 からのターゲットの場合である。 この問題は解決されました。 -
デフォルトの
initプラグインは、無効な最適化レベルで呼び出されたときにTranspilerErrorを適切に発生させていませんでした。 -
PassManager.run()は、複数の入力が与えられたときに、シリアルのみで動作するのであれば、それ自身をシリアル化するのに時間を浪費することはなくなる。 -
OpenQASM 2.0 パーサー (
qasm2.load()とqasm2.loads()) は、システム・サイズの整数をオーバーフローするような整数オペランドを含むゲート角式を評価できるようになりました。 これらは倍精度浮動小数点のコンテキストで評価される。 注意:任意に大きな整数は、必ずしも倍精度浮動小数点数で正確に表現できるわけではないので、回路がどのように生成されたとしても、すでにすべての数値精度を失っている可能性がありますmodulo 。
0.46.1
前奏曲
Qiskit 0.46.1 は 0.46 シリーズのマイナーバグフィックスリリースです。
バグ修正
-
の問題を修正しました。
convert_to_target()コンバーターが、BackendConfiguration.supported_instructions属性で指定された制御フロー命令を誤って無視する問題を修正しました。BackendConfigurationオブジェクトで指定される典型的な場所です。 #11872 を修正。 -
を呼び出すと
EquivalenceLibrary.set_entry()を呼び出すと、ライブラリーの内部グラフ・オブジェクトが正しく更新されるようになった。 以前は、メタデータは更新されたが、グラフ構造は変更されなかった。BasisTranslatorのようなユーザーは古いルールを使い続けることになる。 #11958 を修正。 -
BasePassManager.run()は、以前のPropertySetを複数回呼び出した場合でも、新しいワークフローに前のワークフローが漏れることはなくなった。 以前はPropertySetを使用していたため、無効なプロパティ情報がタスクに与えられていた可能性があった。 Qiskit 0.44 の動作と一致するようになった。 #11784 を修正。 -
バックエンドのプロパティと設定情報を更新した。
FakeOpenPulse2Qを更新しました。 パルスのデフォルトで定義されたいくつかのゲートに欠けていたゲート・プロパティが追加され、2つの場所で定義されたゲートの整合性が保たれるようになった。 -
モニタリングツールモジュール
qiskit.tools.monitor(現在は廃止されたモジュールqiskit.tools)が期待通りに動くように更新されました。 関数job_monitor()はJobインスタンスで動作するようになりました。 機能backend_overview()とbackend_monitor()は期待通りに動作するはずである。 -
InstructionDurations.from_backend()のサブクラスのインスタンスを返すようになった。InstructionDurationsのインスタンスを返すようになりました。
0.46.0
前奏曲
0.46.0 リリースは、 0.x シリーズの最終マイナーバージョンリリースである。 このリリースでは主に、将来のメジャーバージョンリリース 1.0.0 で予定されているAPIの変更に対応するため、新しい非推奨警告を追加しています。 Qiskit 0.45.x リリースと完全に互換性があります。 Qiskit 1.0.0 で変更されるインターフェイスに関する警告を確認できるよう、 0.45.x から 0.46.0 へアップグレードすることを強くお勧めします。
0.46.x リリースシリーズは、本リリース後6ヶ月間、パッチリリースによるバグフィックスとセキュリティフィックスのサポートが継続されます。 リリーススケジュールとサポートサイクルの詳細については、 start/install#qiskit-versioningを参照してください。
プロジェクトがQiskitに依存している場合、Qiskit 1.0.0 でサポートされなくなる機能に依存している可能性があります。 このため、サポートされるバージョンの上限を <1.0 に積極的に設定することをお勧めします。 Qiskit 1.0.0 は、Qiskit 0.46.0 の約2週間後、2024-02-15にリリースされる予定です。
Qiskitのパッケージ構造はQiskit 1.0 で変更されており、残念ながら変更された要件を pip に完全に伝えることはできません。特に、環境が初期設定された後に pip install --upgrade コマンドが実行された場合。 Qiskitの 1.0 以前のすべてのバージョン(このバージョンを含む)には、Qiskit 1.0 とのインストールの競合があり、 pip では解決できません。
import qiskit で ImportError が発生した場合、あなたの環境は無効な状態にあり、Qiskit 0.45/0.46 と 1.0 の両方のバージョンに到達可能です。 新しい仮想環境を作成し、2つのバージョンのうち1 つだけをインストールする必要があります。 特に Qiskit 1.0 をインストールするつもりなら、 qiskit-terra に依存するパッケージがインストールされていない必要があります。これらのパッケージは Qiskit 1.0 と互換性がないため、更新する必要があります。 Qiskit 0.45 または 0.46 をインストールしようとする場合、 qiskit>=1.0 をインストールしようとするものがないことを確認する必要があります。
Qiskit ベースのライブラリを開発していて、まだ qiskit-terra に依存している場合、 qiskit にのみ依存する新しいパッケージを緊急にリリースすべきです。 バージョン 0.44 以降、 qiskit パッケージには、 qiskit-terra コンパイラーコア(現在は単に「Qiskit」と呼ばれるコンポーネント)のみが含まれています。したがって、最小バージョンが 0.44 の場合、 qiskit-terra>=0.44 の依存関係を qiskit>=0.44 に切り替えても、インストールされるものに変更はありません。 テストと準備の詳細と推奨事項については、 マイグレーションガイドの開発者向けセクションを参照してください。
新機能
-
新しい機能が追加されました、
qs_decomposition()が追加された。qiskit.synthesis. この関数は、任意のユニタリーに対して量子シャノン分解を適用することができる。 -
新しい
qiskit.providers.basic_providerモジュールが導入された。qiskit.providers.basicaer. このモジュールには、BasicAerプロバイダーのツールを反映したプロバイダー・ツールが含まれており、単一の、非効率的な、ステートベクター・ベースのシミュレーターを提供します:BasicSimulator. このシミュレーターはBackendV2インターフェースに基づいており、テストと簡単なプロトタイピング専用です。より高度なシミュレーション機能については、qiskit-aerパッケージを参照してください。 移行のガイドラインについては、BasicAer非推奨ノートを参照のこと。 -
インターフェイスとトランスパイラパイプラインは
Targetインターフェースとトランスパイラ・パイプラインは、num_qubits=Noneを使ったターゲット定義をサポートするようになりました。 これはTarget-ベースのシミュレータを作成できるようにするためである。num_qubits=Noneを持つターゲットは、もっぱらグローバル命令(qargs=Noneを持つ)を含み、トランスパイラに渡されたとき、トランスパイラが回路サイズを変更しないことが期待される。 このTargetの変更は、target.num_qubits is None. -
新しいクラス
GenericBackendV2がqiskit.providers.fake_providerモジュールに追加されました。 このクラスは設定可能で、ローカルで実行可能なBackendV2インスタンスを構築します。 ユーザーは、手動でターゲットを構築することなく、バックエンドの量子ビット数、基底ゲート、カップリングマップ、ダイナミック回路(制御フロー命令)の実行能力、命令キャリブレーション、dtmを設定することができる。 キュービットとゲートのプロパティは、デフォルトの範囲からランダムにサンプリングして生成されます。 このランダム生成のシードは、バックエンド出力の再現性を確保するために固定することができる。 このバックエンドは、標準ライブラリーのゲートしかサポートしていないことに注意することが重要だ。 より柔軟なバックエンドが必要な場合は、トランジレーションに使用するTargetオブジェクトを直接インスタンス化するオプションがあります。使用例 1:
from qiskit import QuantumCircuit, transpile from qiskit.providers.fake_provider import GenericBackendV2 # Create a simple circuit circuit = QuantumCircuit(3) circuit.h(0) circuit.cx(0,1) circuit.cx(0,2) circuit.measure_all() circuit.draw('mpl') # Define backend with 3 qubits backend = GenericBackendV2(num_qubits=3) # Transpile and run transpiled_circuit = transpile(circuit, backend) result = backend.run(transpiled_circuit).result()使用例 2:
from qiskit import QuantumCircuit, ClassicalRegister, transpile from qiskit.providers.fake_provider import GenericBackendV2 # Create a circuit with classical control creg = ClassicalRegister(19) qc = QuantumCircuit(25) qc.add_register(creg) qc.h(0) for i in range(18): qc.cx(0, i + 1) for i in range(18): qc.measure(i, creg[i]) qc.ecr(20, 21).c_if(creg, 0) # Define backend with custom basis gates # and control flow instructions backend = GenericBackendV2( num_qubits=25, basis_gates = ["ecr","id","rz","sx","x"], control_flow=True) #Transpile transpiled_qc = transpile(qc, backend)注これらのクラスが生成するノイズ特性は、具体的な量子デバイスを模倣したものではなく、具体的なバックエンドの動作を測定するために使用されるべきものではない。 これらは、一般的なバックエンドとのインターフェイス機能をテストするために使用できる「合理的なデフォルト」である。 既存のデバイスをより正確にシミュレーションするために、
qiskit-aerで提供されている機能を使って、実際のバックエンドからノイズモデルを手動で構築することができます。
アップグレードの注意
symengineに必要な最小バージョンは >= 0.11 に変更された。 これによりParameterExpression.is_real()の以前のリリースのバグを処理するために、symengine。
非推奨のメモ
-
その
ScheduleBlock.scoped_parameters()メソッドとScheduleBlock.search_parameters()メソッドは非推奨となった。 これらのメソッドはParameterオブジェクトを生成します。 このメソッドの本来の意図は、これらのオブジェクトがまだ元のスコープなしオブジェクトにリンクしていることだった。Parameterオブジェクトにリンクしている。 しかし、名前を変更するとリンクが切れてしまうため、スコープ付きバージョンを使った割り当てが機能しなくなる。 詳しくは #11654を参照のこと。 -
を渡す。
QuasiDistribution,ProbDistributionまたはディストリビューション・ディクショナリをdata。plot_histogram()を渡すことは非推奨となりました。 これを行うためのサポートはQiskit 1.0 リリースで削除されます。 からヒストグラムをプロットしたい場合は、次のようにします。QuasiDistribution,ProbDistributionまたは分布辞書からヒストグラムをプロットしたい場合はplot_distribution()関数を使うべきである。 -
qiskit-terraPython パッケージは非推奨であり、Qiskit 1.0.0 から更新を受けられなくなります。qiskit-terraを単独でインストールしている場合、 Qiskit>=1.0.0 のアップデートは行われません。qiskitパッケージなしでqiskitを実行している場合、FutureWarningがインポート時に発行されます。qiskitqiskitが発行されます。 -
qiskit.Aerオブジェクトの使用は非推奨であり、 Qiskit 1.0 で削除される予定です。 代わりに、qiskit_aerネームスペースの同じオブジェクトを使うべきである。 -
qiskit.providers.aerからのインポートは非推奨であり、Qiskit 1.0 では機能しなくなります。 代わりに、qiskit_aerからインポートする必要がある。 -
からのバックエンドでのパルスジョブの実行は非推奨です。
qiskit.providers.fake_providerからのバックエンドの実行は非推奨であり、すべてのサポートは Qiskit 1.0 で削除されます。 これは、Qiskit Aerがこのようなジョブに対するシミュレーション機能を削除したためである。 低レベルのハミルトニアン・シミュレーションのワークロードには、 Qiskit Dynamicsのような専門ライブラリの使用を検討してください。 -
qiskit.transpiler.synthesisモジュールは非推奨であり、Qiskit 1.0 で削除される予定です。 以下のオブジェクトが移動しました:qiskit.transpiler.synthesis.aqcに移動しました。qiskit.synthesis.unitary.aqc(qiskit.synthesis.unitary.aqc.AQCSynthesisPluginを除く)。qiskit.synthesis.unitary.aqc.AQCSynthesisPluginはqiskit.transpiler.passes.synthesis.AQCSynthesisPluginに移動した。qiskit.transpiler.synthesis.graysynth()に移動した。qiskit.synthesis.synth_cnot_phase_aam().qiskit.transpiler.synthesis.cnot_synth()に移動した。qiskit.synthesis.synth_cnot_count_full_pmh().
-
qiskit.tools.jupyterモジュールは非推奨となり、Qiskit 1.0.0 で削除される予定です。 このモジュールの機能は、もはやサポートされていないレガシーのqiskit-ibmq-providerパッケージと結びついており、また、サポートされているのは以下のものだけであるため、このモジュールは非推奨となっている。BackendV1. 現在この機能を使用している場合、同様のjupyterツールが qiskit-ibm-provider パッケージに存在するので、それを代わりに使用することができます。 -
qiskit.tools.monitorモジュールは非推奨となり、Qiskit 1.0.0 で削除される予定です。 このモジュールの機能は、もはやサポートされていないレガシーのqiskit-ibmq-providerパッケージと結びついており、また、サポートされているのは以下のものだけであるため、このモジュールは非推奨となっている。BackendV1. -
qiskit.tools.visualizationモジュールは非推奨となり、Qiskit 1.0.0 で削除される予定です。 このモジュールはQiskitの視覚化モジュールの元の場所からレガシーリダイレクトされたもので、Qiskitの。qiskit.visualization0.8.0 に移動されました。 もしまだこのパスを使っているのであれば、インポートをqiskit.tools.visualizationからqiskit.visualization. -
qiskit.tools.eventsモジュールとそれが公開していたprogressbar()ユーティリティは非推奨となり、Qiskit 1.0.0 リリースで削除される予定です。 このモジュールの機能はあまり使われておらず、 tqdmのような専用パッケージの方がよくカバーされていた。 -
qiskit.toolsモジュールは非推奨となり、Qiskit 1.0.0 で削除される予定です。 上記のリリースノートで特定のサブモジュール (qiskit.tools.jupyter,qiskit.tools.monitor,qiskit.tools.eventsandqiskit.tools.visualization) について言及している場合を除き、このモジュールの機能は以下に移行されました。qiskit.utils. このモジュールの機能を使用している場合は、インポートをqiskit.toolsからqiskit.utils. -
モジュール
qiskit.testは非推奨。 このモジュールにはQiskit内部テスト用のツールやヘルパーが含まれており、その機能のほとんどはQiskitに移動されたか、もう使われていません。 実際には、このモジュールは外部で使用されることは想定されていなかった。 モジュール内のコードのうち、Qiskit以外でどうしても必要なものがあれば、そのコードをあなた自身のテスト基盤にコピーすることを検討してください。 -
qiskit.quantum_info.synthesisモジュールは非推奨であり、Qiskit 1.0.0 で削除される予定です。 以下のオブジェクトはqiskit.synthesis:OneQubitEulerDecomposerに移動した。qiskit.synthesis.one_qubitTwoQubitBasisDecomposerに移動した。qiskit.synthesis.two_qubitsXXDecomposerに移動した。qiskit.synthesis.two_qubitstwo_qubit_cnot_decompose()に移動した。qiskit.synthesis.two_qubits
このクラスは
Quaternionはqiskit.quantum_info.synthesisからqiskit.quantum_info. この移動はクラスの通常のインポートパスには影響しないが、qiskit.quantum_info.synthesisを経由したアクセスは非推奨となった。この関数は非推奨であり、Qiskit では削除される予定です。 1.0.0:
cnot_rxx_decompose()
-
にあったレガシー OpenQASM 2 パーサー・モジュールは非推奨となりました。
qiskit.qasmは非推奨となった。 Qiskit 1.0.0 リリースで削除されます。 レガシーな OpenQASM 2パーサーは、より高速でより正しい 2パーサーを提供するqiskit.qasm2モジュールに取って代わられました。このモジュールは OpenQASM 2 用のより高速で正しいパーサーを提供します。 -
qiskit.converters.ast_to_dag関数は非推奨となり、Qiskit 1.0.0 リリースで削除される予定です。 以前は、レガシーな OpenQASM 2パーサーが生成した抽象構文木を(非推奨のqiskit.qasmモジュール)で生成された抽象構文木を直接DAGCircuit. OpenQASM 2のレガシー・パーサーは廃止されたので、レガシー・パーサーが削除された後、この関数はもはや役割を果たさない。 以前はこれを使用していた場合は、代わりに OpenQASM 2 ファイルをパースしてQuantumCircuitにパースできます。QuantumCircuit.from_qasm_file()またはQuantumCircuit.from_qasm_str()コンストラクタのメソッドを使ってQuantumCircuitをDAGCircuitに変換します。circuit_to_dag(). -
その
QuantumCircuit.qasm()オブジェクトの OpenQASM 2 表現を生成するために使用されたメソッドは非推奨となり、Qiskit リリースで削除される予定です。QuantumCircuitオブジェクトの表現を生成するメソッドは非推奨となり、Qiskit 1.0.0 リリースで削除される予定です。 そのqasm2.dump()またはqasm2.dumps()関数を使うべきである。 もしQuantumCircuit.qasm()メソッドを使っていた場合は、代わりにこの機能を提供するスタンドアロンのopenqasm-pygmentsパッケージを見る必要があります (qasm2.dump()とqasm2.dumps()はpygmentsの色付き出力を提供しません)。 -
ベースクラスと
ParametricPulse基底クラスとパルスは現在非推奨となっており、 Qiskit 1.0 で削除される予定です。 こちらには以下の内容が含まれます:ParametricPulseConstantDragGaussianGaussianSquare
このクラスは
SymbolicPulse、対応するパルス・ライブラリに取って代わられた。SymbolicPulseは、より優れたパフォーマンス、柔軟性、QPYサポートを提供する。 -
この
NoiseAdaptiveLayoutトランスパイラー・パスと対応する"noise_adaptive"レイアウト・ステージ・プラグインは非推奨となり、 1.0.0 リリースで削除される予定です。 に取って代わられた。VF2LayoutとVF2PostLayoutに取って代わられ、バックエンドの報告されたノイズ特性に基づいてレイアウトを設定するようになった。 -
この
CrosstalkAdaptiveScheduleトランスパイラー・パスは非推奨となり、 1.0.0 リリースで削除される予定です。 このパスの内部動作は、カスタムプロパティがBackendPropertiesインスタンスのペイロードにBackendV1インスタンスのペイロードに設定されているカスタムプロパティに依存していたためです。 どのバックエンドもこれらのフィールドを設定しないため、このパスは非推奨となった。 -
qiskit.visualization.qcstyleモジュールは非推奨となり、Qiskit 1.0.0 リリースで削除される予定です。 その代わり、qiskit.visualization.circuit.qcstyle。 -
パルスビルダー・コンテキストへの回路ゲート操作の注入は非推奨となった。 非推奨となるのは以下の関数である:
call_gate(),cx(),u1(),u2(),u3(),x()
型の入力引数と同様に
QuantumCircuitの型call().それでもなお、バックエンドで較正されたスケジュールを注入したい場合は、ゲートコマンドを呼び出す代わりに、以下のパターンを使うことができる。
from qiskit.providers.fake_provider import GenericBackendV2 from qiskit import pulse backend = GenericBackendV2(num_qubits=5) sched = backend.target['x'][(qubit,)].calibration with pulse.build() as only_pulse_scheds: pulse.call(sched)同様に
QuantumCircuitをビルダー・コンテキストに注入するには、手動でオブジェクトをトランスパイルしてスケジューリングします。from math import pi from qiskit.compiler import schedule, transpile qc = QuatumCircuit(2) qc.rz(pi/2, 0) qc.sx(0) qc.rz(pi/2, 0) qc.cx(0, 1) qc_t = transpile(qc, backend) sched = schedule(qc_t, backend) with pulse.build() as only_pulse_scheds: pulse.call(sched)いずれにせよ、ビルダーで最小限のパルス・プログラムを書いて、それを
QuantumCircuitメソッドを介してQuantumCircuit.add_calibration()メソッドを使ってゲート命令のマイクロコードとしてアタッチすることを推奨します。の以下の引数も非推奨である。
build()の以下の引数も非推奨となった:default_transpiler_settingsdefault_circuit_scheduler_settings
機能とともに:
-
の以下のツールは非推奨です。
qiskit.utilsは非推奨となった:- ユーティリティ
qiskit.utils.arithmetic - ユーティリティ
qiskit.utils.circuit_utils - ユーティリティ
qiskit.utils.entangler_map - ユーティリティ
qiskit.utils.name_unnamed_args
これらの関数は、
qiskit.algorithmsとqiskit.opflowのコンテキストでのみ使用されており、Qiskit 1.0 のqiskit.algorithmsとqiskit.opflowの削除に伴い、削除される予定です。 - ユーティリティ
-
この
qiskit.providers.fake_providerモジュールはqiskit-ibm-runtimePython パッケージに移行された。 このためqiskit.providers.fake_providerの以下の要素はQiskit 0.46 で非推奨となり、Qiskitでは削除される予定です。 1.0:qiskit.providers.fake_provider.FakeProviderqiskit.providers.fake_provider.FakeProviderForBackendV2qiskit.providers.fake_provider.FakeProviderFactoryqiskit.providers.fake_provider.fake_backends.FakeBackendV2qiskit.providers.fake_provider.backendsに含まれる偽のバックエンド(プロバイダーを通してアクセスできる)qiskit.providers.fake_provider.FakeQasmSimulatorqiskit.providers.fake_provider.FakeJobqiskit.providers.fake_provider.FakeQobj
新しい偽プロバイダーへの移行例:
# Legacy path from qiskit.providers.fake_provider import FakeProvider, FakeSherbrooke backend1 = FakeProvider().get_backend("fake_ourense") backend2 = FakeSherbrooke() # New path # run "pip install qiskit-ibm-runtime" from qiskit_ibm_runtime.fake_provider import FakeProvider, FakeSherbrooke backend1 = FakeProvider().get_backend("fake_ourense") backend2 = FakeSherbrooke()さらに、特別なテスト目的で設計された以下の偽のバックエンドは、新しい
GenericBackendV2クラスに取って代わられ、Qiskit では非推奨となっています。 0.46:qiskit.providers.fake_provider.fake_backend_v2.FakeBackendV2qiskit.providers.fake_provider.fake_backend_v2.FakeBackendV2LegacyQubitPropsqiskit.providers.fake_provider.fake_backend_v2.FakeBackend5QV2qiskit.providers.fake_provider.fake_backend_v2.FakeBackendSimple
新しいクラスへの移行例
GenericBackendV2クラスへの移行例です:# Legacy path from qiskit.providers.fake_provider import FakeBackend5QV2 backend = FakeBackend5QV2() # New path from qiskit.providers.fake_provider import GenericBackendV2 backend = GenericBackendV2(num_qubits=5) # note that this class will generate 5q backend with generic # properties that serves the same purpose as FakeBackend5QV2 # but will generate different results -
この
qiskit.extensionsモジュールは非推奨となった。 Qiskit 0.45 のリリース以来、非推奨となっていました。 ほとんどのオブジェクトはqiskit.circuit.libraryに移動した:DiagonalGate,HamiltonianGateGate,Initialize,Isometry,MCGupDiag,UCGate,UCPauliRotGate,UCRXGate,UCRYGate,UCRZGate,UnitaryGate.
オブジェクトの非推奨化に伴い、以下の回路メソッドも非推奨となった:
QuantumCircuit.diagonal,QuantumCircuit.hamiltonian,QuantumCircuit.isometryとQuantumCircuit.iso、QuantumCircuit.uc,QuantumCircuit.ucrx,QuantumCircuit.ucry,QuantumCircuit.ucrz.
-
Qiskitの
execute()関数は非推奨です。 この関数は、いくつかのtranspileオプションを使って回路をトランスパイルし、いくつかのrunオプションを使ってバックエンドでそれを実行するための高レベルのラッパーとして機能した。 同じことをするには、明示的にtranspile()関数(適切なtranspileオプション付き)の後にbackend.run()(適切なrunオプション付き)を続ける。例えば、走る代わりに:
from qiskit import execute job = execute(circuit, backend)走ることができる:
from qiskit import transpile new_circuit = transpile(circuit, backend) job = backend.run(new_circuit)あるいは、
Samplerプリミティブは非推奨のexecute()関数と意味的に等価である。 クラスBackendSamplerはプリミティブをサポートしないバックエンドのための汎用ラッパーです:from qiskit.primitives import BackendSampler sampler = BackendSampler(backend) job = sampler.run(circuit) -
への暗黙の変換は、Qiskit
BaseOperator`の時点で非推奨となっています。SparsePauliOpEstimatorへの暗黙の変換は Qiskit 0.46 で非推奨となり、Qiskit 1.0 で削除される予定です。 に明示的に変換する必要があります。SparsePauliOp代わりにSparsePauliOp.from_operator()に変換すべきである。 -
離散パルス・ライブラリは現在非推奨であり、将来のリリースで削除される予定である。 こちらには以下の内容が含まれます:
constant()zero()square()sawtooth()triangle()cos()sin()gaussian()gaussian_deriv()sech()sech_deriv()gaussian_square()drag()
代わりに、対応する
SymbolicPulseを使用する。get_waveform(). 例えば、pulse.gaussian(100,0.5,10)の代わりにpulse.Gaussian(100,0.5,10).get_waveform()を使う。Sawtooth、Squareの位相は、 の位相が1サイクルずれるように定義されている。 また、シンボリック・パルス・ライブラリでは、複素振幅のサポートは非推奨であることに注意。代わりに、float、amp、angle。 -
この
ConfigurableFakeBackendクラスは、主に内部テストに使われてきましたが、現在は非推奨となっています。 Qiskit 1.0.0 リリースで削除されます。 代わりにGenericBackendV2クラスを使ってテスト用の同様のバックエンドを作ることができます。 -
バージョン5以下のqpyファイル(Qiskit Terra < 0.23.0 )から、複雑な
ampパラメータを持つライブラリScalableSymbolicPulseオブジェクトをロードすることは非推奨となりました。 Qiskit 1.0.0, complexampの削除後、自動的に float (amp,angle) に変換されます。この変更はパルスにも適用されます:ConstantDragGaussianGaussianSquare
-
この
qiskit.providers.basicaerモジュールとそのすべてのクラスは Qiskit 0.46 以降では非推奨です。 これらの使用はqiskit.quantum_infoモジュールと新しいqiskit.providers.basic_providerモジュールに置き換えるべきである。からの移行は
qiskit.providers.basicaerからqiskit.providers.basic_providerへの移行は以下のように行うことができる:Migrate from | Replace with ------------------------------------------------------------------------------ :mod:`.basicaer` | :mod:`.basic_provider` :class:`.BasicAerProvider` | :class:`.BasicProvider` :class:`.BasicAerJob` | :class:`.BasicProviderJob` :class:`.QasmSimulatorPy` | :class:`.BasicSimulator` :class:`.UnitarySimulatorPy` | use :class:`~.quantum_info.Operator` :class:`.StatevectorSimulatorPy` | use :class:`~.quantum_info.Statevector`特筆すべき違いは、新しいプロバイダーは(
BasicAerのような)グローバル・インスタンスを通じて公開されなくなったため、from qiskit import BasicProvider。 その代わりに、プロバイダー・クラスをサブモジュールからインポートし、インスタンス化する必要がある:from qiskit.providers.basic_provider import BasicProvider provider = BasicProvider() backend = provider.get_backend("sim_name")以下の例は、以下の3つのシミュレーターの移動経路を示している。
basicaer.-
状態ベクトルシミュレータ:
from qiskit import QuantumCircuit qc = QuantumCircuit(3) qc.h(0) qc.h(1) qc.cx(1,2) qc.measure_all() # Former path from qiskit import BasicAer backend = BasicAer.get_backend("statevector_simulator") statevector = backend.run(qc).result().get_statevector() # New path qc.remove_final_measurements() # no measurements allowed from qiskit.quantum_info import Statevector statevector = Statevector(qc) -
単一シミュレーター:
from qiskit import QuantumCircuit qc = QuantumCircuit(3) qc.h(0) qc.h(1) qc.cx(1,2) qc.measure_all() # Former path from qiskit import BasicAer backend = BasicAer.get_backend("unitary_simulator") result = backend.run(qc).result() # New path qc.remove_final_measurements() # no measurements allowed from qiskit.quantum_info import Operator result = Operator(qc).data -
Qasmシミュレーター:
from qiskit import QuantumCircuit qc = QuantumCircuit(3) qc.h(0) qc.h(1) qc.cx(1,2) qc.measure_all() # Former path from qiskit import BasicAer backend = BasicAer.get_backend("qasm_simulator") result = backend.run(qc).result() # New path from qiskit.providers.basic_provider import BasicProvider backend = BasicProvider().get_backend("basic_simulator") result = backend.run(qc).result() # or, directly from qiskit.providers.basic_provider import BasicSimulator backend = BasicSimulator() result = backend.run(qc).result()
-
-
を使用する。
PauliListに暗黙的に変換される観測値として使う。SparsePauliOpに暗黙的に変換されます。Estimator.run()を呼び出すときに暗黙的に係数1に変換されるobservableとして使用することは非推奨である。 その代わりに、まずSparsePauliOp(pauli_list)を使って明示的に引数を変換する必要がある。
重大な問題
-
Qiskit を
0.46.xから1.0.0にアップデートする際、その場でアップデートすることはできません。 例えば、pip install -U qiskitやpip install --upgrade qiskitはサポートされておらず、機能しない可能性が高い。qiskitをアップグレードするには、新しい仮想環境 (venv) を作成し、 Qiskit>=1.0.0 用の新しい別個の環境を構築することです。 例:python -m venv qiskit_1.0 source qiskit_1.0/bin/activate pip install qiskit>=1は、
qiskit_1.0という新しい仮想環境を作成し、新しいバージョンのQiskitを格納します。