2024年を通して使いやすくなったQiskitの量子ソフトウェア開発ツール

IBM は 2024 年を通して、メジャー・リリースQiskit SDK v1.x と、 Qiskit Functions Catalog などの新しい強力なツール群を導入することで、量子ソフトウェア開発をこれまで以上に簡単にしました。

すべての量子コンピューターが、主に量子コンピューティング自体の研究に使用される小型の実験装置であったのは、それほど昔のことではありません。しかしその時代は過ぎ去りました。すでに今日、量子の専門知識をあまり持たない人も含めた世界中の研究者や開発者が、実用規模の量子ハードウェアを使って、古典計算の限界を超えた問題を探求しています。量子コンピューターで興味深い実験を行うための参入障壁はかつてないほど低くなり、量子優位性を追求する多くの人々が日々ますます増えています。

これはどのようにして可能になったのでしょうか。今や量子コンピューターで価値ある画期的な成果を生み出すのに量子計算の博士号は必要ありません。必要なのは適切なツールだけです。ハードウェアについては、2021年に初めて100量子ビットを備えたIBM Quantum Eagleプロセッサーが実現しました。その2年後の2023年の量子ユーティリティー実験ではその進歩が実証されました。そして2024年、IBMは特にソフトウェア側に力を入れました。私たちは、Qiskitを業界で最も高性能な量子ソフトウェア・スタックにするだけでなく、最もアクセスしやすく使いやすいものにするために、一年を通して取り組みました。

(Qiskitソフトウェア・スタック(2025)の画像は原文ブログをご参照ください)

その取り組みの中で 2024年にリリースされた、開発者向けの簡単化するツール群を見てみましょう。以下では、主要な量子ソフトウェア・リリースを振り返り、これらのツールを使ってワークフローを簡単化する方法をコード例でいくつかご紹介します。

Qiskit SDK v1.0: 安定したリリースサイクルと機能統合

2024年には、Qiskit SDKの最初のメジャー・バージョンがリリースされましたが、これはQiskitをこれまで以上に万能で強力なものにすることを目標とした複数の新機能と性能強化を導入しました。しかし、私達が取り組んだものはQiskit SDKの機能強化だけではなく、ユーザ体験の向上も目標でした。Qiskit SDK v1.xの時代においては、この目標がいくつかの形で実装されています。

安定したAPI: Qiskit SDK v0.xの時代には、新しいSDKがリリースされるたびに互換性のない変更が導入されたため、開発者やプロジェクト・メンテナーは最新のQiskitに追随するか、プロジェクトを機能させ続けるかの選択を迫られることがよくありました。Qiskit SDK v1.0では、Semantic Versioning 2.0.0デザインスキームを採用し、より長いサポートサイクルの提供を約束しました。つまり、たとえばQiskit SDK v1.0をリリース初日に使用し始めた場合、18か月後、すなわちQiskit 2.0のリリースから約3〜6か月後までそのような変更について心配する必要はありません。新しいリリース・サイクルの詳細については、こちらのドキュメントをご覧ください

機能統合: Qiskit SDK v1.0 では、メタパッケージ・アーキテクチャーを削除し、多くのモジュールを完全に別々のパッケージへ分割することで、Qiskitのコア機能を統合しています。この作業によって、IBMがQiskitの最重要部分の安定性と保守性を強化するためにより多くの時間を割けるようになっただけではなく、オープンソース・コミュニティーの仲間に興味深い新機能を提供してもらうことができました。

V2プリミティブ: estimator と samplerという2つのプリミティブは、Qiskitを通じて開発者が量子ハードウェアと対話する上で重要な役割を果たしていますが、Qiskit v1.0の導入と同時に、これらのツールの両方が大幅に見直されました。新しい V2 プリミティブは、ベクトル化された入力を受け付けるように設計されているため、パラメーター値のセットとオブザーバブルをまとめて設定するのが簡単で、回路、期待値、パラメーターのさまざまな組み合わせに対する実験結果を非常に簡単に収集できます。これにより可能になる新しいワークフローの簡単な例を見てみましょう。

(サンプルコードは原文ブログをご参照ください)

