記事をシェアする:

Qiskit Runtimeプリミティブの最近の更新について

Qiskit Runtime プリミティブの最近の更新により、プロジェクトでバックエンドに回路を投入した時に、目新しいエラーメッセージに遭遇することがあります。

 

このエラーメッセージでは、問題を緩和するためのいくつかの提案を列挙していますが、何が起こっているのかを詳しく説明してはいません。実際のところ、ここでは何が起こっているのでしょうか。

Qiskit Runtimeの最新バージョンでは、新しい要件が導入されました。バックエンドに投入されるすべての回路は、バックエンドの Target の制約に準拠しなければならないというものです。すなわち、投入された回路は、バックエンドの Instruction Set Architecture(ISA)、すなわちデバイスが理解し実行できる命令セット、に基づいて記述されていると想定されます。これらの Target の制約は、デバイスにネイティブの基本ゲート、量子ビット間の接続関係、および、場合によっては、パルスやその他の命令タイミングの仕様といった要素によって定義されています。

このブログ・ポストでは、この新しいISA回路エラーメッセージに遭遇しているQiskitユーザーの方に対して、クイックで簡単な解決策を提供し、原因となっている変更の理由を説明します。

 

問題解決のための作業

ひとことで要約すると、上のようなエラーに遭遇した場合、自分で作成した pass managerか、プリセットのpassmanagerのいずれかを使用して回路をトランスパイルする必要があります。pass managerが出力した回路はデバイスの制約に準拠するようになり、Sampler プリミティブを使用している場合にはそれだけで問題が解消するはずです。Estimator を使用している場合は、あなたが与えたオブザーバブルを、選択した量子ビットのレイアウトに合わせるために追加のステップを踏む必要があります。それはたとえば、SparsePauliOp オブジェクトとして保存されているオブザーバブルの場合は apply_layout メソッドを使用することで行います。でも、これでおしまいです。

このエラーメッセージを消す方法を知りたいというただそれだけでこの記事に来たのであれば、必要なことは以上です。以下のコードは、バックエンドの制約に準拠した回路とオブザーバブルを準備する簡単な例を示しています。


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

 

好奇心旺盛な読者の皆様には、このブログの残りで、これらのターゲット・バックエンドの制約がどこから来ているのか、ISA回路要件が導入された理由をより深く掘り下げてご説明します。

 

Targetとは?

Targetオブジェクトは、qiskit.transpilerサブモジュール内で主に使用されます。このオブジェクトには、特定のバックエンドの制約に関してトランスパイラー・パスが必要とする重要な情報がすべて含まれています。それはたとえば、そのハードウェアにおける各量子ビットの基本ゲートや、利用可能な2量子ビット・ゲートのネイティブな方向などです。

たいていの場合、実験を実行する時に Targetオブジェクトについて気にする必要はありません。なぜなら、Qiskit IBM RuntimeQiskitRuntimeServiceを使用すれば、それらの情報はBackendV2の属性として含まれているからです。IBM Quantum™ Platform上のすべてのバックエンドには、デフォルトでそれぞれのTargetが定義されています。

このことからひとつの疑問が生じるかもしれません。すなわち、バックエンドのTarget属性がデバイスの利用可能な命令に関するすべての関連情報を含んでいるのなら、デバイスのBackendV2オブジェクトにはどのような情報が含まれているのか、ということです。

答えは、BackendV2は、プリミティブ・クエリーの投入や過去のジョブの実行結果の照会といった、サービスやシミュレーターとのやりとりを行うためのフックを提供しているということです。また、デバイスの動作をモデル化するための特性データをユーザーが要求することも可能にしています。つまり、BackendV2Targetをサービスに結びつけているのです。

 

なぜこのような変更が行われたのか

ISA回路要件が導入されたのは、私たちのマシンの全体的な効率を高めるための継続的な取り組みの一環としてです。IBM Quantumのユーザー数は過去数年間に大きく増加しました(これは素晴らしいニュースです)。そのこともあって、私たちは量子コンピューターがユーザーにとって、可能な限りいつでも利用可能であるようにしたいのです。

回路がバックエンドの制約に準拠しなければいけないという要件を導入することで、ある種のフィルター・システムのようなものが実現されます。この新しい要件は、デバイスが実行できないような回路を含むジョブが、デバイスに投入されないように効率的にフィルタリングします。これは結局のところデバイスの可用性を高め、キュー時間を短縮します。また、新しいISA回路要件のもう一つの利点は、回路実行の予測可能性を改善するということです。ジョブを投入する前にユーザーが回路をトランスパイルすれば、回路実行時の不明確で時間がかかるかもしれないステップを削除することになります。

新しい要件には、クエリーのコストについてのユーザーの理解を深める効果もあります。投入されるクエリーのコストを簡単に理解できることは重要です。抽象的なオラクルを使う回路(すなわち、ターゲット・デバイスを考慮していない、抽象度の高い命令セットで書かれた回路)を投入すると、その回路がISA形式ではコンパクトに表現されるのか、あるいは指数関数的に大きいのかに気づくことができません。まずトランスパイルすることで、回路の深さやエンタングル・ゲート数など、そのISA回路のプロパティーを調べることができます。これによって、プリミティブ・クエリーに関して想定しないような結果になることが少なくなります。

この記事が、新しいISA回路要件が導入された理由や、Qiskit SDKとIBM Qiskit Runtimeで重要な役割を持つISA回路についての疑問の解消にお役に立つことを願います。ISA回路についてのさらなる詳細については、トランスパイレーションについてのドキュメントV2プリミティブのマイグレーション・ガイドもチェックしてみてください。

 


この記事は英語版IBM Researchブログ「What are ISA circuits?」(2024年4月17日公開)を翻訳し一部更新したものです。

今道 貴司
監訳:今道 貴司
IBM Quantum、シニア・リサーチ・サイエンティスト
Qiskit Optimizationの開発を担当後、Qiskit Primitivesの開発を担当。
立花 隆輝
監訳:立花 隆輝
IBM Quantum シニア・テクニカル・スタッフ・メンバー
量子コンピューターの社会実装に携わる。
More 量子コンピューティング stories

Qiskit向けの新しい推奨ノートブック環境

OVHcloudやqBraidが提供するJupyterベースの環境は、クラウド上でQiskitを扱うプロセスを簡略化します。 IBM®は、量子回路に初めて取り掛かろうとしている初心者に対しても、既に100量子ビットを持っ […]

さらに読む

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

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

さらに読む

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

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

さらに読む