top of page

Intel Quantum SDKのレビュー

By Brian Siegelwax



昨年 2月にリリースされた Intel の Quantum SDK バージョン1.0のレビューになります。リリース時に掲載した記事は、Intel Releases Version 1.0 of their Quantum SDKで見ることができます。


[ SDK は、Development Sandboxと呼ばれる Intel の DevCloud for oneAPI を介してアクセスされます ]



企業向け Intel SDK


Intel のソフトウェア開発キット (SDK) の最新版がリリースされ、ネット上でも話題になっています。このSDK 、他の SDK 同じようですが、その性格はかなり違っています。Intel SDK の特徴的な機能は、他の SDKとは違うものであり、直接比較することはできません。オレンジが欲しいときはオレンジ、リンゴが欲しいときはリンゴ、同じように比較することには意味がないのです。



エンタープライズ版


ポスト NISQ時代、量子アルゴリズムは単独では動作していません。アプリケーションは、GPUで現在実行されており、量子プロセッサ(QPUs)上では特定の計算を実行します。実際 1つのアプリケーションは、 QPU、GPU、およびその他のさまざまな特殊なハードウェアで計算を実行できる可能性があります。特にリアルタイムで実行する必要があるアプリケーションは、Jupyterノートブックでは実行されません。C++ は C言語に次ぐ速度で、Pythonよりも優れた性能を提供します。


ただし、トレードオフがあり。コンパイル言語である C++は、コンパイルには時間がかかります。量子回路の設計、アプリケーションの迅速なプロトタイピング、量子コンピューティングの学習には、一般に Python のようなインタプリタ言語が適切でしょう。Python ベースの SDKは、量子コンピューティングを行うための準備を整える一方、Intel の C++ SDKは、実際に量子コンピューティングを行う際のより良い方法を提供してくれるでしょう。



視覚化


Intel SDK について、ヒストグラムや Bloch球などの視覚化が足りないのではないかとの意見があります。しかし、Pythonベース の SDKは結果を分かりやすく視覚化してくれますが、これらの美的で魅力的な視覚化はパフォーマンスを低下させる可能性があるのです。そのため Intel は、SDK をツールキットと考えることにしました。企業は SDKを使用して、必要な情報を表示する出力をカスタマイズしながら、UIがパフォーマンスに与える影響を最小限に抑えることができるのです。ただ、Intelは将来的にライブラリを提供するつもりでもあります。おそらくコマンドラインインターフェイスを使用した最小限の視覚化になるのではないでしょうか。




[ 12 量子ビット GHZ 状態のインテル SDK の C++ コードを示すスクリーンショット。Intelの許可を得て掲載しています。 ]



Code vs Code


Pythonと比べると、C++は常に多くのコードが必要です。その理由は、アプリケーションのパフォーマンスをより細かく制御できるからと言えます。また、小さな量子回路では、量子アセンブリ言語(QASM)は可能な限り少ないコードしか使いません。大規模な回路では、if文、for/whileループ、多数のライブラリにより、Python が QASMより有利になることがよくあります。Pythonでは、ライブラリのインポートと関数呼び出しはほとんど必要ありませんが、この使いやすさのためにパフォーマンスを犠牲にしているのです。C++をライブラリ化することで、コードの行数格差は緩和されますが、そのためのライブラリの開発が必要です。もちろん Pythonの言語ライブラリは、常に少ないコードで構成されているので、全体のコードの少なさに変わりはありませんが。


上の3つのスクリーンショットは、45 行のコードを使用して12 [MAY1] -量子ビット GHZ 状態の Intel SDK の C++コードです。[MAY2]等価回路 は、回路図の表示と出力のヒストグラムを含む OpenQASM2 の 10 行でプログラムできます。ヒストグラムも回路図も含まれていませんが、Intel SDK コードははるかに長いのが見て取れます。



[ いくつかの一般的な教科書の量子アルゴリズムの Intel SDK のコード例 ]


Intel SDK にはコード例が少数提供されています。そのほとんどが教科書的な量子アルゴリズムで構成されています。それ以外は、Python ベースの SDK によって少ないコードで実装でき、また、分子シミュレーションや最適化問題などのアプリケーションについては、Intel SDK にはまだ例がありません。Pythonライブラリを C++コードに統合できることは注目できるでしょうが、これはパフォーマンスに悪影響を及ぼします。



知的財産


