tencent-quantum-lab / tensorcircuit

Tensor network based quantum software framework for the NISQ era
https://tensorcircuit.readthedocs.io
Apache License 2.0
252 stars 75 forks source link
automatic-differentiation jax machine-learning matrix-product-states neural-network nisq open-quantum-systems pytorch quantum quantum-algorithms quantum-circuit quantum-computing quantum-dynamics quantum-error-mitigation quantum-machine-learning quantum-noise quantum-simulation tensor-network tensorflow variational-quantum-algorithms

English | 简体中文

TensorCircuit is the next generation of quantum software framework with support for automatic differentiation, just-in-time compiling, hardware acceleration, and vectorized parallelism.

TensorCircuit is built on top of modern machine learning frameworks: Jax, TensorFlow, and PyTorch. It is specifically suitable for highly efficient simulations of quantum-classical hybrid paradigm and variational quantum algorithms in ideal, noisy and approximate cases. It also supports real quantum hardware access and provides CPU/GPU/QPU hybrid deployment solutions since v0.9.

Getting Started

Please begin with Quick Start in the full documentation.

For more information on software usage, sota algorithm implementation and engineer paradigm demonstration, please refer to 70+ example scripts and 30+ tutorial notebooks. API docstrings and test cases in tests are also informative.

The following are some minimal demos.

import tensorcircuit as tc
c = tc.Circuit(2)
c.H(0)
c.CNOT(0,1)
c.rx(1, theta=0.2)
print(c.wavefunction())
print(c.expectation_ps(z=[0, 1]))
print(c.sample(allow_state=True, batch=1024, format="count_dict_bin"))
tc.set_backend("tensorflow")
tc.set_dtype("complex128")
tc.set_contractor("greedy")
def forward(theta):
    c = tc.Circuit(2)
    c.R(0, theta=theta, alpha=0.5, phi=0.8)
    return tc.backend.real(c.expectation((tc.gates.z(), [0])))

g = tc.backend.grad(forward)
g = tc.backend.jit(g)
theta = tc.array_to_tensor(1.0)
print(g(theta))
More highlight features for TensorCircuit (click for details) - Sparse Hamiltonian generation and expectation evaluation: ```python n = 6 pauli_structures = [] weights = [] for i in range(n): pauli_structures.append(tc.quantum.xyz2ps({"z": [i, (i + 1) % n]}, n=n)) weights.append(1.0) for i in range(n): pauli_structures.append(tc.quantum.xyz2ps({"x": [i]}, n=n)) weights.append(-1.0) h = tc.quantum.PauliStringSum2COO(pauli_structures, weights) print(h) # BCOO(complex64[64, 64], nse=448) c = tc.Circuit(n) c.h(range(n)) energy = tc.templates.measurements.operator_expectation(c, h) # -6 ``` - Large-scale simulation with tensor network engine ```python # tc.set_contractor("cotengra-30-10") n=500 c = tc.Circuit(n) c.h(0) c.cx(range(n-1), range(1, n)) c.expectation_ps(z=[0, n-1], reuse=False) ``` - Density matrix simulator and quantum info quantities ```python c = tc.DMCircuit(2) c.h(0) c.cx(0, 1) c.depolarizing(1, px=0.1, py=0.1, pz=0.1) dm = c.state() print(tc.quantum.entropy(dm)) print(tc.quantum.entanglement_entropy(dm, [0])) print(tc.quantum.entanglement_negativity(dm, [0])) print(tc.quantum.log_negativity(dm, [0])) ```

Install

The package is written in pure Python and can be obtained via pip as:

pip install tensorcircuit

We recommend you install this package with tensorflow also installed as:

pip install tensorcircuit[tensorflow]

Other optional dependencies include [torch], [jax], [qiskit] and [cloud].

We also have Docker support.

Advantages

Contributing

Status

This project is created and maintained by Shi-Xin Zhang with current core authors Shi-Xin Zhang and Yu-Qin Chen. We also thank contributions from the open source community.

Citation

If this project helps in your research, please cite our software whitepaper to acknowledge the work put into the development of TensorCircuit.

TensorCircuit: a Quantum Software Framework for the NISQ Era (published in Quantum)

which is also a good introduction to the software.

Research works citing TensorCircuit can be highlighted in Research and Applications section.

Guidelines

For contribution guidelines and notes, see CONTRIBUTING.

We welcome issues, PRs, and discussions from everyone, and these are all hosted on GitHub.

License

TensorCircuit is open source, released under the Apache License, Version 2.0.

Contributors

Shixin Zhang
Shixin Zhang

💻 📖 💡 🤔 🚇 🚧 🔬 👀 🌍 ⚠️ 📢 💬
Yuqin Chen
Yuqin Chen

💻 📖 💡 🤔 🔬 ⚠️ 📢
Jiezhong Qiu
Jiezhong Qiu

💻 💡 🤔 🔬
Weitang Li
Weitang Li

💻 📖 🤔 🔬 ⚠️ 📢
Jiace Sun
Jiace Sun

💻 📖 💡 🤔 🔬 ⚠️
Zhouquan Wan
Zhouquan Wan

💻 📖 💡 🤔 🔬 ⚠️
Shuo Liu
Shuo Liu

💡 🔬
Hao Yu
Hao Yu

💻 📖 🚇 ⚠️
Xinghan Yang
Xinghan Yang

📖 🌍
JachyMeow
JachyMeow

🌍
Zhaofeng Ye
Zhaofeng Ye

