Qiskit 0.5 リリースノート
0.5
Terra 0.5
ハイライト
今回のリリースでは、Qiskitにユーザーエクスペリエンスとボンネットフードの両方で多くの改良が加えられています。 変更点の詳細については、変更履歴をご覧ください:
- 拡張性と柔軟性(エイリアスやバックエンド・プロバイダの使用)に重点を置いたバックエンドの操作方法の再編成とともに、
statevectorsimulatorsの新規追加と、既存機能(特にC++シミュレータ)の機能およびパフォーマンスの改善 - 非同期機能を再編成し、
Jobインスタンス経由で非同期にジョブを実行するための、より使いやすいインターフェイスを提供する - ユーザーの利便性向上(匿名レジスタの許可など)と機能強化(回路のプロット改善など)のため、Terra全体にわたって多数の改善と修正を行った
互換性に関する考慮事項
このリリースでは、継続的な開発の結果、いくつかの後方互換性のある変更が導入されていることにご注意ください。 これらの機能の一部は、完全に非推奨となるまでの一定期間、サポートが継続されますが、新しいバージョンに備え、新しい機能を活用するために、プログラムを更新することをお勧めします。
QuantumProgram 変更内容
QuantumProgram 、いくつかのメソッドが非推奨になりつつある:
-
バックエンドやAPIとやりとりするためのメソッドである:
IBM Q APIへの接続を開き、バックエンドを使用するには、
QuantumProgramメソッドではなく、トップレベルの関数を直接使用することをお勧めします。 特に、qiskit.register()メソッドは、以前のqiskit.QuantumProgram.set_api()コールに相当するものを提供する。 同様に、利用可能なバックエンドに直接問い合わせるための新しいqiskit.available_backends()、qiskit.get_backend()と関連関数がある。 例えば、次のスニペットはバージョン用です。 0.4:from qiskit import QuantumProgram quantum_program = QuantumProgram() quantum_program.set_api(token, url) backends = quantum_program.available_backends() print(quantum_program.get_backend_status('ibmqx4')の場合、次のスニペットと同じになる。 0.5:
from qiskit import register, available_backends, get_backend register(token, url) backends = available_backends() backend = get_backend('ibmqx4') print(backend.status) -
プログラムをコンパイルして実行するための方法:
トップレベル関数は、
qiskit.QuantumProgram.compile()とqiskit.QuantumProgram.execute()メソッドに相当するものも提供するようになった。 例えば、次のスニペットはバージョンからのものである。 0.4:quantum_program.execute(circuit, args, ...)の場合、次のスニペットと同じになる。 0.5:
from qiskit import execute execute(circuit, args, ...)
一般的に、バージョン 0.5 以降では、 QuantumProgram に依存するのではなく、個々のオブジェクトやクラスを直接利用することを推奨しています。 例えば、 QuantumCircuit は、 QuantumRegister、 ClassicalRegister、ゲートを直接付加することでインスタンス化し、構築することができる。 クイックスタートセクションの更新例、またはメインリポジトリの using_qiskit_core_level_0.py と using_qiskit_core_level_1.py の例を確認してください。
バックエンド名変更
バックエンドにより拡張性のあるフレームワークを提供するため、それに伴いいくつかの設計変更が行われた:
-
ローカルシミュレータ名
ローカル・シミュレーターの名前は、同じパターンに従うように統一されている。
PROVIDERNAME_TYPE_simulator_LANGUAGEORPROJECT- 例えば、以前はlocal_qiskit_simulatorという名前だったC++シミュレーターは、現在はlocal_qasm_simulator_cpp。 現在のシミュレーターの概要QASMシミュレーターは実験のようなものだ。 いくつかの量子ビットに回路を適用し、測定結果を観察する。result.get_counts()を介してカウントのヒストグラムを得るために何ショットも繰り返す。Statevectorシミュレータは、回路を通してゼロ状態を進化させた後の完全な状態ベクトル( 振幅)を取得することであり、result.get_statevector()を介して取得することができます。Unitaryシミュレータは、result.get_unitary()を介して返される回路のユニタリー行列等価物を取得します。- さらに、回路内のさまざまな場所に
snapshot(slot)命令を適用することで、シミュレーターから中間状態を取得することができます。 これはシミュレータの現在の状態を指定されたスロットに保存し、後でresult.get_snapshot(slot)を使って取り出すことができます。
-
バックエンドのエイリアス :
SDKは「エイリアス」システムを提供し、特定のタイプの最も高性能なシミュレータがシステムにあれば、それを自動的に使用できるようになりました。 例えば、次のスニペット:
from qiskit import get_backend backend = get_backend('local_statevector_simulator')バックエンドは、利用可能であればC++ステートベクタ・シミュレータになり、存在しなければ Python ステートベクタ・シミュレータにフォールバックします。
より柔軟な名前とパラメータ
SDKのいくつかの機能は、より柔軟でユーザーフレンドリーになりました:
-
自動回路とレジスタ名
qiskit.ClassicalRegisterqiskit.QuantumRegisterと は、明示的に名前をつけなくてもインスタンス化できるようになった。新しいオートネーミング機能によって、自動的に識別子が割り当てられる:qiskit.QuantumCircuitq = QuantumRegister(2)パラメータの順番が入れ替わっていることにも注意してほしい(
QuantumRegister(size, name))。 -
名前またはインスタンスを受け付けるメソッド
オートネームの変更と合わせて、
qiskit.Result.get_data()などのいくつかのメソッドは、便宜上、名前とインスタンスの両方を受け付けるようになった。 例えば、次のような単一の回路を持つジョブの結果を検索する場合:qc = QuantumCircuit(..., name='my_circuit') job = execute(qc, ...) result = job.result()以下の呼び出しは同等である:
data = result.get_data('my_circuit') data = result.get_data(qc) data = result.get_data()