量子コンピューティング

Qiskit Code Assistantのプレビュー公開

記事をシェアする:

IBM QuantumTM プレミアム・ユーザーの皆様向けに、量子コードのコーディングを助けるアシスタントがプレビューとして利用可能になりました。

 

有用な量子計算を世界にもたらすためにIBMは、世界で最も高性能な量子ソフトウェア実用規模 量子プロセッサーの世界最大フリートの構築を進めていますが、それだけで十分ではありません。私たちが作成したツールを効率的・効果的に使いこなしてもらえるようにユーザーの力を引き出すことも必要です。 Qiskit Code Assistantを IBM Quantumプレミアム・プランのプライベート・プレビューとして利用可能にしたのはまさにそのためです。

Qiskit Code Assistantは、IBM® watsonxTMの高度な言語モデル (LLM) と、量子コミュニティー全体に広がる Qiskitユーザーの集合的知識を組み合わせて利用し、より良いQiskitコードを簡単に書けるように支援するものです。この量子コード生成機能は、量子計算を取り組みやすく効率的なものにするだけでなく、ユーザーが Qiskitコードを書く方法を学ぶ新しいハンズオンの方法にもなります。

Qiskit Code Assistantの狙いは、より多くのユーザーに量子計算の世界を開いて、優れたコードを書きやすくして開発プロセスを簡単化し、最適化された量子プログラムで質の良い量子回路を生成してプロジェクトを迅速に完了できるようにすることです。 すぐに Qiskit Code Assistantを試したい IBM Quantumプレミアム・プランのユーザーは、こちらのドキュメントをご確認ください。

IBMが他の AI強化された量子ソフトウェア機能とともに初めて Qiskit Code Assistantをプレビューしたのは IBM Quantum Summit 2023でした。またそのプレゼンテーションでは、量子コードを生成する生成AIモデルの性能を評価するために開発した Qiskit HumanEval評価ベンチマークも紹介しました。それから行われた Qiskit HumanEvalベンチマークを使用したテストは、Qiskit Code Assistant が、有用で高品質の Qiskitコードを作成するのに利用可能な最良のモデルであることを示してきました。

Qiskit Code Assistantなど古典計算を用いた AIツールは、量子ソフトウェア・スタックの進化において重要な役割を果たすと私たちは考えています。 そして将来、Qiskit Code Assistantプロジェクトの主要なコンポーネントをオープン・ソースとしてリリースすることを計画しています。これには、Qiskit Code Assistantの基礎となっている Qiskit Graniteモデルと、Qiskit HumanEvalデータ・セットが含まれます。 そうすることで量子コミュニティーの他の方にも、これらのツールをさらに良くするために協力して頂くことが私たちの望みです。

一方で、私たちは Qiskit Code Assistantをさらに高性能で使いやすくするための作業を続けています。今年の早い時期には 2024 IBM Quantum Challenge の参加者に、チャレンジ・ラボの一部としてコード・アシスタントを試してもらいました。また、IBMのさまざまな組織からボランティアを集め、コード・アシスタントの安全性とセキュリティーをテストしました。さらに Qiskit Code Assistantの AIモデルの開発と、Qiskit HumanEvalベンチマーク手法について 2つの論文も書きました。

このブログ投稿では、これらの論文の主要なポイントについて触れますが、その前に Qiskit Code Assistantプロジェクトでユーザーは何ができるか、また Qiskitユーザーがこれを使い始める方法について詳しく見てみましょう。

 

Qiskit Code Assistantの始め方

Qiskit Code Assistantは、ユーザーが利用しているユーザー・インターフェースを介して簡単にアクセスできるように、Visual Studio Code (VS Code) と JupyterLabという 2つの人気ある開発環境と統合されています。

それらお使いの環境に QCAをインストールしたら、自然言語プロンプトまたは関数定義を与えて Qiskitコードを生成することができます。たとえば、”#define a Bell circuit and run it on ibm_brisbane using the Qiskit Runtime Service” (Bell回路を定義し、Qiskit Runtime Serviceを使用して ibm_brisbane上で実行せよ)などです。あるいは自分で書いた、不完全なコードや 大雑把なコードを入力として、コード・アシスタントにクリーンアップさせたり、欠落部分を補完させたりすることもできます。いずれの場合も、Qiskit Code Assistant は、わずか数回のキー操作をするだけで、既存のコードに埋め込んで使用できる高品質の推奨コードを返します。

【VIDEO】: VS Code や  JupyterLab での Qiskit Code Assistant の動作の確認にはこれらのリンク先をご覧ください。