🎨
erertertet
erertertet

💻 📖 ⚠️
Yicong Zheng
Yicong Zheng

Zixuan Song
Zixuan Song

📖 🌍 💻 ⚠️
Hao Xie
Hao Xie

📖
Pramit Singh
Pramit Singh

⚠️
Jonathan Allcock
Jonathan Allcock

📖 🤔 📢
nealchen2003
nealchen2003

📖
隐公观鱼
隐公观鱼

💻 ⚠️
WiuYuan
WiuYuan

💡
Felix Xu
Felix Xu

💻 ⚠️
Hong-Ye Hu
Hong-Ye Hu

📖
peilin
peilin

💻 ⚠️ 📖
Cristian Emiliano Godinez Ramirez
Cristian Emiliano Godinez Ramirez

💻 ⚠️
ztzhu
ztzhu

💻
Rabqubit
Rabqubit

💡
Kazuki Tsuoka
Kazuki Tsuoka

💻 ⚠️ 📖 💡
Gopal Ramesh Dahale
Gopal Ramesh Dahale

💡
Chanandellar Bong
Chanandellar Bong

💡

Research and Applications

DQAS

For the application of Differentiable Quantum Architecture Search, see applications.

Reference paper: https://arxiv.org/abs/2010.08561 (published in QST).

VQNHE

For the application of Variational Quantum-Neural Hybrid Eigensolver, see applications.

Reference paper: https://arxiv.org/abs/2106.05105 (published in PRL) and https://arxiv.org/abs/2112.10380 (published in AQT).

VQEX-MBL

For the application of VQEX on MBL phase identification, see the tutorial.

Reference paper: https://arxiv.org/abs/2111.13719 (published in PRB).

Stark-DTC

For the numerical demosntration of discrete time crystal enabled by Stark many-body localization, see the Floquet simulation demo.

Reference paper: https://arxiv.org/abs/2208.02866 (published in PRL).

RA-Training

For the numerical simulation of variational quantum algorithm training using random gate activation strategy by us, see the project repo.

Reference paper: https://arxiv.org/abs/2303.08154 (published in PRR as a Letter).

TenCirChem

TenCirChem is an efficient and versatile quantum computation package for molecular properties. TenCirChem is based on TensorCircuit and is optimized for chemistry applications.

Reference paper: https://arxiv.org/abs/2303.10825 (published in JCTC).

EMQAOA-DARBO

For the numerical simulation and hardware experiments with error mitigation on QAOA, see the project repo.

Reference paper: https://arxiv.org/abs/2303.14877 (published in Communications Physics).

NN-VQA

For the setup and simulation code of neural network encoded variational quantum eigensolver, see the demo.

Reference paper: https://arxiv.org/abs/2308.01068 (published in PRApplied).

More works

More research works and code projects using TensorCircuit (click for details) - Neural Predictor based Quantum Architecture Search: https://arxiv.org/abs/2103.06524 (published in Machine Learning: Science and Technology). - Quantum imaginary-time control for accelerating the ground-state preparation: https://arxiv.org/abs/2112.11782 (published in PRR). - Efficient Quantum Simulation of Electron-Phonon Systems by Variational Basis State Encoder: https://arxiv.org/abs/2301.01442 (published in PRR). - Variational Quantum Simulations of Finite-Temperature Dynamical Properties via Thermofield Dynamics: https://arxiv.org/abs/2206.05571. - Understanding quantum machine learning also requires rethinking generalization: https://arxiv.org/abs/2306.13461 (published in Nature Communications). - Decentralized Quantum Federated Learning for Metaverse: Analysis, Design and Implementation: https://arxiv.org/abs/2306.11297. Code: https://github.com/s222416822/BQFL. - Non-IID quantum federated learning with one-shot communication complexity: https://arxiv.org/abs/2209.00768 (published in Quantum Machine Intelligence). Code: https://github.com/JasonZHM/quantum-fed-infer. - Quantum generative adversarial imitation learning: https://doi.org/10.1088/1367-2630/acc605 (published in New Journal of Physics). - GSQAS: Graph Self-supervised Quantum Architecture Search: https://arxiv.org/abs/2303.12381 (published in Physica A: Statistical Mechanics and its Applications). - Practical advantage of quantum machine learning in ghost imaging: https://www.nature.com/articles/s42005-023-01290-1 (published in Communications Physics). - Zero and Finite Temperature Quantum Simulations Powered by Quantum Magic: https://arxiv.org/abs/2308.11616. - Comparison of Quantum Simulators for Variational Quantum Search: A Benchmark Study: https://arxiv.org/abs/2309.05924. - Statistical analysis of quantum state learning process in quantum neural networks: https://arxiv.org/abs/2309.14980 (published in NeurIPS). - Generative quantum machine learning via denoising diffusion probabilistic models: https://arxiv.org/abs/2310.05866 (published in PRL). - Quantum imaginary time evolution and quantum annealing meet topological sector optimization: https://arxiv.org/abs/2310.04291. - Google Summer of Code 2023 Projects (QML4HEP): https://github.com/ML4SCI/QMLHEP, https://github.com/Gopal-Dahale/qgnn-hep, https://github.com/salcc/QuantumTransformers. - Absence of barren plateaus in finite local-depth circuits with long-range entanglement: https://arxiv.org/abs/2311.01393 (published in PRL). - Non-Markovianity benefits quantum dynamics simulation: https://arxiv.org/abs/2311.17622.

If you want to highlight your research work or projects here, feel free to add by opening PR.