Qiskit の要素

The Qiskit framework.

Terra

Terra 要素(「地」の意) は、他のQiskitを支える土台です。特定の量子デバイスの制約に対して最適化したり、 リモート・アクセスのデバイスに対して行われた実験実行を管理するために、回路やパルスのレベルで量子プログラムを構築する基盤を提供します。Terraは、効率的な最適化レイヤー処理、パルス・スケジューリング、バックエンド通信とともに、望ましいエンド・ユーザー体験のためのインターフェースを定義します。

Qiskit Terra は6つの主要なモジュールで構成されています:

  1. qiskit.circuit 量子回路は、量子力学のモデルであり、量子演算 (通常はゲート) を量子ビットのレジスタに対して実行することで計算を行います。 量子回路は通常、 \(|0,…,0>\) 状態の量子ビットから始まり、これらのゲートは量子ビットを古典コンピューター上で効率的に表現できない状態に時間発展させます。 量子状態に関する情報を抽出するためには、量子回路は「測定」によって結果(量子システムの基本的な性質上、ランダムな可能性があります)を効率的に表現できる古典レジスタにマッピングできる必要があります。

  2. qiskit.pulse パルス・スケジュールは、チャネル ( 実験用のインプットライン) に適用される量子実験に送られるパルスのセットです。 これは回路よりも低いレベルであり、回路内の各ゲートはパルスの集合として表現される必要があります。 このレベルでは、エラーを削減するための実験 ( ダイナミック・ディカップリング、エラー緩和、最適なパルス形状)を実現できます。

  3. qiskit.transpiler 量子コンピューティングの研究の主要な部分は、実デバイス上で量子回路を実行する方法を研究しています。 このようなデバイスでは、実験誤差やデコヒーレンスによって計算中に誤差が発生します。そのため、堅牢な実装を実現するためには、量子回路のゲート数を減らし、全体的な動作時間を短縮することが重要です。トランスパイラは、ユーザーが最適化を探索し、与えられたアルゴリズムに対してより良い量子回路を見つけることを可能にするために、パスマネージャーの概念を導入します。最終的な結果が回路であることに変わりはないので、我々はこれをトランスパイラーと呼んでいます。

  4. qiskit.providers ユーザーがバックエンドで実行する回路を作ったら、それを便利に活用できる方法が必要です。 Terraではこれを以下の4つのパートを利用して行います。

    1. プロバイダーは、抽象基本クラス BaseProvider を実装し、さまざまなバックエンドのグループ ( 例えば、IBM Quantum Experience を介して使用可能なバックエンド ) へのアクセスを提供するエンティティーです。 これは、使用可能なものを検出したり、特定のバックエンドのインスタンスを取得したりするために、バックエンドと相互作用します。

    2. Backend は、抽象ベースクラス :class:`~qiskit.providers を実装するエンティティです。 「ackend」はシミュレータまたは実際の量子コンピュータのいずれかを表し、量子回路の実行と結果の返却を担当します。 `qobj`を入力として受け取り、`BaseJob`オブジェクトを返すrunメソッドがあります。 このオブジェクトにより、ジョブが完了したときにバックエンドから結果を取得するためのジョブの非同期実行が可能になります。

    3. Job インスタンスは抽象ベースクラス BaseJob の実装であり、送信されたジョブのチケットと考えることができます。 彼らは特定の時点での実行状態を見つけます(例えば、 ジョブがキュー、実行、または失敗した場合)と、ジョブの制御を許可します。

    4. Result ジョブの完了後は result = job.result() を使用してリモートのバックエンドから結果を取得します。 取得した結果オブジェクトには量子データが含まれ、通常は result.get_counts(circuit) を使用してやりとりします。 このメソッドでは量子回路から生のカウント数を取得でき、Terra で提供される量子情報ツールを使用することで更に分析できます。

  5. qiskit.quantum_info 量子コンピューター上で実行される回路のより高度なアルゴリズムおよび分析を実行するためには、シンプルな量子情報タスクを実行するためのツールを持つことが重要です。 これらには、メトリックを推定し、量子状態、操作、およびチャネルを生成する方法が含まれています。

  6. qiskit.visualization Terraには、量子回路を可視化するためのツールが数多くあります。 これにより、量子回路を素早く検査し、ユーザーが実装しようとしていることを確認することができます。 テキスト、 python 、およびlatex のバージョンがあります。 回路が実行されると、出力を表示できるようになります。 インタラクティブなバージョンを含む量子回路の結果をプロットする単純な関数 (plot_state() および plot_bloch_vector() が存在します。

Aer

「Aer」要素(「空気」の意) は、あらゆる Qiskit 要素に横断的にはたらきかけます。量子コンピューターの開発スピードを本当に上げるには、より良いシミュレーター、より良いエミュレーター、より良いデバッガーが必要です。 「Aer」を使用することで古典プロセッサーのどの部分で量子コンピューティングを模倣できるかが分かり、 古典プロセッサーの限界を理解できます。 さらに「Aer」を使用して、現在そして近い将来の量子コンピューターの機能を正確に検証できます。 これはシミュレーションの限界を引き上げること、そして、 計算における現実のノイズの効果をシミュレーションすることで可能になります。

Aer は、QisKitソフトウェア・スタックを利用した量子回路の高速シミュレーター・フレームワークです。Terraでコンパイルされた回路実行のために最適化された C++ シミュレーター・バックエンドが含まれます。Aerは実デバイス上で実行した場合に発生するエラーの現実的なノイズ・シミュレーションを行う、高度に構成可能なノイズ・モデル・ツールも提供しています。

Qiskit Aerには3つの高パフォーマンス・シミュレーター・バックエンドがあります:

  • QasmSimulator

    Qiskitの回路を理想的またはノイズありの環境で複数回実行し、カウントまたはメモリーを返します。以下の通り、異なる回路をより効率的にシミュレートする複数のメソッドがあります:

    1. statevector - 高密度状態ベクトルシミュレーションに使用されます。

    2. stabilizer - Cliffordスタビライザー状態シミュレーターに使用されます。これは、Clifford回路とノイズ・モデルに対してのみ有効です。

    3. extended_stabilizer - 回路をスタビライザー状態に分解する近似シミュレーターに使用されます。その数は非Cliffordゲートの数とともに増加します。

    4. matrix_product_state -行列積 (Matrix Product State、MPS) シミュレーターに使用されます。

  • StatevectorSimulator

    Qiskit回路の理想的な実行を一度し、適用後のシミュレーターの最終的な状態ベクトルを返します。

  • UnitarySimulator

    Qiskit回路の理想的な実行を一回行い、回路自身の最終ユニタリー行列を返します。このバックエンドにおいて、回路は測定やリセット操作を含められないことに注意してください。

Ignis

「Ignis」要素 (「火」の意) は、ノイズやエラーと戦い、新しい道を確立します。 「Ignis」には、より正確なエラー特定、ゲートの改良、ノイズ存在下での計算が含まれます。 量子エラー訂正コードの設計者や、断層撮影法などでのエラー特定方法を研究したい人、 あるいはダイナミカルデカップリングと最適制御の研究からゲートを使用したより良い方法を見つけたい人までをも対象とします。

Ignisは、ユーザー入力パラメーターの最小セットが与えられた特定の実験について、簡単に回路を生成するコードをユーザーに提供します。Ignisのコードには、以下の3つの基本的な構成要素があります:

回路

回路モジュールは、最小セットのユーザー・パラメーターに基づいたあるIngis実験について、回路リストを生成するコードを提供します。これらはTerraやAerで実行されます。

フィッター

Ignis実験の結果はフィッター・モジュールに渡され、実験に記述された物理モデルにしたがって解析、フィットされます。フィッターはデータを描画することも、パラメータのリストを出力することもできます。

フィルター

あるIgnisの実験に対し、フィッターはFilterオブジェクトを出力します。フィルターは、Ignis実験のキャリブレーション結果を使用して、他の実験のエラーを軽減するために使われます。

Qiskit Ignisは、実行可能な3種類の実験で編成されています:

  • qiskit.ignis.characterization Characterization実験は、ノイズ・パラメーター (T1, T2-star, T2) などのシステム中のパラメーターや、ZZ相互作用レートなどのハミルトニアン・パラメーター、ゲート中の制御エラーなどを測定するために設計されています。

  • qiskit.ignis.verification Verification実験は、ゲートや小さい回路のパフォーマンスを検証するために設計されています。Verificationは、状態およびプロセス・トモグラフィー、量子ボリューム、ランダマイズド・ベンチマーキング(RB) を含みます。これらの実験は、ゲートの忠実度(fidelity) のような評価指標を決定する情報を提供します。

  • qiskit.ignis.mitigation Mitigation実験は、同じバックエンドで実行される結果セットに適用できる軽減ルーチンを生成するために分析する回路のキャリブレーションを実行します。Ignisのコードはキャリブレーション測定を実行する回路のリストを作成します。これらの測定結果は、Fitterによって処理され、他の結果の軽減に使えるようなFilterを出力します。

Aqua

「Aqua」要素 (「水」の意) は、生命の要素です。 量子コンピューティングが期待に応えるには、実世界のアプリケーションを見つける必要があります。 Aquaには量子コンピューター用アルゴリズムが揃っていて、このアルゴリズムを使用して量子コンピューティングのアプリケーションを構築できます。 化学や最適化、金融、AI の専門家はAquaを使用することで、量子コンピューターの特定の計算タスクを加速化する利益を享受できます。

量子コンピューターのパワーから利益を享受できる問題は、ChemistryやArtificial Intelligence (AI)、Optimization、やFinanceなど、数多くの分野で確認されています。しかし、量子コンピューターはとても特殊なスキルを要求します。ソフトウェア・スタックの様々なレベルで、量子コンピューターを使い貢献したいと考えている多くの実行者のニーズに対応するため、Qiskit Aquaを開発しました。