使い始めるには、VS Codeユーザーは VS Codeの「拡張機能(Extensions)」ツールを使用するか、または VS Code Marketplaceで検索して Qiskit Code Assistant VS Code extensionをインストールする必要があります。 JupyterLabユーザーは、pip install qiskit_code_assistant_jupyterlabを実行して、Qiskit Code Assistant JupyterLab extensionをインストールします。

Qiskit Code Assistant をインストールすると、IBM Quantumサービスのユーザーとして自動的に認証が試みられます。手動での認証方法については、こちらをご参照ください。次に初めてのユーザーには、コードアシスタントを使用する際の重要な規則と制限事項について説明する End User License Agreement というモーダルが表示されます。ライセンス契約を受け入れると、コードの生成を開始できます。

Qiskit Code Assistant の使用方法に関する最も詳細で最新のガイダンスを参照するには、メインの資料ページや、Visual Studio Code プラットフォーム向けの資料JupyterLab プラットフォーム向けの資料をご利用ください。

 

Qiskit Code Assistantの内部

今年の早い時期に IBMは、Qiskit Code Assistantの元のモデルがどのように構築されどのように機能するか、そして量子コード生成特有の課題について洞察を提供する論文をarXivに公開しました。 その説明の前に、以下ではまず Qiskit Code Assistantのような LLMが実際にどのように機能するかについて、いくつかの基本ポイントを確認します。

大規模言語モデル(LLM) を用いた生成AIは、統計データ分析を使用してテキスト、画像、その他の多くの種類のデータを生成する AIモデルです。LLMは大規模データセットで学習され、入力に与えられた単語列と、学習データに見られた言語パターンのモデルに基づいて、テキストの次の単語を予測します。この種のモデルは、次に来うる単語の全てに確率を割り当てた上で、最大の確率を持った単語を出力します。この能力によって、LLMは古典的なソフトウェア・コードを生成するのに使えるパワフルなツールとして急速に台頭してきました。

しかし量子コードの生成は、古典的コードよりも困難なタスクであることがわかりました。 1つの理由として、コードの実例だけに基づいてLLMを学習しても、高品質な量子コードを出力するのには不十分ということがあります。量子コードLLMには、量子計算自体に関する基本的な文脈知識も必要です。それがなければ、ユーザーの入力と望ましい出力を結びつけることができない場合があります。 例えば、Deutsch-Jozsaアルゴリズムのコードを生成するように LLMに指示するユーザーがいるかもしれませんが、Deutsch-Jozsa アルゴリズムという単語は普通それを実装したコードのどこにも現れません。この問題を解決するためには、ユーザー要求と、生成する目的コードを結びつけるための背景知識がモデルの学習に別途必要となります。

量子コード生成のもう 1 つの課題は、量子計算が古典計算よりも分野としてはるかに小さいため、入手できる学習データやコードのサンプルが非常に限られることです。また同時に、量子計算分野は古典計算の多くの領域よりもはるかに速く進化しており、量子計算ライブラリーは日夜新しい手法で更新されています。 このことによって量子コード生成モデルも頻繁に更新する必要が生じます。数年も前の学習データを使用する場合には注意する必要があります。

このように量子計算コードを生成する LLMの学習は難しい課題であるため、このタスクは LLM の一般コーディング・タスクの性能を測定する古典的な開発者にとって有用なベンチマークになっています。例えば、Qiskit GitHubのイシューは、昨年プリンストン大学とシカゴ大学の研究チームによって公開された SWE-bench ベンチマーク・データセットの 13%以上を占めています。

Qiskit Code Assistantの基礎となっている granite-8b-qiskitモデルは、コード生成タスクのために IBM watsonxチームが開発した多くのコード・モデルの一つである IBM GraniteTMコード・モデルをベースとして学習されています。granite-8b-qiskitの「8b」は、そのコード出力を決定する 80億のパラメーターを表します。私たちはモデルの性能をさらに改善させるために、Pythonスクリプトや Jupyterノートブックなど追加の Qiskitデータと、Qiskitという単語を含むオープン・ソース GitHubリポジトリーから得られたデータを使用して、モデルをさらに追加学習しました。

すべてのデータは 2024年 8月に収集され、そこから非推奨コードやその他の古い資料が注意深く除去されました。また、合成データも利用されました。Qiskit に関する特定の質問と回答のペア数千個 (Qiskit Tutorialsから合成されました) を追加して、一般的な量子コンピューターの知識を強化しました。今後 Qiskit Code Assistantは、最新のコード・サンプルと Qiskitリリースで学習が継続され、すべてのユーザーにとってますます価値のあるものになっていきます。

 

Qiskit HumanEval

