クリーブランド・クリニックや他機関の最新研究を再現可能にするQiskit Functionテンプレート

量子コンピューター

オープンソースであるQiskit Functionsテンプレートは実用的なコード・サンプルのコレクションで、高品質で再利用可能な量子ワークフローを構築するのに利用可能なモジュール式パイプラインです。これを利用することによってユーザーは量子アプリケーションの開発が加速します。


2025年初め、クリーブランド・クリニックの研究者らは、生化学的応用や医療的応用において重要な電子構造計算をするのに有望な新しいワークフローを発表しました。そのワークフローは、一般的なラップトップでは実行不可能なレベルの、弾力性のある古典コンピューティング・リソースと量子リソースの両方を活用する、高度なハイブリッドワークフローです。そのようなワークフローはこの研究に限られるわけではありません。にもかかわらず、大抵の場合、このような革新的ワークフローは研究論文で発表された後、より広範な量子コミュニティーに展開されることがないまま放置されてきました。

この状況を変え、量子コミュニティーが開発に取り組んでいる強力な手法を、より多くの研究者に利用可能にするために、Qiskit FunctionsテンプレートをIBMは発表します。これは、クリーブランド・クリニックが開発したような新しいワークフローにすぐにアクセスできるリソースです。IBM Quantum Platformの資料にアクセスし、Qiskit Functionsテンプレートをダウンロード、カスタマイズ、実行する方法をぜひ今すぐご確認ください。

Qiskit Functionsテンプレートは、実用的なコード・サンプルのオープンソース・コレクションで、Qiskit SDKや Qiskitアドオンなどのツールを使用して、実用規模の高品質アプリケーション・ワークフローを構築するための詳細なガイドを提供します。これには、(a) 実際の実験で用いられた最先端の技術を再現するファンクション・テンプレート実装と、(b) 新しいサーキット・ファンクションアプリケーション・ファンクションを構築するためのより一般的なコード・サンプルであるベース・テンプレートの2種があります。

いずれの場合も、テンプレートは、独自のカスタム実験用に新しいツール、メソッド、または構成を入れ替えることができるモジュール式のパイプラインを提供します。すべてのファンクション・テンプレートはQiskit Serverlessにも簡単にデプロイでき、そうすることでワークフローの一部として古典計算も簡単に活用することができます。サーバーレス・パッケージを好みのクラウド環境にデプロイすることも、IBMがプレミアム・プランおよびフレックス・プランのユーザー向けに提供しているホステッド・サービスを利用することもできます。いずれにせよQiskit Serverlessはタスク実行を簡単化し、一部のワークフローを並列化するのに役立ちます。

それでは、Qiski Functionsテンプレートの 2種のカテゴリから得られる価値を詳しく見てみましょう。

(a)   ファンクション・テンプレート実装:最新の研究をすぐ利用可能に

ファンクション・テンプレート実装は、化学や物理学などの分野での実際の実験で用いられた特定の手法を再現可能にする、非常に専門的なコード・サンプルであり、ワークフローのすべての要素が、実験中のチェックポイントやログなどを備えた再利用可能な形式でパッケージ化されています。これにより、SQD(sample-based quantum diagonalization) のような最先端の手法がこれまで以上にアクセスしやすくなり、これらの手法をユーザーが自分のユースケースに簡単に適用できるようになります。

この例として、Cleveland Clinic IBM Discovery AcceleratorにおけるIBMのパートナーとの協業によって作成された SQD IEF-PCM Qiskit Functionsテンプレートを見てみましょう。IEF-PCMは、溶媒中の分子系の挙動を理解しシミュレーションするために、古典コンピューター上の量子化学シミュレーションで広く使用されているモデルです。一方、SQDは、量子コンピューティングと古典コンピューティングの両方の長所を活かして、興味深く、比較的に大規模な量子系のシミュレーションを構築することができる強力なシミュレーション手法です。SQDは、特にハイパフォーマンス・コンピューティング (HPC) システムを古典コンピューティング部分に活用することができます。

2025年6月、クリーブランド・クリニックの研究者らは、SQDを使用して、多くの生化学アプリケーションや医療アプリケーションにおいて重要な電子構造問題の、量子中心の陰溶媒シミュレーションを実行する有望な新しいワークフローを発表しました。研究者は、IBM Quantum Heron QPUを使用して最大23軌道の活性空間で、メタノール、メチルアミン、エタノール、および水分子の系をシミュレートすることができました。

この規模のワークフローの開発は大変な作業であり、このワークフローを他の研究グループが再現するには数か月または数年かかる可能性があります。だからこそ、この研究者たちは研究結果をジャーナルに発表しただけでなく、その先の作業に着手しました。彼らはSQD ワークフローをコミュニティーと共有して、他の研究者や開発者が SQDワークフローを探求して拡張できるようにしようと考えたのです。

