Skip to main content
IBM Quantum Platform

Qiskit 0.46 リリースノート


0.46.3

前奏曲

Qiskit 0.46.3 は 0.46 シリーズのマイナーなバグ修正とバックポートリリースです。 このリリースは、 0.46 のマイナーバージョンの最後のリリースでもあり、その寿命を示すものでもある。

バグ修正

  • のデコレーターが欠落していたのを修正した。 C3SXGateGate.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オペレーションを m qubitのブロックに置くことができ、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 2π2\pi


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 qiskitImportError が発生した場合、あなたの環境は無効な状態にあり、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.

  • 新しいクラス GenericBackendV2qiskit.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またはディストリビューション・ディクショナリを dataplot_histogram() を渡すことは非推奨となりました。 これを行うためのサポートはQiskit 1.0 リリースで削除されます。 からヒストグラムをプロットしたい場合は、次のようにします。 QuasiDistribution, ProbDistributionまたは分布辞書からヒストグラムをプロットしたい場合は plot_distribution() 関数を使うべきである。

  • qiskit-terra Python パッケージは非推奨であり、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.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.events and qiskit.tools.visualization) について言及している場合を除き、このモジュールの機能は以下に移行されました。 qiskit.utils. このモジュールの機能を使用している場合は、インポートを qiskit.tools から qiskit.utils.

  • モジュール qiskit.test は非推奨。 このモジュールにはQiskit内部テスト用のツールやヘルパーが含まれており、その機能のほとんどはQiskitに移動されたか、もう使われていません。 実際には、このモジュールは外部で使用されることは想定されていなかった。 モジュール内のコードのうち、Qiskit以外でどうしても必要なものがあれば、そのコードをあなた自身のテスト基盤にコピーすることを検討してください。

  • qiskit.quantum_info.synthesis モジュールは非推奨であり、Qiskit 1.0.0 で削除される予定です。 以下のオブジェクトは qiskit.synthesis:

    このクラスは Quaternionqiskit.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() コンストラクタのメソッドを使って QuantumCircuitDAGCircuit に変換します。 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 で削除される予定です。 こちらには以下の内容が含まれます:

    このクラスは SymbolicPulse 、対応するパルス・ライブラリに取って代わられた。 SymbolicPulse は、より優れたパフォーマンス、柔軟性、QPYサポートを提供する。

  • この NoiseAdaptiveLayout トランスパイラー・パスと対応する "noise_adaptive" レイアウト・ステージ・プラグインは非推奨となり、 1.0.0 リリースで削除される予定です。 に取って代わられた。 VF2LayoutVF2PostLayout に取って代わられ、バックエンドの報告されたノイズ特性に基づいてレイアウトを設定するようになった。

  • この 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_settings
    • default_circuit_scheduler_settings

    機能とともに:

  • の以下のツールは非推奨です。 qiskit.utils は非推奨となった:

    • ユーティリティ qiskit.utils.arithmetic
    • ユーティリティ qiskit.utils.circuit_utils
    • ユーティリティ qiskit.utils.entangler_map
    • ユーティリティ qiskit.utils.name_unnamed_args

    これらの関数は、 qiskit.algorithmsqiskit.opflow のコンテキストでのみ使用されており、Qiskit 1.0 の qiskit.algorithmsqiskit.opflow の削除に伴い、削除される予定です。

  • この qiskit.providers.fake_provider モジュールは qiskit-ibm-runtime Python パッケージに移行された。 このため qiskit.providers.fake_provider の以下の要素はQiskit 0.46 で非推奨となり、Qiskitでは削除される予定です。 1.0:

    新しい偽プロバイダーへの移行例:

    # 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:

    新しいクラスへの移行例 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に移動した:

    オブジェクトの非推奨化に伴い、以下の回路メソッドも非推奨となった:

    • QuantumCircuit.diagonal,
    • QuantumCircuit.hamiltonian,
    • QuantumCircuit.isometryQuantumCircuit.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() に変換すべきである。

  • 離散パルス・ライブラリは現在非推奨であり、将来のリリースで削除される予定である。 こちらには以下の内容が含まれます:

    代わりに、対応する SymbolicPulse を使用する。 get_waveform(). 例えば、 pulse.gaussian(100,0.5,10) の代わりに pulse.Gaussian(100,0.5,10).get_waveform() を使う。

    SawtoothSquare の位相は、 2pi2\\pi の位相が1サイクルずれるように定義されている。 また、シンボリック・パルス・ライブラリでは、複素振幅のサポートは非推奨であることに注意。代わりに、 floatampangle

  • この ConfigurableFakeBackend クラスは、主に内部テストに使われてきましたが、現在は非推奨となっています。 Qiskit 1.0.0 リリースで削除されます。 代わりに GenericBackendV2 クラスを使ってテスト用の同様のバックエンドを作ることができます。

  • バージョン5以下のqpyファイル(Qiskit Terra < 0.23.0 )から、複雑な amp パラメータを持つライブラリ ScalableSymbolicPulse オブジェクトをロードすることは非推奨となりました。 Qiskit 1.0.0, complex amp の削除後、自動的に float (amp, angle) に変換されます。この変更はパルスにも適用されます:

    • Constant
    • Drag
    • Gaussian
    • GaussianSquare
  • この 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.

    1. 状態ベクトルシミュレータ:

      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)
    2. 単一シミュレーター:

      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
    3. 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 qiskitpip 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を格納します。

このページは役に立ちましたか?
バグや誤字の報告、またはコンテンツの要求はGitHubで行ってください。