量子コンピューティング

AIで強化したトランスパイラー・パスで量子回路を最適化

記事をシェアする:

Qiskit Transpiler Serviceのベータ版がIBM Quantum Premium Planで利用可能になりました。これにより、ユーザーはAIとIBM Cloudリソースを活用してトランスパイル処理を高速化できます。

Qiskit Transpiler Serviceは、IBM Cloudのリソースを活用してQiskit SDKの最新のトランスパイル機能をユーザーに提供します。より具体的には、ユーザーが自分のQiskitパターンやワークフローを容易にサービスと統合するためのPythonライブラリを提供しています。そしてこの新しいベータ版では、AIで強化した新しいトランスパイラー・パスを試してみることをユーザーにお勧めしています。これは、従来のトランスパイル手法よりも速く、より良い結果をもたらす可能性がある最先端のツールです。

トランスパイルとは、特定の量子デバイスの制約と特性に合わせて量子回路を書き直す、量子コンピューティングでは必須のプロセスですが、チャレンジングな最適化の課題でもあります。現在、大半のQiskitユーザーは、ローカル・マシンでトランスパイルのアルゴリズムを実行し、その後そのトランスパイルした回路を量子ハードウェアでリモート実行しています。この中で使われているヒューリスティックのアルゴリズムは、最適化問題に対してそれなりに良い解をそれなりに早く見つけるために開発されたもので、真の最適解を求めようとすると膨大なデータ記憶量と計算時間が必要とされてしまうトランスパイル処理において有用です。

IBM Quantum Summit 2023では、量子回路トランスパイルにおける基本的な処理である、量子回路ルーティングと量子回路合成に対して、AIで強化したトランスパイラー・パスを発表しました。そしてAIを使った手法が、現在Qiskitで利用可能な標準的ヒューリスティック手法と比べて、必要量子ビット数が少なくて深さの浅い回路を作成することができること、そしてBoolean satisfiability (SAT)ソルバーや他の最適化手法よりも高速で動作することを示しました。その後これらの機能は、実験的なQiskit Transpiler Serviceのアルファ版としてPremium Planユーザーに提供されました。今週のベータ版リリースでは、それをさらに改善しています。

トランスパイラー・サービスを昨年に発表して以来、私たちはシステムを安定化し、信頼性を高め、現在のIBM Quantumスタックによりよく適合するように機能を拡張し、性能を向上することに重点を置いて取り組んできました。また、IBM Quantum内での協業によってサービス統合も進めました。

こういった活動の中で、私たちは新しい論文を執筆し、Arxivに公開しました。この論文では、このAI強化トランスパイラー・パスを構成する回路ルーティングと回路合成のツールについて詳しく説明しています。以下では、それらのAI強化パスについて詳しく見て、新しいArxiv論文のキーポイントを概観します。しかしその前に、完全な回路トランスパイルを新しいベータ版で実行する方法の簡単な例をいくつか見てみましょう。

 

Qiskit Transpiler Serviceを使い始める

あなたがQiskitで行なっている実験があるとしましょう。そして、IBM Cloudリソースを活用するためにQiskit Transpiler Serviceを使用したいと考えています。しかし、これまでヒューリスティック手法にあわせて作っていた実験環境を使い続けたいので、新しいAI強化トランスパイラー・パスを使いたくはないとしましょう。

AIを使用せずにトランスパイラー・サービスを使用する

以下の例では、回路を作成し、ibm_sherbrookebackend_nameとしてトランスパイラー・サービスを呼び出し、その回路をトランスパイルします。optimization_levelを3に設定し、そしてaiパラメーターをai=Falseで設定して、今回はAIの使用をスキップします。aiパラメーターをこの設定にすると、レベル1から3までの標準的なQiskit SDKトランスパイラー・パイプラインを、クラウドを介して使うことになります。

 


(このプログラムのテキストをコピーするには英語ブログをご参照ください)

ただし、backend_nameデバイスとしては、自分がIBM Quantumアカウントでアクセス権を持っているデバイスのみを使用できることに留意してください。TranspilerServiceはオプション・パラメーターとして、coupling_mapを設定可能ですが、この例では簡略化のためにそれを省きます。(coupling_mapパラメーターの詳細については、このドキュメントをご確認ください。)

TranspilerServiceでAIを利用する

