alterlab-cirq について
alterlab-cirqは、Google Quantum AIのPythonフレームワークCirqを使うためのスキルです。量子回路の構築、シミュレーション、変換、実行に加え、ノイズ研究や実験、対応ハードウェアでの実行を支援します。
主な機能
- 01量子回路の構築と変換
- 02状態ベクトルと密度行列のシミュレーション
- 03ノイズモデリングと回路特性評価
- 04対応ハードウェアでの回路実行
- 05量子実験の設計と分析
活用シーン
- 01回路の試作とパラメータスイープ
- 02ノイズによる回路動作の調査
- 03量子ハードウェア向け回路の準備
- 04ベンチマークと量子実験の実施
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ alterlab-ieu/ alterlab-academic-skills --skill alterlab-cirqインストール後、Claude Code で/alterlab-cirqを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
evals/evals.jsonreferences/building.mdexperiments.mdhardware.mdnoise.mdsimulation.mdtransformation.md詳細
Cirq - Python による量子コンピューティング
Cirq は Google Quantum AI のオープンソースフレームワークです。量子コンピューターやシミュレーターで量子回路を設計、シミュレーション、実行できます。
このスキルを使う場面
ユーザーが次のことを希望する場合に、このスキルを使います。
- Cirq で回路を構築し、シミュレーションする(状態ベクトル、密度行列、パラメータスイープ)
- Google のハードウェアノイズをモデル化する、または Quantum Virtual Machine(
willow_pink、weber、rainbow)で実行する - Cirq の回路を Google Quantum Engine(承認済みパートナー)、IonQ、AQT、Pasqal、Azure Quantum に送信する
- 特性評価実験(ランダム化ベンチマーキング、XEB)や ReCirq 形式の研究を実施する
対象外
| シナリオ | 代わりに使用 |
|---|---|
| IBM Quantum ハードウェア、Qiskit Runtime プリミティブ、または Qiskit トランスパイル | alterlab-qiskit |
| 自動微分を使った勾配学習型の量子 ML/ハイブリッドモデル | alterlab-pennylane |
| Lindblad マスター方程式、デコヒーレンス、または空洞 QED ダイナミクス(回路なし) | alterlab-qutip |
インストール
uv pip install cirq # Python ≥ 3.11; current 1.7.x as of 2026-09
cirq パッケージはメタパッケージであり、cirq-core、cirq-google、
cirq-ionq、cirq-aqt、cirq-pasqal、cirq-web をすべて依存関係として含みます。シミュレーションのみを行う軽量な環境には、cirq-core だけをインストールしてください。オプションの追加機能:
# OpenQASM import (cirq.contrib.qasm_import needs `ply`), quimb tensor-network tools
uv pip install "cirq-core[contrib]"
# Azure Quantum — its `cirq` extra pins cirq-core 1.6.x, so use a separate environment
uv pip install "azure-quantum[cirq]"
クイックスタート
基本的な回路
import cirq
import numpy as np
# Create qubits
q0, q1 = cirq.LineQubit.range(2)
# Build circuit
circuit = cirq.Circuit(
cirq.H(q0), # Hadamard on q0
cirq.CNOT(q0, q1), # CNOT with q0 control, q1 target
cirq.measure(q0, q1, key='result')
)
print(circuit)
# Simulate
simulator = cirq.Simulator()
result = simulator.run(circuit, repetitions=1000)
# Display results
print(result.histogram(key='result'))
パラメーター化された回路
import sympy
# Define symbolic parameter
theta = sympy.Symbol('theta')
# Create parameterized circuit
circuit = cirq.Circuit(
cirq.ry(theta)(q0),
cirq.measure(q0, key='m')
)
# Sweep over parameter values
sweep = cirq.Linspace('theta', start=0, stop=2*np.pi, length=20)
results = simulator.run_sweep(circuit, params=sweep, repetitions=1000)
# Process results
for params, result in zip(sweep, results):
theta_val = params['theta']
counts = result.histogram(key='m')
print(f"θ={theta_val:.2f}: {counts}")
主な機能
回路の構築
量子ビット、ゲート、演算、カスタムゲート、回路パターンなど、量子回路の構築に関する詳しい情報については、以下を参照してください。
- references/building.md - 回路構築の完全ガイド
主なトピック:
- 量子ビットの種類(GridQubit、LineQubit、NamedQubit)
- 単一量子ビットゲートと2量子ビットゲート
- パラメーター化されたゲートと演算
- カスタムゲートの分解
- moment を使った回路の構成
- 標準的な回路パターン(ベル状態、GHZ、QFT)
- インポート/エクスポート(OpenQASM、JSON)
- qudit とオブザーバブルの扱い
シミュレーション
厳密なシミュレーション、ノイズのあるシミュレーション、パラメータースイープ、Quantum Virtual Machine など、量子回路のシミュレーションに関する詳しい情報については、以下を参照してください。
- references/simulation.md - 量子シミュレーションの完全ガイド
主なトピック:
- 厳密なシミュレーション(状態ベクトル、密度行列)
- サンプリングと測定
- パラメータースイープ(単一および複数のパラメーター)
- ノイズのあるシミュレーション
- 状態ヒストグラムと可視化
- Quantum Virtual Machine(QVM)
- 期待値とオブザーバブル
- パフォーマンスの最適化
回路変換
量子回路の最適化、コンパイル、操作に関する情報については、以下を参照してください。
- references/transformation.md - 回路変換の完全ガイド
主なトピック:
- トランスフォーマーフレームワーク
- ゲートの分解
- 回路の最適化(ゲートの結合、Z ゲートの繰り出し、無視できる演算の削除)
- ハードウェア向けの回路コンパイル
- 量子ビットのルーティングと SWAP の挿入
- カスタムトランスフォーマー
- 変換パイプライン
ハードウェア連携
さまざまなプロバイダーの実際の量子ハードウェアで回路を実行する方法については、以下を参照してください。
- references/hardware.md - ハードウェア連携の完全ガイド
対応プロバイダー:
- Google Quantum AI(cirq-google)- 承認済みパートナー向けの Quantum Engine。一般向けには
willow_pink、weber、rainbowモデルの Quantum Virtual Machine を提供 - IonQ(cirq-ionq)- トラップイオン型量子コンピューター
- Azure Quantum(azure-quantum)- IonQ および Quantinuum のターゲット
- AQT(cirq-aqt)- Alpine Quantum Technologies(ARNICA API。ワークスペース ID とリソース ID が必要)
- Pasqal(cirq-pasqal)- 中性原子型量子コンピューター
デバイスの表現、量子ビットの選択、認証、ジョブ管理、ハードウェア向けの回路最適化などのトピックを扱います。
ノイズモデリング
ノイズのモデリング、ノイズを含むシミュレーション、特性評価、エラー緩和については、以下を参照してください。
- references/noise.md - ノイズモデリングの完全ガイド
一般的なトピック:
- ノイズチャネル(脱分極、振幅減衰、位相減衰)
- ノイズモデル(定数、ゲート固有、量子ビット固有、熱)
- 回路へのノイズの追加
- 読み出しノイズ
- ノイズの特性評価(ランダム化ベンチマーキング、XEB)
- ノイズの可視化(ヒートマップ)
- エラー緩和の手法
量子実験
実験の設計、パラメーターのスイープ、データ収集、ReCirq フレームワークの使用については、以下を参照してください。
- references/experiments.md - 量子実験の完全ガイド
一般的なトピック:
- 実験設計のパターン
- パラメーターのスイープとデータ収集
- ReCirq フレームワークの構成
- 一般的なアルゴリズム(VQE、QAOA、QPE)
- データ分析と可視化
- 統計分析と忠実度の推定
- 並列データ収集
一般的なパターン
変分アルゴリズムのテンプレート
import scipy.optimize
def variational_algorithm(ansatz, cost_function, initial_params):
"""Template for variational quantum algorithms."""
def objective(params):
circuit = ansatz(params)
simulator = cirq.Simulator()
result = simulator.simulate(circuit)
return cost_function(result)
# Optimize
result = scipy.optimize.minimize(
objective,
initial_params,
method='COBYLA'
)
return result
# Define ansatz
def my_ansatz(params):
q = cirq.LineQubit(0)
return cirq.Circuit(
cirq.ry(params[0])(q),
cirq.rz(params[1])(q)
)
# Define cost function
def my_cost(result):
state = result.final_state_vector
# Calculate cost based on state
return np.real(state[0])
# Run optimization
result = variational_algorithm(my_ansatz, my_cost, [0.0, 0.0])
ハードウェア実行のテンプレート
def run_on_hardware(circuit, provider='google', device_name='<processor_id>',
device_config='<config_name>', target='ionq.simulator',
repetitions=1000):
"""Template for running on quantum hardware."""
if provider == 'google':
# Approved Quantum Engine users only; otherwise use the Quantum Virtual Machine
# (cirq_google.engine.create_default_noisy_quantum_virtual_machine).
import cirq_google
engine = cirq_google.get_engine() # uses GOOGLE_CLOUD_PROJECT
processor = engine.get_processor(device_name)
# cirq-google 1.7: device_config_name is required (see processor.list_configs())
# and run() returns a cirq.Result directly.
return processor.run(circuit, device_config_name=device_config,
repetitions=repetitions)
elif provider == 'ionq':
import cirq_ionq
service = cirq_ionq.Service() # reads IONQ_API_KEY
return service.run(circuit, repetitions=repetitions, target='qpu')
elif provider == 'azure':
from azure.quantum.cirq import AzureQuantumService
# Setup workspace...
service = AzureQuantumService(workspace)
# Target names are system-specific (e.g. 'ionq.qpu.forte-1'); see service.targets()
return service.run(circuit, repetitions=repetitions, target=target)
else:
raise ValueError(f"Unknown provider: {provider}")
ノイズ研究のテンプレート
def noise_comparison_study(circuit, noise_levels):
"""Compare circuit performance at different noise levels."""
results = {}
for noise_level in noise_levels:
# Create noisy circuit
noisy_circuit = circuit.with_noise(cirq.depolarize(p=noise_level))
# Simulate
simulator = cirq.DensityMatrixSimulator()
result = simulator.run(noisy_circuit, repetitions=1000)
# Analyze
results[noise_level] = {
'histogram': result.histogram(key='result'),
'dominant_state': max(
result.histogram(key='result').items(),
key=lambda x: x[1]
)
}
return results
# Run study
noise_levels = [0.0, 0.001, 0.01, 0.05, 0.1]
results = noise_comparison_study(circuit, noise_levels)
ベストプラクティス
-
回路設計
- トポロジーに適した量子ビットの種類を使用します
- 回路をモジュール化し、再利用できるようにします
- 測定には内容がわかるキーを付けます
- 実行前に、回路がデバイスの制約を満たしていることを検証します
-
シミュレーション
- 純粋状態には状態ベクトルシミュレーションを使用します(より効率的です)
- 必要な場合(混合状態、ノイズ)に限り、密度行列シミュレーションを使用します
- 個別の実行の代わりに、パラメーターのスイープを活用します
- 大規模システムではメモリ使用量を監視します(2^n は急速に増加します)
-
ハードウェア実行
- 必ず最初にシミュレーターでテストします
- キャリブレーションデータを使って最適な量子ビットを選択します
- 対象ハードウェアのゲートセットに合わせて回路を最適化します
- 本番実行にはエラー緩和を実装します
- コストの高いハードウェア実行の結果は、すぐに保存します
-
回路の最適化
- 高レベルの組み込みトランスフォーマーから始めます
- 複数の最適化を順番に連結します
- 回路深度とゲート数の削減を追跡します
- 変換後に正しさを検証します
-
ノイズモデリング
- キャリブレーションデータに基づく現実的なノイズモデルを使用します
- すべてのエラー要因(ゲート、デコヒーレンス、読み出し)を含めます
- 緩和の前に特性を評価します
- ノイズの蓄積を最小限にするため、回路を浅く保ちます
-
実験
- 実験を明確に分離して構成します(データ生成、収集、分析)
- 再現性のために ReCirq のパターンを使用します
- 中間結果をこまめに保存します
- 独立したタスクを並列化します
- メタデータを含めて十分に記録します
追加リソース
- 公式ドキュメント: https://quantumai.google/cirq
- API リファレンス: https://quantumai.google/reference/python/cirq
- チュートリアル: https://quantumai.google/cirq/tutorials
- サンプル: https://github.com/quantumlib/Cirq/tree/main/examples
- ReCirq: https://github.com/quantumlib/ReCirq
よくある問題
回路がハードウェアに対して深すぎる場合:
- 回路最適化トランスフォーマーを使って深度を削減します
- 最適化の手法については
transformation.mdを参照してください
シミュレーションでメモリの問題が発生する場合:
- 密度行列シミュレーターから状態ベクトルシミュレーターに切り替えます
- 量子ビット数を減らすか、クリフォード回路にはスタビライザーシミュレーターを使用します
デバイス検証エラーが発生する場合:
- device.metadata.nx_graph で量子ビットの接続性を確認します
- ゲートをデバイス固有のゲートセットに分解します
- デバイス固有のコンパイルについては
hardware.mdを参照してください
AlterLab Academic Skills スイートの一部です。
ノイズを含むシミュレーションが遅すぎる場合:
- 密度行列シミュレーションは O(2^2n) です。量子ビット数の削減を検討してください
- 重要な操作のみにノイズモデルを選択的に適用します
- パフォーマンスの最適化については
simulation.mdを参照してください