mcpField
D
Dense Evolution

Dense Evolution

ローカル
github.com/tatopenn-cell科学・教育191 週間前に更新

Dense Evolution について

Dense Evolution は、量子計算の研究者や開発者向けの量子シミュレーションツールキットです。状態ベクトルと MPS エンジン、VQE、ノイズ処理、量子化学機能を備え、ローカルの回路エディターと Agent 用 MCP サーバーも含みます。

主な機能

  1. 01JAX XLA コンパイルによる状態ベクトル・MPS シミュレーション
  2. 02チャンク実行とディスクへのオーバーフロー
  3. 03ノイズモデルとゼロノイズ外挿
  4. 04微分可能な VQE と分子ハミルトニアン
  5. 05OpenQASM 2.0/3.0 の解析と相互運用
  6. 06回路エディターとローカルダッシュボード

活用シーン

  1. 01メモリ制限下での量子回路シミュレーション
  2. 02VQE と分子量子化学計算の実行
  3. 03ノイズと量子誤差緩和の研究
  4. 04Agent による回路エディターの操作

MCP 対応

Agent がローカルで動作する回路エディターを操作するための、22 個のツールを備えた MCP サーバーが含まれています。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"tatopenn-cell-dense-evolution": {
"command": "uvx",
"args": [
"dense-evolution"
],
"env": {
"DENSE_EVOLUTION_KERNEL_URL": "<DENSE_EVOLUTION_KERNEL_URL>"
}
}
}
}
起動コマンドuvx dense-evolution
設定が必要な環境変数
DENSE_EVOLUTION_KERNEL_URLURL of the running Dense-Evolution Composer kernel. Start it first with 'dense-evolution serve' (requires the [composer] extra). Defaults to http://127.0.0.1:8800.

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypidense-evolution8.1.52

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Dense Evolution — NISQ 量子シミュレーションツールキット、JAX ネイティブ

高性能な量子シミュレーションツールキット コンパイル、ノイズ、VQE、QEC、化学、エージェントネイティブなツール群を備えた Statevector/MPS エンジンです。

README の画像
Dense Evolution Dashboard(Streamlit)をダウンロード
Windows (.bat) · macOS / Linux (.sh)

CI Docs codecov PyPI PyPI Downloads Python License Build Cross-Validation CI Latest Release Last Commit Issues Stars JAX DOI Featured in Awesome Quantum Software


目次

▍ 概要

最大28量子ビットを約3秒で、クラッシュすることなく実行できます。Dense Evolution は、JAX XLA を通じて Statevector 回路を JIT コンパイルし、自動的にチャンク化します。さらにメモリ上限を超える場合は、メモリがいっぱいになるとディスクにスピルするため、実際のシミュレーションを OOM で停止させずに実行し続けられます。

📖 完全なドキュメント、API リファレンス、実践例 →

ローカルの Streamlit ダッシュボードとウェブベースの Composer エディターも含まれています。詳しくは、以下のComposer と MCP サーバーをご覧ください。


▍ インストール

pip install dense-evolution  # JAX is a core dependency, installed by default

# full stack: GPU · dashboard · Qiskit/PennyLane interop
pip install dense-evolution[full]

# just the interop bridge
pip install dense-evolution[qiskit]
pip install dense-evolution[pennylane]

# native Hartree-Fock (basis-set data)
pip install dense-evolution[hf]

# Composer's local kernel (see "Composer" below)
pip install dense-evolution[composer]

# MCP server for the Composer kernel (see "MCP Server" below)
pip install dense-evolution[mcp]

# development
git clone https://github.com/tatopenn-cell/Dense-Evolution.git
cd Dense-Evolution && pip install -e .[full]
⚠️ macOS + dense-evolution[qiskit] ユーザー向け

Qiskit 自身の QuantumCircuit.__init__ は、macOS/arm64 でプロセス全体をセグフォルトさせることが知られています(Dense-Evolution 側では修正できない、Qiskit 上流のバグです。完全な再現手順については リリース v8.1.43 をご覧ください)。dense_evolution/interop.py は、sys.platform == 'darwin' のときに Qiskit ブリッジを初めて使用すると警告(RuntimeWarning。プロセスごとに 1 回)を表示するようになりましたが、処理はブロックしません。Qiskit と macOS の組み合わせによっては問題なく動作する場合もあります。クラッシュが発生した場合は、pip install dense-evolution[pennylane] を実行すると、Qiskit オブジェクトを構築せずに同じ回路相互運用機能を利用できます。