多くの量子コンピューティングフレームワークと プラットフォームは オープンソースであり、そのコードは GitHub で自由に入手できます。これらのライブラリを使用するアルゴリズムとアプリケーションのほとんどは Python で記述されており、アクセスできる人なら誰でも無料で見ることができます。Intel SDK は、C++ 言語を使用します。コンパイルはアルゴリズムを完全に保護するわけではありませんが、アルゴリズムをリバースエンジニアリングしたい人にとっては技術的に課題があるでしょう。アルゴリズムの法的保護を求めることに加えて、C++ はある程度の技術的保護を提供してくれています。



[ 量子ドットチップの写真。 Credit: Intel ]



量子ドットエミュレーター


超伝導量子ビットは、上に示したフォトニック モードや量子ドットとは異なる中性原子量子ビットとは異なります。そして上に示したように、量子ドットとも異なっています。通常、違いはコヒーレンス時間とエラー率で語られますが、アプリケーションにも注意が必要です。量子ドットにできることで、量子ドットにしかできないことが何かは分かりません。たとえば、中性原子のリュードベリ状態は、最大独立集合問題に自然に適合し、超伝導量子ビットまたはフォトニック モードとは別のものです。現時点では、Intel のエミュレーターは、潜在的な量子ドットの利点を研究するための唯一の公的にアクセス可能なプラットフォームだと言えそうです。



補完する


Intel SDK を、他のフレームワークと一緒に使用し、それらを競合ではなく補完的なものと見なすことができるでしょう。量子回路を簡単に開発するための Python ベースおよびインターネット ベースのツールが多数あります。Intel のパフォーマンス中心の SDK にはそのようなツールはありません。しかし、「OpenQASM2 to C++」機能を介して一般的なフレームワークからインポートすることができます。開発者は、これらの他のツールを使用して量子回路を迅速に設計および最適化し、Intel SDK を使用して、これらの量子回路を実行するアプリケーションのパフォーマンスを最適化できます。



親しみやすさ


エンタープライズ アプリケーションの開発者の多くは、すでに C++ と Linux に精通しています。必ずしも量子アルゴリズムの設計を含まない量子コンピューティングを統合するアプリケーションを開発する人にとっては、Python、Jupyterノートブック、および無数のライブラリを学習するよりも、Intel の SDK を使用して量子コンピューティングに慣れる方が簡単かもしれません。



シミュレータ対シミュレータ


Intel SDK は、1 つの計算ノードで 34 量子ビットのコンピューティング シミュレーター (複数のノードで 40量子ビット以上) を誇っていますが、量子コンピューティングのシミュレーションは、従来の処理能力とメモリの上に成り立っていることを忘れてはいけません。一般に公開されている QCシミュレータは、シミュレーション可能な量子ビットの数が、32/34の範囲にある傾向があります。したがって重要なのは、使用中のフレームワークと互換性のあるシミュレーターです。場合によっては、古典的な計算能力が他で利用できるかもしれませんが、ここで重要なのは、Intelが競争力のあるものを用意しているということです。開発者は、シミュレートされた量子処理を使用してエンタープライズ クラスのアプリケーションのプロトタイプを作成できます。忘れてはいけないのですが、自社のシミュレーターに 「quantum_8086」 という名前を付けたのは、ボーナスポイントと言って良さそうです。



シミュレーターの使い方


C++/Linux アプリケーションを開発している場合にのみ、Intel のシミュレーターを使用できます。他のプロバイダーは、インストールや構成、時間のかかるプログラムのコンパイルなしで使用できるシミュレーターを提供しています。Intel SDK が C++ をコンパイルする前に、小規模な回路を他の代替手段でシミュレートできるのです。ランタイムの比較では、複雑さが増すにつれて長くなるコンパイル時間を考慮する必要があるでしょう。Jupyterノートブックのボタンをクリックする代わりに、ジョブをキューに入れ、結果を取得するために必要なさまざまな Linux コマンドを入力することで実行時間は長くなってしまいます。したがって、Intel SDK を使用した迅速なシミュレーションはありません。Intelのシミュレーターを使用するプロセスは、おそらく利用可能なシミュレーターの中で最も遅いものです。公正に比較するためには、対象となるアルゴリズムが大きくて遅い必要があります。ランタイムは、ますます長くなるコンパイル時間を考慮する必要があります。トラブルシューティングには再コンパイルが必要なため、Intel SDK は、量子コンピューティングのプログラム開発が遅くなるのは注意点です。