今度はAI強化パスを試してみましょう。AIで強化されたトランスパイラー・パスを有効にするには、aiパラメーターをai=Trueで設定します。これにより、標準のQiskit SDKトランスパイラー・パイプラインをベースとしつつ、結果を改善するためにAIで強化したパスを統合したトランスパイルが動作します。以下の例では、前の例と同じように回路を生成しトランスパイルしますが、AI機能を利用します。


(このプログラムのテキストをコピーするには英語ブログをご参照ください)

 

良いとこどり

このAI強化したトランスパイラー・パスは、一般的に言って標準的なヒューリスティック手法と比較して少なくとも同等、そして多くの場合にかなり強力であるということをIBMでは確認しています。ただし、パフォーマンスの改善は保証されていません。結果は場合によりますので、私たちはAI強化パスを、道具箱の中にある別の手段として考えて頂くことをお勧めしています。

AI強化パスを使わない方が良い場合もあるかもしれないので、aiパラメーターには、二者のうち最良を採用するという第三のオプションも与えられるようにしました。aiパラメーターをai=autoに設定すると、システムは自動的に標準のQiskitヒューリスティック・パスを適用するか、新しいAI強化パスを適用するかを、あなたの回路の特性に基づいて自動的に決定します。

 

AIルーティング/回路合成パス

ユーザーは、自分のトランスパイル・ルーチンにおける部品として、私たちのAI強化トランスパイラー・パスを採用することもできます。AI強化パスは、回路ルーティングと回路合成といった種類のトランスパイル処理で、本質的に従来のQiskitパスの完全互換として動作します。AI強化パスとヒューリスティック・パスを組み合わせると、Qiskit Transpiler Serviceのユーザーは2量子ビット・ゲートの数を平均して42パーセント削減できるという実験結果があります。

スタンドアロンAI強化パスの例をいくつか見てみましょう:

回路ルーティング

量子回路または量子アルゴリズムを物理デバイスにマッピングする際、回路ルーティングは不可欠な手続きです。新しいAI強化トランスパイル・パスで、AIRoutingパスはレイアウト段階とルーティング段階として機能します。レイアウト段階でシステムはあなたの回路上の量子ビットをデバイス上の量子ビットにどのようにマッピングするかを決定します。ルーティング段階でシステムは、回路の2量子ビット・ゲートが、デバイスのカップリング・マップ(接続マップ)と矛盾しないようにSWAPゲートを挿入します。PassManager内でAI強化パスを使う方法は次の通りです:


(このプログラムのテキストをコピーするには英語ブログをご参照ください)

 

ここで、backend_nameはルーティングのターゲットとするバックエンドを決めます。optimization_level(1、2、3のいずれか)はそのプロセスにかける計算量を決めますが、数字が大きいほど長い時間をかけ、通常は良い結果を生みます。layout_modeはレイアウト選択についてどのように処理するかを指定します。

回路合成

回路合成は、量子演算子のハイレベルな記述に基づいて量子回路を生成するプロセスです。この方法を使用して、回路のクリティカルな部分を最適化することができます。AI回路合成は、回路の種類(Clifford、Linear Function、Permutation)の一部を再合成することで最適化します。以下は、この合成パスをどのように利用するか示す例です。


(このプログラムのテキストをコピーするには英語ブログをご参照ください)

 

AI合成パスは、デバイスのカップリング・マップにしたがうルーティング後の最適化段階として使用できます。他のルーティング・パスの後で回路を破綻させることなく安全に実行でき、出力される回路全体はデバイスの制限に従います。デフォルトでは、このプロセスは回路の一部を、置き換えた回路が元よりも改善する場合(今はCNOTゲートの数のみを評価します)にのみ、置き換えます。しかし、replace_only_if_better=Falseを設定することで、常に回路を置き換えるようにシステムを強制することもできます。

qiskit_transpiler_service.ai.synthesisから次の合成パスが利用可能です。

    • AICliffordSynthesis: Clifford回路(H, S, CXゲートのブロック)の合成。現在、9量子ビット・ブロックまで使用可能です。
    • AILinearFunctionSynthesis: Linear Function回路(CXとSWAPゲートのブロック)の合成。現在、10量子ビット・ブロックまで使用可能です。
    • AIPermutationSynthesis: Permutation回路(SWAPゲートのブロック)の合成。現在、65量子ビット、33量子ビット、27量子ビットのブロックに対応しています。

 

AI強化トランスパイラー・パスの内容