Google Colab(3 行):

!git clone https://github.com/tatopenn-cell/Dense-Evolution.git
%cd Dense-Evolution
!pip install -e .

▍ クイックスタート

from dense_evolution import DenseSVSimulator, QASMParser

# parse any OpenQASM 2.0 / 3.0 string -- single-qubit rotations, a barrier
# (a real OpenQASM synchronization marker: parsed like hardware would, no
# effect on the simulated state), then an entangling layer
qasm = """
OPENQASM 2.0;
include "qelib1.inc";
qreg q[3];
rx(pi/3) q[0];
ry(pi/4) q[1];
h q[2];
barrier q;
cx q[0], q[1];
cx q[1], q[2];
rz(pi/6) q[2];
"""

parser = QASMParser()
circuit = parser.parse(qasm)

sim = DenseSVSimulator(n_qubits=3)
sim.run_circuit_jit(circuit.to_tuples())

probs = sim.get_probabilities()
sv    = sim.get_statevector()
# probs = [0.3201 0.3201 0.0549 0.0549 0.0183 0.0183 0.1067 0.1067]

ノイズ:

import numpy as np
from dense_evolution import DenseSVSimulator, QASMParser, NoiseModel

qasm = 'OPENQASM 2.0; include "qelib1.inc"; qreg q[2]; h q[0]; cx q[0],q[1];'
circuit = QASMParser().parse(qasm)

sim = DenseSVSimulator(n_qubits=2)
sim.run_circuit_jit(circuit.to_tuples())

noisy_sv = NoiseModel.apply_to_sv(np.asarray(sim.sv), n=2, model='depolarizing', p=0.05, rng=np.random.default_rng(0))
np.abs(noisy_sv) ** 2
# [0.   0.5  0.5  0.  ]

VQE:

import jax
import jax.numpy as jnp
from dense_evolution import QASMParser, circuit_to_energy_fn

qasm = 'OPENQASM 2.0; include "qelib1.inc"; qreg q[1]; ry(0.0) q[0];'
circuit = QASMParser().parse(qasm)
energy_fn, n_params = circuit_to_energy_fn(circuit, n_qubits=1)
h = jnp.array([[1.0, 0.0], [0.0, -1.0]], dtype=jnp.complex128)  # Pauli Z

theta = jnp.array([0.1])
grad_fn = jax.value_and_grad(energy_fn, argnums=0, has_aux=True)
for _ in range(40):
    (energy, sv), grad = grad_fn(theta, h)
    theta = theta - 0.5 * grad
# energy = -1.0, theta = [3.14159265]

緩和(ZNE):

import dense_evolution as de

e1, e2, e3 = 1.234, 0.876, 0.611  # values at 1x, 2x, 3x noise
de.zero_noise_extrapolation([e1, e2, e3], [1.0, 2.0, 3.0])
# 1.622

ダッシュボード(ローカル、Streamlit):

pip install "dense-evolution[dashboard]"  # JAX already included by default
streamlit run tools/dashboard/app.py

大規模回路向けの OOM 対策:

from dense_evolution import Chunk, QASMParser

qasm = 'OPENQASM 2.0; include "qelib1.inc"; qreg q[27]; h q[0:27];'
circuit = QASMParser().parse(qasm)

sim = Chunk(27)
sim.run_chunk(circuit.to_tuples(), chunk_size_gates=500)

▍ 主な機能

