Qiskit 0.9 リリースノート
0.9
Terra 0.8
ハイライト
- パルス・コマンドの構築、パルス・チャンネルでのスケジューリング、可視化、 IBM Qデバイスでの実行のためのツールを含む、
qiskit.pulseのPulseモジュールの紹介。 - QuantumCircuit、インストラクション・クラスが改良され、任意の部分回路をより大きな回路に合成したり、パラメータ化された回路を作成できるようになった。
qiskit.quantum_infoの下にある強力な Quantum Info モジュールで、オペレータやチャネルを操作したり、回路内部でそれらを使用するためのツールを提供します。- 新しいトランスパイラ最適化パスと定義済みトランスパイルルーチンへのアクセス。
新機能
- コアとなる
StochasticSwapルーチンは Cythonで実装されている。 - 量子チャンネルとCPTPマップを操作するための
QuantumChannelクラスを追加。 - パラメータ化された回路のサポート
PassManagerインターフェイスが改良され、カスタム・パス・マネージャーとのインタラクションや使い方がより簡単になるように新機能が追加されました。- プリセット
PassManager、あらかじめ決められたトランスパイラー・パスのパイプラインを提供します。 - ユーザー設定ファイルにより、ローカル環境で一部の関数のデフォルト値を上書きできる。
- 新しいトランスパイラーに合格:
EnlargeWithAncillaUnroll2Q、NoiseAdaptiveLayout、OptimizeSwapBeforeMeasure、RemoveDiagonalGatesBeforeMeasure、CommutativeCancellation、Collect2qBlocks、ConsolidateBlocks。
互換性に関する考慮事項
0.8 リリースの一環として、以下のものが非推奨となり、将来のリリースで削除されるか、後方互換性のない方法で変更される予定です。 厳密には必要ではないが、これらは(特に断りのない限り) 0.9、将来的な変更を避けるためにリリース前に調整すべきことである。
DAGCircuit、_getをプレフィックスとするメソッドは、プレフィックスなしでリネームされる。CouplingMapのcouplinglistの要素をタプルからリストに変更。- アンローラーベースは明示的でなければならなくなり、違反すると
QiskitError。 qiskit.tools.qcvvパッケージは非推奨であり、将来的に削除される予定です。 このモジュールを置き換えるQiskit Ignisの使用に移行してください。qiskit.compile()関数は非推奨となり、qiskit.compiler.transpile()関数を使用して回路を変換し、qiskit.compiler.assemble()関数を使用して回路からQobjを作成します。compile(...)の代わりにassemble(transpile(...), ...)を使う。qiskit.converters.qobj_to_circuits()は非推奨となり、将来のリリースで削除される予定です。 代わりに、コンパイルされたQobjからQuantumCircuitオブジェクトを抽出するために、qiskit.assembler.disassemble()を使用する必要があります。qiskit.mapper名前空間は廃止されました。LayoutとCouplingMapクラスはqiskit.transpilerを介してアクセスできる。qiskit.tools.qi.qiにあったいくつかの関数は非推奨となり、qiskit.quantum_infoに移された。
このリリースでは、いくつかの後方互換性のない変更が加えられていることにご注意ください。 以下のノートには、これらの変更に対応するための情報が記載されている。
IBM Q プロバイダー
IBM Qプロバイダーは、以前はTerraに含まれていましたが、別のパッケージ qiskit-ibmq-provider に分割されました。 これは、 pip install qiskit-ibmq-provider とともに pypi 経由でインストールするか、 qiskit.IBMQ または qiskit.providers.ibmq にアクセスするためにソースからインストールする必要があります。 pip install qiskit でqiskitをインストールすると、Qiskitプロジェクトのすべてのサブパッケージが自動的にインストールされます。
Cython コンポーネント
0.8 リリースから、核となるストキャスティックスワップ・ルーチンが Cythonで実装された。 しかし、Terraをソースからビルドする場合や、 non-x86 やその他のプラットフォームで実行する場合、ホイールがあらかじめビルドされておらず、ソースディストリビューションからインストールする場合は、Qiskit Terraをインストール/ビルドする前に、Cythonがインストールされていることを確認する必要があります。 これはpip/pypiで簡単にできる: pip install Cython.
コンパイラワークフロー
qiskit.compile() 関数は非推奨となり、まず qiskit.compiler.transpile() を呼び出して回路の最適化とマッピングを実行し、次に qiskit.compiler.assemble() を呼び出して最適化された回路から Qobj を構築してバックエンドに送信するように変更されました。 これは非推奨に過ぎないが、もし古い qiskit.compile() 。
transpile()、assemble()、execute() パラメータ
これらの関数は負荷が高く、さまざまな入力を受け付ける。 回路入力とパルス入力を扱うことができる。 これらの関数の backend を除くすべてのkwargsは、これまで受け入れられていた型のリストも受け付けるようになった。 initial_layout kwargは、リストとしても辞書としても指定できるようになった。たとえば、量子ビット13と14のベル実験をマップするには、 initial_layout=[13, 14] または initial_layout={qr[0]: 13, qr[1]: 14}
Qobj
Qobjクラスはユースケースに応じて2つのサブクラスに分割され、それぞれパルスジョブ用の PulseQobj 、サーキットジョブ用の QasmQobj 。 Qobjと直接やりとりする場合は、それに応じて使い方を調整する必要があるかもしれない。
qiskit.qobj.qobj_to_dict() は削除されています。 代わりにQobjオブジェクトの to_dict() 。
視覚化
視覚化モジュールの最大の変更点は、 qiskit.tools.visualization から qiskit.visualization に移動したことだ。 これは、可視化モジュールが単なるツールではないことを示すために行われた。 しかし、このインターフェイスは 0.7 リリースで安定が宣言されたので、 qiskit.tools.visualization のパブリック・インターフェイスは引き続き動作する。 将来のリリースでは変更されるかもしれないが、その場合は削除される前に非推奨となる。
これまで非推奨とされていた関数、 plot_circuit()、 latex_circuit_drawer()、 generate_latex_source()、 matplotlib_circuit_drawer() 、 qiskit.tools.visualization が削除された。 これらの関数の代わりに、適切な引数で qiskit.visualization.circuit_drawer() 。
style kwarg辞書の plot_barriers と reverse_bits キーは非推奨であり、代わりに qiskit.visualization.circuit_drawer() kwarg plot_barriers と reverse_bits が使用されるべきである。
これまで qiskit.tools.visualization._state_visualization モジュールに含まれていたウィグナー・プロット関数 plot_wigner_function, plot_wigner_curve, plot_wigner_plaquette, plot_wigner_data が削除された。 それらは、一般の安定したインターフェイスを通じて公開されることはなく、文書化もされていなかった。 この機能を使用するコードはqiskit-tutorialsリポジトリからアクセスできます。
マッパー
qiskit.mapper にあったパブリック API は qiskit.transpiler に移された。 今回のリリースでは非推奨となったが、 0.9 リリースでは削除される予定である。 qiskit.mapper がリリースされる前に、 Layout と CouplingMap の使い方を更新し、 ではなく qiskit.transpiler からインポートするようにすれば、将来驚くような事態を避けることができる。
エア 0.2
新機能
- マルチプレクサゲート qiskit-aer #192 を追加しました
noise.utilsqiskit-aer #181 にremap_noise_model関数を追加NoiseModel,QuantumError,ReadoutErrorに__eq__メソッドを追加 qiskit-aer #181- ノイズモデルにラベル付きゲートを追加 qiskit-aer #175
- 最適化された
mcx,mcy,mcz,mcu1,mcu2,mcu3, ゲートを追加QubitVectorqiskit-aer #124 QubitVectorqiskit-aer #142に最適化されたコントロールド・スワップ・ゲートを追加QasmController用にゲート・フュージョンの最適化が追加された。これはfusion_enable=trueqiskit-aer #136 を設定することで有効になる- 失敗したシミュレーションの管理を改善 qiskit-aer #167
- 未使用量子ビットの切り捨て最適化を追加 qiskit-aer #164
- デバイス・ノイズ・モデル qiskit-aer #131の脱分極エラーを無効にする機能を追加
statevector_stateqiskit-aer #117、 qiskit-aer #137 にシミュレータの初期化命令を追加- シミュレータにカップリングマップを追加 qiskit-aer #93
- 回路最適化フレームワーク qiskit-aer #83 を追加しました
- ベンチマークを追加 qiskit-aer #71, qiskit-aer #177
- Debian - ライクなディストリビューションへのホイールサポートを追加 qiskit-aer #69
- qasm シミュレータ qiskit-aer のスレッドの自動構成を追加しました #61
- スタビライザーのランク分解に基づくシミュレーション方法を追加 qiskit-aer #51
NoiseModelinit qiskit-aer #175 にbasis_gateskwarg を追加。- 標準jsonライブラリでシリアライズ可能な辞書を返すために、
NoiseModel.as_dict()にオプションパラメータを追加した #165 qiskit-aer - スレッド管理のリファクタリング qiskit-aer #50
- ノイズ変換の改善 qiskit-aer #162
- エラー報告の改善 qiskit-aer #160
backend_optsqiskit-aer #61 の新パラメータmax_memory_mbによる並列化の効率化- u1 パフォーマンスを向上させる
statevectorqiskit-aer #123
バグ修正
- Terra アドオン qiskit-aer #46 の macOS で OpenMP がクラッシュする問題を修正
互換性に関する考慮事項
QasmSimulatorおよびStatevectorSimulatorqiskit-aer #185 のバックエンドオプション"initial_statevector"を非推奨とした"chop_threshold"バックエンドオプションの名前を"zero_threshold"に変更し、デフォルト値を 1e-10 に変更した。
イグニス 0.1
新機能
- 量子体積
- テンサード検量線を用いた測定緩和
- 同時RBには、サブセット間でクリフォード・ゲートを整列させるオプションがある
- 測定補正は、量子ビットのサブセットに対して新しいキャリブレーションを生成することができる
互換性に関する考慮事項
- RB は、従来のレジスタの最小セットに書き込みます (以前は Q [i] ->C [i] でした)。 この変更により、RBによる測定補正が可能になった。 ユーザーが外部解析コードを持たない限り、このことで結果が変わることはない。 0.1 のRB回路は、 0.1.1 のフィッターとは互換性がありません。
アクア 0.5
新機能
- HHLアルゴリズムの実装
LinearSystemInput - バリアント付きプラグ可能コンポーネント
EigenvaluesEigQPE - プラガブル・コンポーネント
ReciprocalLookupRotationおよびLongDivision - 多重制御 U1 および U3 操作
mcu1およびmcu3 - コンポーネントから派生したプラグ可能コンポーネント
QFTIQFT - DEBUGロギングレベルでトランスパイルサーキットをまとめた
QuantumInstancebasis_gates、。coupling_mapRYおよびRYRZ変分形式でのエンタングルメントにcxゲートを使用することをサポート (czはデフォルトの選択)- QAOAで任意のミキサー・ハミルトニアンの使用をサポートし、制約付き最適化問題でのQAOAの使用を可能にする。 [arXiv:1709.03489]
VQE変分アルゴリズムの基本クラスVQAlgorithmを追加。QSVMVariational- DOcplexの最適化モデルからイジング・ハミルトニアンを自動生成するための
ising/docplex.pyを追加した 'basic-dirty-ancilla' モードを追加mct- マルチ・コントロール、マルチ・ターゲット・ゲート用に
mcmtが追加された - AND、OR、DNF(分離正規形)、CNF(接続正規形)の論理式から回路を生成する機能を公開
- ESOP(排他的論理和)式から回路を生成する機能が追加され、 Quine-McCluskey、オプションで最適化できるようになった。 ExactCover
- 任意のブール論理式(DIMACSサポートを含む)からオラクル回路を生成するための
LogicalExpressionOracle(オプションの最適化機能付き)が追加されました - 真理値表からオラクル回路を生成するための
TruthTableOracleが追加され、オプションで最適化機能が追加された - ユーザー指定の回路からオラクルを生成するための
CustomCircuitOracleを追加 - Deutsch-Jozsaアルゴリズムの実装を追加
- Bernstein-Vaziraniアルゴリズムの実装を追加
- サイモン・アルゴリズムの実装を追加
- ショールのアルゴリズムの実装を追加
- グローバーのアルゴリズムに、(デフォルトの一様な重ね合わせではなく)カスタム初期状態を取るオプション機能を追加
- 既存の回路を使用して
Customの初期状態を作成する機能を追加 - ADAM(およびAMSGRAD)最適化アルゴリズムの追加
- 多変量分布が追加され、不確実性モデルが一変量分布と多変量分布のコンポーネントを持つようになった
- qft および iqft 回路構成にスワップ操作を含めるかスキップするかのオプションを追加
- 古典的線形システムソルバーを追加
ExactLSsolver HHLアルゴリズムにパラメータauto_hermitianおよびauto_resizeを追加し、デフォルトで非エルミートおよび非 サイズの行列をサポートする- 分類のために、特徴ベクトルを量子ビットの状態に直接マッピングする別の特徴マップ、
RawFeatureVectorを追加した SVM_Classicalで学習させたモデルをロードできるようになった。QSVM
バグ修正
ising/docplex.pyを修正し、制約の定数値を正しく乗算するようにした- を使用して名前空間パッケージを正しく識別するようにパッケージのセットアップを修正しました。
setuptools.find_namespace_packages
互換性に関する考慮事項
QuantumInstancememory。- コマンドラインとGUIを別のレポに移動 (
qiskit_aqua_uis) SAT特有のオラクルを削除(現在はLogicalExpressionOracleでサポート)mctのadvancedモードの実装を変更。chの代わりにシンプルなhゲートを使用。_multicx- コンポーネント
random_distributionsに名称変更uncertainty_models - 様々な共通ゲート (
ch,cry,mcry,mct,mcu1,mcu3,mcmt,logic_and, andlogic_or) と回路 (PhaseEstimationCircuit,BooleanLogicCircuits,FourierTransformCircuits, andStateVectorCircuits) の構造をcircuitsディレクトリの下に再編成 - アルゴリズムを
QSVMVariationalからVQCに改名。これは Variational Quantum Classifier の略 - アルゴリズム名を変更
QSVMKernelQSVM - クラス名を
SVMInputに変更。ClassificationInput - 問題タイプ
'svm_classification'を次のように変更した。'classification' FeatureMapとVariationalFormで使用されているentangler_mapのタイプをリストのリストに変更
IBM Q プロバイダー 0.1
新機能
- スタンドアロン・パッケージとしては初のリリースとなる。 Terraをスタンドアロンでインストールする場合、 IBM Qバックエンドを使いたいなら、
pip install qiskit-ibmq-providerとともにqiskit-ibmq-providerパッケージもインストールする必要がある。 - 非Qobj形式のジョブのサポートがプロバイダから削除されました。 投稿する前に、古いフォーマットの投稿をQobjに変換する必要があります。