私たちの新しいArxiv論文は、AI強化トランスパイラー・パスを可能にした強化学習(RL)手法を詳しく記述しています。

強化学習(RL)は、環境とインタラクションすることで、ある最適な「方策」(最適な一連の行動の決定ルール)を学習するという目的をアルゴリズムに与える機械学習パラダイムです。この目的のために、行動の結果に基づいて行動に報酬やペナルティーを与える報酬関数をモデルに設定します。すると、モデルは環境から報酬やペナルティーの信号を受け取って、それに基づいて最適な行動を選択します。モデルの目標は、環境とのインタラクション毎に最適なアクションを選ぶことで累積的な報酬を最大化することです。

強化学習モデルは、与えられた問題に対して試行錯誤を繰り返して学習するため、特にトランスパイル処理に適しています。他の機械学習モデルはデータによって学習されるため、与えられたデータセットを模倣することはできますが、そのデータ生成に使われた既存のアルゴリズムを超える能力はありません。強化学習モデルは経験から学ぶということは、つまり、既存のアルゴリズムを超えるアルゴリズムを生成する可能性があるということです。

例えば、Clifford回路合成のための強化学習アルゴリズムを学習したい場合、最初にアルゴリズムに目標Cliffordを入力として与えます。アルゴリズムは最終的に目標Cliffordに到達するまで、ステップごとにゲートを選択します。学習時の間、アルゴリズムはCXゲート一つあたり-10ポイント、1量子ビット・ゲート一つあたり-1ポイントのペナルティを受け、目標に到達した場合に+1,000ポイントの報酬を与えられます。

この報酬関数は、目標回路までの最短経路を構成するゲートを選ぶことをアルゴリズムに教えます。そして、実際にClifford合成のためのこのアルゴリズムを使いたい時にはユーザーは、アルゴリズムに目標回路だけを与えれば、アルゴリズムは学習時に得られた知識を使って、必要なことをすべて処理してくれます。

 

今すぐAI強化トランスパイルを始める

Qiskit Transpiler Serviceの最新バージョンを試すために、まずQiskit SDKの依存関係をQiskit SDKバージョン1.0以降にアップグレードする必要があります。Qiskit v0.45またはそれ以前のバージョンを使用している場合は、とりかかる前にQiskit v1.0に移行する最良の方法について最近のブログを参照してください。それが完了したら、qiskit-transpiler-serviceパッケージをインストールしてください。


(このプログラムのテキストをコピーするには英語ブログをご参照ください)

 

このパッケージは、デフォルトで、Qiskit SDKを使用して量子ジョブをIBM Quantumサービスに投入する時とほぼ同じ認証プロセスで、IBM Quantumサービスに対する認証を試みます。Qiskit Transpiler Serviceに量子回路を投入するには、あなたのIBM QuantumトークンがQiskitに設定されていることを確認してください。

私たちはPremium Planユーザーの皆様が、AI強化トランスパイラー・パスを試して、これらの新しいツールによる実験の改善を確認してくださることを願っています。この新しいQiskit Transpiler Serviceのベータ版で導入されたトランスパイルのオプションの詳細や、新しいAI強化パスを使用する方法を示したコード例については、こちらこちらのドキュメントを参照してください。

 


この記事は英語版IBM Researchブログ「Optimize quantum circuits with AI-powered transpiler passes」(2024年5月28日公開)を翻訳し一部更新したものです。

More 量子コンピューティング stories

ユーティリティー・スケールの計算タスクを効率化する実行モード

Qiskit v1.xで改善された新しい実行モード(execution mode)は、量子ワークロードの信頼性、予測可能性、そして効率を大幅に向上させています。 ユーティリティー・スケールの研究を行うためには、ユーティリ […]

さらに読む

Qiskit SDK v1.1.0がリリースされました!

主な新機能、改善点、非推奨となった機能などQiskit SDK v1.1.0リリースの要点をご紹介します。 2024年5月29日にQiskit SDK v1.1.0のリリースを発表しました!これは今年メジャーバージョンv […]

さらに読む

近い将来のユースケースを開拓する量子ワーキング・グループ

量子ユーティリティーから量子優位性へとステージを進めるために必要なのはアルゴリズムの発見です。ユースケースに詳しい分野専門家(SME)と量子研究者の双方を含むコミュニティーで、量子技術がメリットを生み出す領域の発見にとり […]

さらに読む