README の画像
  • JIT融合ステートベクトルエンジン。 クロネッカー積のオーバーヘッドがなく、ストライドスライスされた線形カーネルの融合をJAX XLA経由でコンパイルします。コードを変更せずに実際のGPU/TPUへディスパッチできます。大規模な低エンタングルメント回路には、シミュレーター · MPSバックエンドを利用できます。
  • OOMを防ぐChunkエンジン。 1つの配列に収まらない回路を動的に分割し、実際の計算デバイスの空きメモリに応じてサイズを調整します。さらに、上限を超えた分はディスクに退避します。Chunkガイド。
  • 実際のノイズと、その実効的な軽減。 確率的Krausチャネル、Qiskitバックエンドから取り込んだ実デバイスのノイズ、Zero-Noise Extrapolationに対応しています。ショット数をノイズ係数間で最適に配分し、常に有効な状態を返して補正する単一量子ビットのBlochベクトル版も備えています。ノイズ · 軽減 · ノイズ/軽減/修復の意味。
  • 一から構築する微分可能なVQE。 circuit_to_energy_fnは、実際の分子VQEが使用するものと同じ、JAXで微分可能なエンジンです。実際のHartree-Fockハミルトニアン、UCCSD/ハードウェア効率型アンザッツ、Adam最適化に対応しています。自動微分。
  • Windows、macOS、Linuxでのlibcint積分。 pip install dense-evolutionを実行すると、各システム向けにコンパイルされたlibcintがインストールされます。6-31G*でのエタノールの完全な二電子テンソルを0.32秒で計算します。UHFとROHFを用いた開殻分子にも対応しています(run_uhf、run_cuhf)。native_hf。
  • 可逆演算。 レジスターの加算器、減算、比較、剰余演算から剰余べき乗までを、正確な基底状態の置換として、またOPENQASM 2.0ゲート回路として適用します(Cuccaro、Draper、Beauregardの加算器、制御付き剰余乗算)。制御量子ビット1個でのShorの位数発見まで対応します。演算。
  • 事後選択。 量子ビットが|0>、|1>、|±>、|±i>のいずれかで観測された分岐と、その確率を保持します。事後選択。
  • OpenQASM 2.0/3.0の双方向対応。 実際のパーサーに加え、Qiskit/PennyLaneとの相互運用ブリッジを備えています。QASMパーサー · 相互運用。
  • コードに依存しないQECデコード、Majorana/Jordan-Wignerフェルミオンマッピング、PennyLane独自の基底セットに含まれない元素向けのHartree-Fockの一からの実装、通過可能なワームホールに着想を得たテレポーテーションプロトコル、実際のQM/MM領域分割(リングを考慮したBFS、Diffuse2Seg由来の関連性伝播)などに対応しています。すべての機能についてはAPIリファレンス全文をご覧ください。

▍ ベンチマーク

Windows、CPU のみ、RAM 8 GB で測定。PennyLane の default.qubit は状態ベクトル全体を割り当てますが、Dense Evolution の Chunk は量子ビット数にかかわらず約 2 GB を一定に保ちます。

量子ビット数ヒルベルト空間PennyLaneDense Evolutionチャンクの構成
2667,108,864✅ 1,074 MB✅ 2,050 MB1× (2²⁷)
28268,435,456❌ OOM✅ 2,050 MB2× (2²⁷)
324,294,967,296❌ OOM✅ 2,048 MB32× (2²⁷)

Google Colab(RAM 12 GB)では、n=28 の処理は最初から最後まで約 3 秒で実行されます(JIT コンパイル済み、num_chunks=2)。マルチチャンク経路は OOM を安全に回避するだけでなく、高速です。実際の RAM の上限を超える場合(Chunk 単体でも、プロセスをクラッシュさせずに MemoryPressureError を適切に発生させます)、allow_disk_overflow=True を指定すると、失敗するのではなく、低速なディスクバックの経路にフォールバックします。速度はまだベンチマークしていませんが、正確性を優先しています。測定結果の全表は docs/api/chunk.md をご覧ください。

▍ Composer と MCP サーバー

自分のマシン上で動作する本格的な回路エディター(グラフィカルまたは OpenQASM)と、エージェント(Claude Code、Claude Desktop など)が直接操作できるように 22 個のツールを公開する MCP サーバーです。Composer · MCP Server。

▍ 主なリソース


▍ 変更履歴

📜 変更履歴とリリースの全文 — すべてのバージョンを最新のものから掲載しています。


▍ ライセンス

GNU Affero General Public License v3.0 以降。 商用ライセンスはご要望に応じて提供します。

8.3.2 までのリリースは Business Source License 1.1 に基づいて公開されていました:LICENSE-BUSL-1.1-until-8.3.2.md

全文:LICENSE


▍ 引用について

Dense-Evolution が学術研究に役立つ場合は、CITATION.cff のメタデータを使って引用してください(GitHub 独自の「このリポジトリを引用」ボタン、および Citation File Format に対応する文献管理ツールで認識されます)。

Zenodo にアーカイブされています:


© 2026 Salvatore Pennacchio — Dense Evolution

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。