QURI Parts: モジュラーで効率的なオープンソース量子計算ライブラリ
今日の量子計算ソフトウェアの開発では、しばしば以下のような点が問題になります。
- コードの再利用性:量子回路シミュレータや実際の量子コンピュータなど、複数の異なるプラットフォームでアルゴリズムをテストすることがしばしば必要になりますが、プラットフォームごとに対応するSDKが異なるため、SDKごとにアルゴリズムを書き換える必要があります。
- 計算パフォーマンス:高速な量子回路シミュレータを使う場合でも、シミュレーション前後の古典的な計算(オブジェクト変換、データ準備、後処理など)のオーバーヘッドによって、計算全体の速度が遅くなってしまうことがあります。
- 多すぎる依存ライブラリ:メジャーな量子計算用SDKの多くは、多数の外部ライブラリに依存していますが、そのほとんどは限られたユースケースでのみ必要になるものです。このような不要な依存関係は、開発の様々なステップにかかる時間を増加させ、トラブルの原因となる場合があります。
QunaSysの開発チームでは、これらの課題に直面し、これらを解決する基礎的なライブラリを構築することにしました。本日、このライブラリ QURI Parts を、オープンソースライブラリとして公開しました。QURIという名称は “Quantum Universal Research Interface” の略で、私たちが量子の研究者・開発者の皆さんに提供したいものを表現しています。また、QURIの発音「きゅうり」には、究理、すなわち「理を究める」という意味も込められています。
QURI Partsは、量子アルゴリズムをポータブルで高性能なPythonコードとして組み立てるのに使用できる、基本的な部品を提供します。QURI Partsは、以下のような特徴を持っています。
- モジュール性と拡張性:ライブラリの各コンポーネントは、標準的なインタフェースに沿って設計された小さな部品として提供されており、簡単に入れ替えて使うことができます。また、各コンポーネントは、対象分野ごとにモジュール分けしてパッケージされているので、不要な依存関係なしに必要なものだけをインストールすることができます。標準インターフェースに準拠したコンポーネントを独自に実装し、QURI Partsで提供される他のコンポーネントと組み合わせて使用することも容易です。
- プラットフォーム非依存:QURI Partsの標準インターフェースは、プラットフォームに依存しないコードを簡単に書けるように考慮して設計されています。メインのアルゴリズムのコードを一度書けば、あとは数行追加するだけで、様々なシミュレーターやプラットフォームに対応できます。また、どのシミュレータやプラットフォームを使用するかを実行時に選択するようなコードを書くことも可能です。
- パフォーマンス:QURI Partsの設計では、特にシミュレータの計算性能を重視しています。世界最速クラスの量子回路シミュレータであるQulacsをQURI Partsで利用するモジュールでは、Qulacsの性能を損なわないよう、可能な限りオーバーヘッドを減らすことに重点を置いています。回路実行前の回路変換のオーバーヘッドを最小限に抑えているので、他のライブラリやシミュレータよりも高速に動作します。一方で、性能向上の余地はまだ残っており、今後のバージョンアップで対応していく予定です.また、シミュレータのオーバーヘッド以外に、古典的な前処理・後処理(たとえばサンプリング結果からパウリ演算子の期待値を計算するなど)の性能にも注意を払っています。
Qulacs(回路変換なし)、QURI Parts, Qulacs を使った他のライブラリの回路変換+実行時間比較。benchmark-qulacsリポジトリにあるベンチマークコードを改変したものを使用した。ベンチマークはIntel Core i5-11400 CPUでマルチスレッドを有効にして実施した。
QURI Partsは現時点で、量子計算に関連する以下の分野をカバーしています。もちろん、今後のバージョンアップでカバーする範囲をさらに広げていく予定です。
- 基本概念
- 量子ゲートと量子回路、ノイズ
- 量子状態と演算子
- 回路のサンプリング、演算子の期待値推定
- アルゴリズム
- 変分アルゴリズムで使われるansatz
- 最適化アルゴリズム
- エラー低減手法
- プラットフォーム(デバイス・シミュレータ)対応
- 量子回路シミュレータ: Qulacs, Stim
- 量子プラットフォーム・SDK: Amazon Braket, Cirq, Qiskit
- 化学への応用
- フェルミオン・量子ビット変換、OpenFermion対応
QURI Partsは、企業との共同研究をはじめ、QunaSysの各研究プロジェクトですでに活用されています。今後も積極的な開発を継続し、さらに機能を追加していく予定です。量子計算の研究や学習、量子ソフトウェアの開発に携わっている方は、ぜひQURI Partsでご自身のコードを実装してみて、感想をお聞かせください。QURI PartsのGitHubリポジトリでissueの投稿を受け付けています。皆様のご意見、ご感想をお待ちしております。
リンク
- QURI Parts ドキュメント https://quri-parts.qunasys.com
- チュートリアル https://quri-parts.qunasys.com/tutorials.html
- GitHubリポジトリ https://github.com/QunaSys/quri-parts