汎用フェイク・バックエンド・モジュール: Qiskit SDK v1.0リリースでは、qiskit.providers.fake_providerモジュールに新しいGenericBackendV2クラスが導入され、ローカルで実行できるカスタムBackendV2インスタンスを簡単に構成および構築できます。この汎用フェイク・バックエンドは、量子ビットの数、カップリング・マップ、基底ゲート、命令のキャリブレーション、動的回路(別名:制御フロー操作)の実行、さらには測定のタイムステップをカスタマイズする機能を提供し、Targetオブジェクトを手動で構築する必要がありません。ここでは、この機能の動作の簡単な例を紹介します。

(サンプルコードは原文ブログをご参照ください)

Qiskitアドオン: 実用規模での量子アルゴリズム探索のためのモジュール型ツール

昨年にはQiskitアドオンもリリースされました。これは研究者が、実験のきめ細かな制御を維持しつつ、最新の量子計算のテクニックをワークフローへ簡単に組み込むことができるオープンソースのモジュール型ツールです。IBMは現在、以下の5つのQiskitアドオンを提供しています。

  •  multiproduct formulas (MPF) アドオンは時間発展回路のトロッター誤差を減らすことを目的としています。
  •  approximate quantum compilation (AQC-Tensor) アドオンは、量子手法を使用して古典テンソル・ネットワークの限界を超える前に、テンソル・ネットワークを使用してできるだけ多くの時間発展回路を古典的に近似します。
  •  operator backpropagation (OBP) アドオンは、基本的に回路の末端から演算を切りはなして、測定したいオブザーバブルに吸収することで、回路の深さを減らすのに役立ちます。
  •  circuit cutting アドオンは、隣接していない量子ビット間に量子もつれを起こすゲートを分解することによって、トランスパイルされた回路の深さを減らします。
  •  sample-based quantum diagonalization (SQD) アドオンは、量子コンピューターからノイズを含んだサンプルを取得し、古典的な分散アルゴリズムを使用して正確なエネルギー推定を出力するという、さまざまな応用が期待されるエキサイティングな手法です。

Qiskitアドオンを実験に組み込むのがいかに簡単か見てみましょう。以下に、典型的な量子ワークフローの簡単化した例を示しています。ここでは回路を設定する関数から始めて、その回路をトランスパイルし、プリミティブで実行してエラーを軽減しています。

(サンプルコードは原文ブログをご参照ください)

同じワークフローを使用して、最適化ステップの下に数行のコードを挿入するだけで、operator backpropagationアドオンを利用できます。これは次のようになります。

(サンプルコードは原文ブログをご参照ください)

上の例で、optimize ステップの下に挿入されたコードの最初の行 (“OBP ADDON STEP 1”) は、実行する回路を一度に 1つずつバックプロパゲートできる小さな部分に分割する関数を示しています。その後、そのバックプロパゲーションを実行する際の量子的および古典的オーバーヘッドを制限するパラメーターを指定できるため、最終的に必要な実験の数と全体的な古典的コストを管理できます。

そして次に、メインのOBPメソッド本体があります。これは先程のパラメーターを受け取り、バックプロパゲーションを実行し、コストの予算内に収まる形で残った部分をすべて返します。また、これらの結果を組み合わせて、ひとつの標準的な回路とオブザーバブルとしてQiskitプリミティブに渡せるようにする関数もこの例で見ることができます。

ご覧のとおり、アドオン・インターフェイスは既存のツールに簡単に統合できるだけでなく、特定の問題に合わせて調整できるように柔軟性も高くなっています。Qiskitアドオンの詳細については、ドキュメントと、MPFAQC-TensorOBPcircuit cuttingSQDアドオンの個々のGithubリポジトリをご覧ください。

Qiskit Functions Catalogとファンクション・テンプレート: 量子ハードウェアと対話するための事前構築済みワークフロー

ごく最近までは量子コンピューターで何をするのにも、量子回路の構築や量子ハードウェアのパフォーマンス管理にかなりの専門知識が必要で、ある程度量子の経験がある人にとってすら高い参入障壁となっていました。しかし、最近のQiskit Functions Catalogのプレビュー・リリースによってこの状況は変わりました。これは開発者が量子ソフトウェア開発ワークフローの最も複雑な要素を抽象化できるようにする、プログラミング・サービスのコレクションです。