この目標を実現するために、クリーブランド・クリニックと IBMは協力して、SQD Qiskit アドオンの上に積み重ねる形で、SQD IEF-PCM Qiskit Functionテンプレートを作成しました。このテンプレートを使用すると、クリーブランド・クリニックの洗練されたSQDワークフローを簡単に活用、カスタマイズし、新しい研究に適用できます。その方法を理解するために、それがどのように機能するか簡単な例を見てみましょう。

Qiskit Functionテンプレートの使用

電子構造のシミュレーションで溶質と溶媒の相互作用を説明するために SQDを使用したいとします。まずファンクション・テンプレート自体であるsqd_pcm_entrypoint.pyを見ていきます。テンプレートは、特定のユースケースに合わせてカスタマイズできるフレームワークを提供します。

下のコード例とその後に示す他のコード例もすべて擬似コードであることに注意してください。このテンプレートの実際の完全にカスタマイズ可能で公開済みのソースコードは、こちらでご覧になることができます。

"""
SQD-PCM Function Template source code.
"""
from qiskit import QuantumCircuit, ...
from qiskit.transpiler import ...
from qiskit_ibm_runtime import QiskitRuntimeService, SamplerV2

import ffsim
from qiskit_addon_sqd import ...
from solve_solvent import solve_solvent # custom solver that plugs into SQD addon
from pyscf import ...

import logging
from qiskit_serverless import ...

def run_function(
    backend_name,
    molecule,
    solvent_options,
    sqd_options,
    lucj_options
):

  # Preparation Step: Input parsing and validation
  geometry = molecule["atom"]
  ...

  # Step 1: Map to an LUCJ quantum circuit
  update_status(Job.MAPPING)

  logger.info("Initializing molecule object")
  circuit = QuantumCircuit(...)
  ...

  # Step 2: Optimize for target backend
  update_status(Job.OPTIMIZING_HARDWARE)
  ...
  isa_circuit = pass_manager.run(circuit)

  # Step 3: Execute on hardware with the Sampler primitve
  logger.info("Submitting sampler job")
  service = QiskitRuntimeService() 
  sampler = SamplerV2(backend)
  job = sampler.run([isa_circuit])
  while job.status() == "QUEUED":
    update_status(Job.WAITING_QPU)
  update_status(Job.EXECUTING_QPU)

  # Step 4: Post-process samples with SQD
  update_status(Job.POST_PROCESSING)
  for i in range(iterations):
    logger.info(f"Starting configuration recovery iteration {i}")
    ...

  output = {
    "lowest_energy_value": ...,
    "solvation_free_energy": ...,
    "metadata": ...,
    ...
  }

  return output

テンプレートをダウンロードしてカスタマイズしたら、Qiskit Serverlessに読み込みます。Qiskit Serverlessは、量子ワークロードをリモートで構築、デプロイ、実行するためのプログラミング・モデルです。まず、qiskit-ibm-catalog を使用して QiskitServerless に対して認証します。次に、ファンクションのソースコードを定義するQiskitFunction オブジェクトをインスタンス化して、カスタム・ファンクションをQiskit Serverlessにアップロードできるようにします。

# Authenticate to the remote cluster
from qiskit_ibm_catalog import QiskitServerless
serverless = QiskitServerless(
  channel="ibm_quantum_platform",
  token="...",
  instance="crn:***"
)

# instantiate a QiskitFunction for the template
from qiskit_ibm_catalog import QiskitFunction
template = QiskitFunction(
  title="sqd_pcm_template",
  entrypoint="sqd_pcm_entrypoint.py",
  ...
)
# upload the template to serverless
serverless.upload(template)

テンプレートをアップロードした後、Qiskit Serverlessを使えば、好きな入力を与えてリモートで実行できます。テンプレートを使用すると、観察している分子、その分子を含んでいる溶媒、およびシミュレーションについて重要となる可能性のあるその他の特性を指定できます。

template = serverless.load("sqd_pcm_template")

# specify the molecule
molecule = {
  "atom": """
  O -0.04559 -0.75076 -0.00000;
  C -0.04844 0.65398 -0.00000;
  H 0.85330 -1.05128 -0.00000;
  H -1.08779 0.98076 -0.00000;
  H 0.44171 1.06337 0.88811;
  H 0.44171 1.06337 -0.88811
  """,
  "basis": "cc-pvdz",
  ...
}

# set solvent options
solvent_options = {"method": "IEF-PCM", ...}

# set options for the LUCJ circuit and its execution on hardware
lucj_options = {...}

# set options for postprocessing samples with SQD
sqd_options = {
  "sqd_iterations": 3,
  "number_of_batches": 10,
  ...
}

# select a backend
backend_name = "ibm_torino"

job = template.run(
    backend_name=backend_name,
    molecule=molecule,
    solvent_options=solvent_options,
    lucj_options=lucj_options,
    sqd_options=sqd_options,
)