Qiskit Code Assistant自体の構築に際しては、その性能を評価する方法も必要でした。 LLMによって生成された量子コードの評価に関する先行研究が見当たらなかったため、これ自体がひとつの挑戦になりました。 この課題に取り組むために、私たちは Qiskit HumanEvalデータセットを作成しました。これは、LLMによって生成された古典コードの評価に使用される一般的な HumanEval データセットに私たちが手を加えたものです。 Qiskit HumanEvalには、LLMで生成された量子コードの性能を評価するために設計された一連のタスクが含まれています。

自然言語LLMに比べて コードLLMを扱う際の利点の 1つは、人間が話すような文章を生成するのではなく、実行可能なコードを生成するようにLLMが設計されていることです。 つまり、いくつかのタスクについてコードを生成するようにモデルに指示を与え、生成されたコードを実行し、それがどのように機能するかを確認するだけで、モデルの性能を評価できるということです。

Qiskit HumanEvalデータセットには、約 150の異なるテストが 8つのカテゴリーにわたって含まれており、モデルの量子プログラミングのさまざまな要素に対する性能を評価します。これには、量子回路の生成、回路の実行、状態の準備と解析、アルゴリズムの実装など、基本的な量子プログラミング・タスクが含まれます。

Qiskit HumanEvalのテストは、実世界における量子計算の、IBM内外の専門家で構成されるチームによって開発されました。これには、Qiskitアドボケート、Qiskitコミュニティーのメンバー、およびサポートおよびドキュメント・チームのメンバーが含まれます。このチームは協力して、データセットに含まれている各タスクが最新で、かつオリジナルであることを確認し、プロンプトまたはテストが目標タスクの間に明確な関係があることを確認しました。

Qiskit Code Assistantの性能を、CodeLlama、DeepseekCoder、Starcoder を含む最新のオープンソース・コード LLMと比較しました。以下の表は、古典的なコーディング・ベンチマークの標準的な HumanEvalデータセットと、量子コーディング・タスクの Qiskit HumanEvalデータセットで、各LLMがベンチマーク・テストで通過した割合でこの比較結果を示しています。ご覧になって分かるように、Qiskit Code Assistantの granite-8b-qiskit モデルは、Qiskit HumanEvalの量子コード生成タスクで他のすべてのモデルを大きく上回りました。

 

Model HumanEval Qiskit HumanEval
CODELLAMA-34B-PYTHON-HF 52.43% 26.73%
DEEPSEEK-CODER-33B-BASE 49.39% 39.6%
STARCODER2-15B 45.12% 37.62%
CODEGEMMA-7B 42.68% 24.75%
GRANITE-8B-CODE-BASE 39.02% 28.71%
GRANITE-8B-QISKIT 38.41% 46.53%

 

今後の予定: Qiskit Code Assistant と Qiskit HumanEval のオープンソース化

近い将来、granite-8b-qiskit LLMと Qiskit HumanEvalデータセットの両方をオープンソース化し、世界中の研究者および開発者がそれらを利用できるようにすることを私たちは計画しています。私たちの狙いは、これらのリソースを一般に公開することで、他のコードLLMについても量子コーディングにおける性能評価ができるようにして、それを促すことです。またIBMは、すべてのユーザーからのフィードバックを積極的に収集し、改善が必要な領域を特定し、データセットがコミュニティーの多様なニーズを満たすようにして参ります。

 


この記事は英語版IBM Researchブログ「Introducing Qiskit Code Assistant」(2024年10月9日公開)を翻訳し一部更新したものです。

立花 隆輝
監訳:立花 隆輝
IBM Quantum, クライアント・テクニカル・リード、シニア・テクニカル・スタッフ・メンバー
量子コンピューターの社会実装に携わる。
More 量子コンピューティング stories

実用規模のワークロードで量子回路の深さを削減するフラクショナル・ゲート

フラクショナル・ゲートは、実用規模の実験の効率を向上するのに役立つ新しいタイプの量子論理ゲートです。     IBM® は、IBM Quantum Heron™ QPUに新しい種類の量子論理ゲートを導 […]

さらに読む

量子スピン鎖の大規模シミュレーションを行う量子アルゴリズム

Stony Brook大学の研究者は、計算能力の限界を押し進めて実用規模のスピン鎖シミュレーションを可能にするために、さまざまな量子シミュレーション手法を組み合わせて改良しています。   量子計算の起こりがいつ […]

さらに読む

基底状態問題について量子優位性の発見に役立つ評価指標

さまざまな計算手法の基底状態問題を解く能力を評価するのに役立つ指標を定義する論文が、新たに Scienceで発表されました。     量子優位性の発見は、今日の量子計算研究において重要な側面になってい […]

さらに読む