フラクショナル・ゲートは、実用規模の実験の効率を向上するのに役立つ新しいタイプの量子論理ゲートです。
IBM® は、IBM Quantum Heron™ QPUに新しい種類の量子論理ゲートを導入します。それらは「フラクショナル・ゲート」と呼ばれ、量子ワークロードの回路の深さを削減するための強力な新しい道具になります。フラクショナル・ゲートは、実用規模の量子実験を構築する新たな効率的手段をもたらします。これは自然現象をシミュレートするように設計された量子実験に特に効果的です。では、どのように機能するのでしょうか?
100量子ビット以上と数千のゲートを使用する大規模な実験を実行する場合、さまざまな手段をとって量子回路の深さを削減することが重要です。回路が短くなれば、今日のノイズがある量子ハードウェアを用いてより大きなシミュレーションを実行することができます。フラクショナル・ゲートは、回路の深さを削減するのに有用な、2つの新しい ISA命令を IBMの量子コンピューターに追加します。
これらの新しいISA命令により、RX(θ) ゲートまたは RZZ(θ) ゲートの形式で、1量子ビット回転または 2量子ビット回転を実行できるようになります。これらのゲートを使用すれば、たとえば量子系のダイナミクスをシミュレートするのに使用する量子回路のように、1量子ビット回転または2量子ビット回転を含むあらゆる量子回路でゲート数を大幅に減らすことができます。
フラクショナル・ゲートの導入と並行して、全てのIBM Quantum QPUでパルス・レベル制御のサポートを廃止する予定であることをお知りおきください。2025年2月3日に、パルス・レベル制御がサービスから削除されます(訳注:このブログは2024年11月7日に公開されました)。この決定は、実用規模の実験と量子優位性の探索をサポートするための、より高レベルのサービスにIBMの資源と労力を集中するための継続的な取り組みの一環です。
最適制御の研究のためにIBM Quantumのパルス・レベル制御機能を使用している方には、Qiskit Dynamicsなどのツールやリソースの使用を検討することをお勧めします。Qiskit Dynamicsは、シミュレーションにおいてそのような研究を可能にすることで代替手段になる可能性があります。
この廃止機能についてこのブログで説明するのは、パルス・レベル制御の最も一般的なユース・ケースの一つが、この記事で説明している 1量子ビットあるいは 2量子ビットの回転を直接実装することだからです。新しいフラクショナル・ゲートが、その機能を置き換える便利な代替手段であることが、以下の記事でお分かり頂けます。
フラクショナル・ゲートが、最終的な回路の深さにもたらす計算コスト削減を理解するために、RX(θ) および RZZ(θ) ゲートを Qiskitトランスパイラがどのように分解するか調べてみます。
まずRX(θ) ゲートの場合は、1つのRX(θ)論理ゲートが3つのRZゲートと2つの√Xゲートを含む合計 5つの論理ゲートに分解され、回路も 5倍のサイズになります。ここで、√X ゲートのみがゲート・エラーに寄与していることに注意する必要があります。これは、IBM Quantumのマシンで RZゲートを実行する独特の方法によるものです。さらに、√Xゲートのみを数に考慮したとしても、元のゲートの深さの 2倍になっていると見ることができ、100量子ビット以上を含む回路で考えると、この倍増が大問題になります。
RZZ(θ) ゲートの場合には、トランスパイルによってゲート数がさらに大きく増加します。 RZZ(θ)ゲートを実行するには、CNOTゲートの動作を行う 2つのCZゲートと、いくつかの 1量子ビット・ゲートを実行する必要があります。
これに対し新しいフラクショナル・ゲートを使用すると、これらの 1量子ビットおよび 2量子ビットの回転を直接実行でき、回路の深さの増加というこの問題を避けることができます。
新しいフラクショナル・ゲート命令の使用方法を簡単に見てみるために、横磁場イジング模型(transverse field Ising model)のダイナミクスをシミュレートする回路を例として見てみましょう。これはシミュレートするのが比較的単純な量子系であり、フラクショナル・ゲートの威力を示すのに役立つ実用的なケーススタディになります。
このモデルでは、各量子ビットは、1次元の線あるいは2次元格子内の 1サイトに対応します。 この例ではモデルのサイトを1次元鎖で表現した量子系の時間発展をシミュレートしてみましょう。この回路を構築する完全なサンプルコードは原文ブログをご参照ください。
さて、フラクショナル・ゲートを有効活用するためにしなければいけないことは、サポートしているバックエンドを指定するだけです!そうするだけで、あとはトランスパイラが面倒を見てくれます。
from qiskit_ibm_runtime import QiskitRuntimeService service = QiskitRuntimeService() backend_fractional = service.backend("ibm_torino", use_fractional_gates=True) pm_fractional = generate_preset_pass_manager(optimization_level=3, backend=backend_fractional) ising_circuit_transpiled = pm_fractional.run(ising_circuit) ising_circuit_transpiled.draw('mpl', idle_wires=False)
この違いを確認するために、フラクショナル・ゲートをサポートしているバックエンドを、サポートしていないバックエンドでスケジュールされた回路時間を比較すると、システム・サイクル・タイムを半分以下に減らすこともあります。
フラクショナル・ゲートは強力なツールですが、留意すべきいくつかの制限があります。例えば、フラクショナル・ゲートはすべてのバックエンドで使えるわけではありません。以下のコードを使用して、どのバックエンドがサポートしているかを確認できます。
fractional_gate_backends = [] for backend in service.backends(): if ‘rzz’ in backend.target.operation_names: fractional_gate_backends.append(backend)
あるいは、以下のようなコードを使ってフラクショナル・ゲートをサポートしているバックエンドを照会することもできます。
service.backends(filters=lambda x: ‘rzz’ in x.target.operation_names)
この 2番目のコード例は最初の例と同じことを行いますが、詳細を表示しません。同じ filtersをleast_busy関数に渡すことができます。
もう 1 つの考慮事項は、少なくとも現時点では、動的回路(ダイナミック・サーキット)と組み合わせてフラクショナル・ゲートを使用できないことと、およびPEC、ZNE with PEA、またはPauliトワリングなどのQiskit Runtime Primitivesで使用可能なエラー緩和手法とフラクショナル・ゲートを併用できないことです。しかし、ダイナミック・デカップリングおよびT-REx手法と併せてフラクショナル・ゲートを使用することはできるようになる予定です。将来には今のような制限を緩和できる可能性があります。
こちらにある資料で、フラクショナル・ゲートと併用できないエラー緩和手法と併用できる手法の概要を示す便利なチャートをご覧いただけます。
新しいフラクショナル・ゲートで実験をしてみて、実用規模のワークロードのゲート深さを削減するのにどのように役立つかをぜひご確認ください。フラクショナル・ゲートの使用方法、あるいは、使わないようにする方法について詳しくはこちらの資料をご参照ください。
この記事は英語版IBM Researchブログ「New fractional gates reduce circuit depth for utility-scale workloads」(2024年11月7日公開)を翻訳し一部更新したものです。