プログラムの実行中に、そのステータスを確認し、ログを調べることができます。テンプレート全体がオープンソースであるため、 print() ステートメントを追加して追加のログを生成し、必要に応じてリアルタイムのメタデータと情報をキャプチャすることもできます。

print(job.status())
print(job.logs())

ログは次のようになります。

2025-06-27 08:42:41,358    INFO job_manager.py:531 -- Runtime env is setting up.
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:42:45,015: Starting runtime service
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:42:45,621: Backend: ibm_torino
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:42:46,809: Initializing molecule object
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:42:51,599: Performing CCSD
...

最後に、実験の実行が終了したら、結果を取得できます。

result = job.result()
print(result['lowest_energy_value'])
print(result['solvation_free_energy'])
print(result['metadata'])

出力はたとえば次のようになります。

-115.15548493266616
-0.007181981952470838
{'resources_usage': 
  {'RUNNING: MAPPING': {'CPU_TIME': 7.57373046875},
   'RUNNING: OPTIMIZING_FOR_HARDWARE': {'CPU_TIME': 5.982495069503784},
   'RUNNING: WAITING_FOR_QPU': {'CPU_TIME': 8.278266191482544},
   'RUNNING: EXECUTING_QPU': {'QPU_TIME': 34.58044767379761},
   'RUNNING: POST_PROCESSING': {'CPU_TIME': 91.08398342132568}}
  }
}

これで完了です!IBM Quantumハードウェアで SQD実験を正常に実行しただけでなく、将来の実験に適用できる再利用可能なカスタムの SQDワークフローも構築することができました。

(b)   ベース・テンプレート:独自Qiskit Functionの開発を容易に

ファンクション・テンプレート実装に加えてベース・テンプレートも利用可能ですが、これはQiskitファンクションが通常どのように構造化されているかを見ることができる汎用的なコード例で、これを利用すると独自のファンクションを構築するのが容易になります。

ベース・テンプレートは、インターフェイス開発、コードのフォーマット、ユニット・テストなどのベスト・プラクティスを示し、独自のファンクションをゼロから構築する際に投資する時間、労力、試行錯誤を削減します。現在、サーキット・ファンクションおよびアプリケーション・ファンクション開発用の二つのベース・テンプレートが利用可能です。

自分で試してみる

Qiskit Functionテンプレートを自分で試してみる準備はできていますか?開始するには、いくつかの方法があります。

ラーニング: Qiskit Functionテンプレートについてのウェビナーをご覧ください(2025年7月15日に行われたウェビナーで、リンクから登録すれば録画をご覧になれます)。私たちのチームメンバーが、テンプレートの入出力にフォーカスした詳しいデモをお見せし、またこの機能を使い始める際のコツを紹介します。

カスタマイズ:テンプレートGitHubでオープンソースとして現在ダウンロード可能で、手元で実行することもできます。つまり、たとえばSQD Qiskitアドオンを使用する化学アプリケーションを検討している場合、オープンソースのSQD IEF-PCM Qiskit Function テンプレートを使用して、電子構造シミュレーションによる溶質と溶媒の相互作用を計算してみることができます。さらに、Hamiltonian simulation Qiskit Functionテンプレートを使用して、AQC-Tensor Qiskitアドオンの物理アプリケーションをテストすることもできます。可能性は膨大です。詳細なガイドはこちらのドキュメントにあります。

ビルド:もしあなたがQiskit上に特殊で強力なカスタム・ツールを構築していて、それをFunctionテンプレートとしてコミュニティーと共有したい場合は、Issueをオープンして Qiskit Functionテンプレート・リポジトリに貢献することをお勧めします。協力しあってリソースを公開することで、分野横断的に科学的進歩の新たな道を開くことができます。

さらに詳しく:これらのテンプレートを強化する機能をさらに深く掘り下げることに興味がおありでしたら、SQD、AQC-TensorなどのQiskitアドオンをチェックしてください。これらのモジュール式ソフトウェア・コンポーネントをワークフローに組み込んで、量子アルゴリズムを拡張したり、新規設計する方法をご覧ください。

フォールト・トレラント量子コンピューティングへの私たちの道のりは、研究者や学者が頭脳を働かせ、現在利用可能な量子技術でできる限りのものを見つけなければ実現できません。Qiskit Functionテンプレートを使用すると、量子コンピューティングの開発における障壁をまたひとつ取り除き、開始しやすくし、関心のあるすべての人の創造性と発見の両方を促進します。


この記事は英語版IBM Researchブログ「Access the latest research from Cleveland Clinic and more with Qiskit Function templates」(2025年7月10日公開、Leanne Cherry, Jennifer Glick, Sanket Panda, Elena Peña Tapia著)を翻訳し一部更新したものです。

関連リンク

監訳者

金澤 直輝

リサーチ・サイエンティスト

IBM Quantum

立花 隆輝

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