[ インテルの量子ドット量子ビットを含むウェーハの写真。 Credit: Intel ]



ノイズ・シミュレーション


Intel Quantum Simulator バックエンドには SDK にノイズ モデルが含まれていますが、ハードウェア固有のノイズモデルはまだありません。量子コンピューターには、時間とともに変化する独自のノイズモデルがあります。キューで待機せずに特定のデバイスを使用したいユーザーは、代わりに正確なノイズモデルを使用して、それらの特定のデバイスでエミュレートすることができます。Intelがハードウェアを公開するか、少なくとも定期的にノイズモデルを生成して公開すると、ユーザーはプログラムを実行してノイズの影響を判断できるようになります。


[ インテルの量子ロードマップの図。 Credit: Intel ]



ロードマップ


Intel SDK には。中間回路測定[MAY3]が含まれていますが、測定結果に基づいて処理をする動的回路はまだサポートされていません。中間回路測定を使用した動的回路の Qiskit 視覚化を以下に示します。回路途中での測定がない場合、いくつかの量子ビットはコヒーレンスを維持する必要がありますが、維持できずにエラーとなる場合、他の量子ビットが測定できるようになるのを待たなければなりません。



[ 中間回路測定を利用できる動的回路の例 ]


中間回路測定は、上に示したように動的回路の可能性を開き、測定の結果により条件付きで量子演算を実行できるようにします。上記の回路では、q0 の中間回路測定が 1 の場合、q1 で演算が実行されます。q0 の中間回路測定値がゼロの場合、q1 では何も実行されません。量子回路は動的であり、実行される操作は回路が実行されるたびに異なるかもしれません。



提案


アルゴリズムの設計ではなく、量子計算をエンタープライズ アプリケーションに統合することに集中します。通常、C++/Linux プログラマーは量子アルゴリズムの研究者ではなく、QASM を C++ に変換するIntel SDK について知っていれば十分です。量子回路を設計する研究者は、より高速で使いやすいツールを使用しています。QASM をエクスポートしてから、前述の変換ツールを実行できます。


Intel SDKを回路設計に使うのであれば、コンパイルされたアプリケーションが QASM をインポートしていることをドキュメントで示すべきで、常に再コンパイルが必要なわけではありません。最終的な回路のコンパイルは良いですが、中間回路のコンパイルについては常にとは言えません。


さらに、インストールと構成を簡素化する必要があります。特に企業では、ワークステーションのセキュリティ設定を変更する必要があると、障害になる可能性があります。



結論


Python で迅速にプロトタイプを作成し、その後、本番環境用として C++ に変換する企業があります。Intel SDK は、量子コンピューティングの本番環境向けと言えます。コードを常に再コンパイルする必要がある場合、量子コンピューティングの学習と量子回路の設計は時間が取られることになるでしょう。そのため、小さな回路を設計するときに即座にフィードバックが得られる Quirk などのドラッグ・アンド・ドロップ回路ビルダーが適切な選択になりそうです。しかし、エンタープライズ クラスのアプリケーションがリアルタイムの高性能処理を必要とし、最終的に量子計算の利点を活用する場合、C++ は実稼働環境の正当な候補です。


Intel SDK を検討するもう 1つの主な理由は、近い将来利用可能になると予想される Intel 量子プロセッサを使用する方法になるということです。Intel が取り組んでいるスピン量子ビットベースの技術は、将来的に非常に重要なモダリティになる可能性が高く、Intel SDK を使用することは、そこに向かう最も簡単な方法です。


エンタープライズ アプリケーションを開発している場合、または特に量子ドットを使用した量子コンピューティングを研究したい場合、または Python を学びたくない C++/Linux プログラマーである場合は、Intel SDK が適しているかもしれません。その他の目的、つまり教育や研究では、既存の Python SDKが優れています。コードをコンパイルしてコマンド ライン インターフェイスを使用するよりも時間効率がよいからです。利用可能なスキルセットに C++/Linux と QASM/Python の両方が含まれている場合、量子回路を QASM/Python で迅速かつ簡単に設計し、QASM としてエクスポートしてから、高性能アプリケーションに統合するために C++ に変換することを意識してください。



=============================

原記事(Quantum Computing Report)

https://quantumcomputingreport.com/


翻訳:Hideki Hayashi

Comments


bottom of page