すべてのQiskit Functionsは、次の2つのカテゴリーのいずれかに分類されます。

  • サーキット・ファンクションは、量子回路を実行するための簡単化されたインターフェイスを提供します。これらは、ユーザーから入力として抽象的な回路とオブザーバブルを受け取り、合成、最適化、量子ハードウェアでの実行、さらに使用可能な結果を得るために必要なエラー処理やその他の後処理など細かい部分をすべて管理します。このことは量子計算科学者にとって、サーキット・ファンクションを使用すると量子ハードウェア上で回路を実行するための細部の作業に時間を費やすのではなく、やりたい仕事、すなわち興味深い問題を量子回路に落とし込む作業に集中できるということです。

私たちのパートナーであるQedmaが構築したQESEMエラー抑制/緩和機能を使用したサンプルコードをいくつか見てみましょう。QESEMファンクションは、さまざまな量子エラー対処手法を組み合わせて、大規模の回路に対して正確な結果を生成するのに役立ちます。

(サンプルコードは原文ブログをご参照ください)

  • アプリケーション・ファンクションは 、従来の量子ソフトウェア開発ワークフローの中のさらに多くの部分を扱います。ユーザーが解きたい問題から古典的な入力を与えるだけで、アプリケーション・ファンクションが残りの処理を全て行います。具体的には、その問題を量子回路へ落とし込み、量子ハードウェアで回路を実行し、エラー緩和された結果を返してくれます。貴重な専門知識を持ってはいるが、量子計算のバックグラウンドがほとんどないアプリケーション研究者がこれらのツールを使用すると、その分野での潜在的な量子優位性をこれまで以上に簡単に探求し始めることができます。

私たちのパートナーであるQ-CTRLが構築したOptimization Solverファンクションを使用したサンプルコードを見てみましょう。これにより、ユーザーはnetworkxやnumpyなどの一般的なツールで最適化問題を探索できます。

(サンプルコードは原文ブログをご参照ください)

そして、ファンクション・テンプレートを使って、独自のカスタムQiskit Functionsも構築できます。ファンクション・テンプレートは、個々の量子ワークフローを再利用可能なアプリケーション・サービスに変換するプロセスを簡単化する新しいツールです。独自の Qiskit Functionsを構築する際にファンクション・テンプレートは必須ではありませんが、使用することで作業がはるかに簡単になります。ユースケースに関連するドメイン・レベルの入力の選択、量子/古典リソース管理のサポートなど、さまざまなことができます。

Qiskit Functions Catalogは、クラウド上の量子および古典リソースを活用するためのプログラミングモデルであるQiskit Serverlessサービスに私たちが注ぎ込んだ長年の努力がなければ、おそらく実現しませんでした。Qiskit Serverlessは、量子ワークロード全体で古典リソースを弾力的に活用することを容易にします。開発者はこれを使用して、ワークロードに必要な CPU、GPU、QPU リソースを柔軟に定義し、ワークロードをクラウドにデプロイしてリモートで実行できます。この単純な概念は、複雑で長時間実行されるタスクを実行する場合や、定期的に実行されることを意図したワークフローを処理する場合に非常に役立ちます。

昨年、私たちはQiskit Serverlessインターフェースに多くの改善を加えました。Qiskit Serverlessは新しいユーザーにとってより親しみやすいものになりました。また、ワークロードに利用可能な計算資源とストレージを拡張し、クラウド上でワークロードをリモートでデプロイ、実行する際の全体的なユーザー体験を向上させました。また、Qiskit Serverlessのドキュメントは全面的に改訂となり、Qiskit Serverlessプログラミング・モデルのインストール、初期設定、デプロイに関する詳細なガイドがユーザーに提供されています。

Qiskit Functionsの詳細については、IBM Quantumブログをご覧ください。Qiskit Functionsとファンクション・テンプレートの詳細については、こちらのドキュメント(Qiskit Functions)とこちら(ファンクション・テンプレート)を確認してください。Qiskit Serverlessの詳細については、IBM Quantumブログの以前の投稿と、こちらの改訂されたドキュメントをご覧ください。

Qiskit Transpiler Service: 効率的な回路トランスパイルのためのAI手法とクラウド・リソース

最も人気のある2024年のソフトウェア・リリースの1つが、Qiskit Transpiler Serviceのプレビュー・リリースです。これは、Unitary Fundの2024 Quantum Open Source Surveyにおいて、最も広く採用されているフルスタック開発プラットフォーム、コンパイラ、シミュレーターのトップ5にランクインしています。Qiskit Transpiler Serviceは、クラウド上で量子回路トランスパイル機能を提供する強力なツールです。

