Qiskit 0.6 リリースノート
0.6
Terra 0.6
ハイライト
このリリースでは、新しい正式なコミュニケーション・フォーマット(Qobj)を中心とした内部コンポーネントの再設計と、ユーザー・エクスペリエンス全体を向上させる待望の機能が含まれています。 0.5 リリースと比較したハイライトは以下の通り:
- 相互運用性(Qobj仕様に基づく)と拡張性(新しいバックエンドでQiskitをシームレスに拡張するための機能)の向上
- IBM Q バックエンドの資格情報と認証を処理するための新しいオプションは、プロセスを簡素化し、ユーザー資格情報の自動ロードをサポートすることを目的としています
- ビジュアライゼーション・ユーティリティの刷新:Jupyterユーザー向けにスタイリッシュなインタラクティブ・ビジュアライゼーションが利用可能になり、回路ドロワー(matplotlibベースのバージョンを含む)も改良された
- 回路コンパイルの並列化や数々の最適化など、より柔軟でモジュール化されたアーキテクチャの基礎が確立された
互換性に関する考慮事項
このリリースでは、いくつかの後方互換性のない変更が導入されていることに注意してください。
除去 QuantumProgram
0.5 のリリース時に示唆されたように、 QuantumProgram クラスの非推奨化が完了し、各コンポーネント (BaseJob, QuantumCircuit, ClassicalRegister, QuantumRegister、 qiskit)を直接操作することをお勧めします。
移行の詳細については、 0.5 リリースノートとサンプルをご確認ください:
from qiskit import QuantumCircuit, ClassicalRegister, QuantumRegister
from qiskit import Aer, execute
q = QuantumRegister(2)
c = ClassicalRegister(2)
qc = QuantumCircuit(q, c)
qc.h(q[0])
qc.cx(q[0], q[1])
qc.measure(q, c)
backend = get_backend('qasm_simulator')
job_sim = execute(qc, backend)
sim_result = job_sim.result()
print("simulation: ", sim_result)
print(sim_result.get_counts(qc))IBM Q 認証と Qconfig.py
IBM Qバックエンドを使用する際に認証するためのクレデンシャルの管理が拡張され、利便性のために使用できる新しいオプションが追加されました:
-
認証情報を一旦ディスクに保存し、次回以降のセッションで自動的にロードします。 これは一回限りのメカニズムである:
from qiskit import IBMQ IBMQ.save_account('MY_API_TOKEN', 'MY_API_URL')その後、
load_accounts()を呼び出すことで、認証情報を自動的にディスクからロードすることができる:from qiskit import IBMQ IBMQ.load_accounts()また、セッション内で特定のアカウントだけを使用したい場合は、そのアカウントだけをロードすることもできます:
IBMQ.load_accounts(project='MY_PROJECT') -
環境変数を使う。
QE_TOKEN、QE_URLが設定されている場合、IBMQ.load_accounts()の呼び出しは、それらの資格情報を自動的にロードする。
さらに、 Qconfig.py ファイルをプログラムフォルダーに置き、認証情報を明示的に渡す以前の方法もまだサポートされている。
バックエンドとの連携
バックエンドを取得するための推奨方法として、Terra 0.6 に新しいメカニズムが導入され、より強力で統一されたフィルタリングが可能になり、新しいクレデンシャル・システムと統合された。 以前のトップレベル・メソッド register()、 available_backends() 、 get_backend() はまだサポートされているが、今後のバージョンでは非推奨となり、より複雑なフィルタリングが可能な qiskit.IBMQ、 qiskit.Aer オブジェクトを直接使用することになる。
例えば、ローカルのバックエンドをリストアップして使用する:
from qiskit import Aer
all_local_backends = Aer.backends(local=True) # returns a list of instances
qasm_simulator = Aer.backends('qasm_simulator')また、リモートのバックエンドをリストアップして使用することもできる:
from qiskit import IBMQ
IBMQ.enable_account('MY_API_TOKEN')
5_qubit_devices = IBMQ.backends(simulator=True, n_qubits=5)
ibmqx4 = IBMQ.get_backend('ibmqx4')なお、ローカルシミュレーターの名称は簡略化されている。 以前の名称を使用することは可能だが、新しい短い名称を使用することが推奨される:
キスキット・テラ 0.5 | キスキット・テラ 0.6 |
|---|---|
| local_qasm_simulator | qasm_simulator |
| local_statevector_simulator | statevector_simulator |
| local_unitary_simulator_py | unitary_simulator |
バックエンドおよびジョブAPIの変更
-
IBM Qバックエンドに提出されたジョブの機能が向上した。 ジョブをキャンセルしてクレジットを補充したり (
job.cancel())、特定のバックエンドで実行された過去のジョブをジョブID (backend.retrieve_job(job_id))、または最新のジョブのバッチ (backend.jobs(limit))で検索することができます -
個々のジョブ・ステータス (
queued,running,validating,done,cancelled) をチェックするためのプロパティは存在しなくなりました。 ジョブ・ステータスをチェックしたい場合は、job.statusとの同一性比較を使用する:from qiskit.backends import JobStatus job = execute(circuit, backend) if job.status() is JobStatus.RUNNING: handle_job(job)
簡略化されたAPIの使用方法についてさらに詳しく知りたい場合は、 IBMQJob クラスの新しいドキュメントを参照してください。
-
BaseBackend、BaseJobの多くのメンバーは、もはやプロパティではなくメソッドであり、結果として関数として呼び出す必要がある。キスキット・テラ 0.5キスキット・テラ 0.6backend.name backend.name() backend.status backend.status() backend.configuration backend.configuration() backend.calibration backend.properties() backend.parameters backend.jobs () backend.retrieve_job (job_id) job.status job.status() job.cancelled job.queue_position() job.running job.cancel() job.queued job.done
より優れたJupyterツール
新しいリリースでは、Jupyterノートブックを使用する際のユーザーエクスペリエンスが改善されている。
最初に、カウントヒストグラムと量子状態の新しいインタラクティブな可視化が提供される:plot_histogram()と plot_state()`です。これらのメソッドは、環境がJupyterで、インターネットに接続されている場合、デフォルトで新しい対話型になります。
第二に、新しいリリースでは、コードの進行状況を追跡するためのJupyterセル・マジックが提供される。 %%qiskit_job_status を使用して、 IBM Q バックエンドに送信されたジョブのステータスを追跡する。 %%qiskit_progress_bar 、コンパイル/実行の進捗状況を追跡する。