Qiskit Transpiler Serviceの非常に明白な利点は、もしこれを使わずにローカル環境で量子回路トランスパイルを実行すると、リソースを大量に消費することがあるという単純な事実にあります。トランスパイラー・サービスを使えばこの作業はIBM Cloudの古典サーバーで動作するため、ローカル環境は他の作業に使えるようになります。

しかしそれだけでなく、Qiskit Transpiler Serviceが注目されているもう一つの理由は、トランスパイル・ルーチンの構成要素として使用可能な、AIを活用したトランスパイラー・パスにあります。AIベースのトランスパイラー・パスを従来のヒューリスティック手法と組み合わせることで、ヒューリスティック手法のみで生成された回路よりも、2量子ビット・ゲートの数が大幅に少ない、はるかに効率的な量子回路を生成できる場合があります。AIを利用したトランスパイラー・パスを使用して、クラウド上でQiskit Transpiler Serviceを使用する簡単な例を見てみましょう。

(サンプルコードは原文ブログをご参照ください)

この例では量子回線を作成した後に、トランスパイラー・サービスを呼び出して、ibm_sherbrooke をbackend_nameとしてその回路をトランスパイルします。optimization_levelは 3 に設定しており、ai パラメーターを ai="true" に設定して AIを利用します。AIを活用した手法では、多くの場合、より効率的な回路トランスパイルが得られますが、効率の向上は必ずしも保証されません。そのため従来のヒューリスティック手法をもし使い続けたい場合には、aiパラメータをai="false"に切り替えることができます。また、ai="auto"を使用して、サービスで利用可能な任意のAI手法とヒューリスティック手法を使用して良い方の結果を利用できます。

Qiskit Transpiler Serviceの詳細については、こちらのドキュメントをご覧ください

Qiskit Code Assistant: AIを活用した革新的な量子ソースコード生成

古典AIが量子ワークフローの簡単化と向上にどのように役立つかを示す昨年提供したツールは、Qiskit Transpiler Serviceのプレビュー・リリースだけではありません。もう一つの有望な例は、Qiskit Code Assistantです。これは、高品質なQiskitコードを迅速に作成するのに役立つ生成AIアシスタントです。

Qiskit Code Assistantは、Visual Studio CodeやJupyterLabなどの一般的な開発環境と統合し、さまざまなタスクを行うことで、Qiskitコードを書く、あるいは書き方の学習を容易にします。

このコード・アシスタントを使用すると、開発プロセスを簡単化し、より優れた量子回路を生成できるようにプログラムを最適化し、プロジェクトをより迅速に完了できます。たとえば、アシスタントに、自然言語のプロンプトや関数定義で指示を与えてQiskitコードを生成させることができます。ユーザーが必要なのは、シャープ記号(#)を入力して、欲しいものをアシスタントに伝えることだけです。たとえば次の通りです。

#define a Bell circuit and run it on ibm_brisbane using the Qiskit Runtime Service

あるいは自分で書いた大まかなコードを入力して、オートコンプリート機能でアシスタントに補完・修正させることもできます。以下は、その例です。

 (サンプルコードは原文ブログをご参照ください)

Qiskit Code Assistant の詳細については、こちらの IBM Quantumブログやこちらのドキュメントをお読みください

Qiskitの開発ツール群をぜひ今すぐお試しください

これらは、IBMが2024年に量子ソフトウェア開発をより簡単に、より利用しやすくするために行ったさまざまな取り組みのほんの一例です。他にも実用規模のワークロードにおける回路の深さを削減するのに役立つ新しいフラクショナル・ゲートや、実用規模のワークロードの実行を大幅に効率化できるQiskit Runtime実行モードなどのイノベーションがあります。

IBM Quantum PlatformにアクセスしてIBMが提供するさまざまな機能の詳細を確認するとともに、2025年に予定されている量子ソフトウェア開発の新たなイノベーションにぜひご期待ください。

この記事は英語版IBM Researchブログ「A year of simplifying quantum software development tools with Qiskit」(2025年1月15日公開)を翻訳し一部更新したものです。

監訳者

高橋 ひとみ

IBM Quantum、スタッフ・リサーチ・サイエンティスト

立花 隆輝

東京基礎研究所 シニア・テクニカル・スタッフ・メンバー