Hands-on materials for learning Quantum Machine Learning from scratch to advanced algorithms
Features β’ Quick Start β’ Modules β’ Examples
- π¬ Custom Quantum Simulator: Build a quantum circuit simulator from scratch to understand fundamentals
- π§ PennyLane Integration: Learn quantum machine learning with industry-standard tools
- β‘ CUDA-Q Examples: High-performance quantum computing with NVIDIA's platform
- π Visual Learning: Rich visualizations and plots for every concept
- π― Practical Examples: Real-world applications including VQE, QAOA, and qGAN
- π§ͺ Fully Tested: Comprehensive test suite with CI/CD pipeline
# Clone the repository
git clone https://github.com/matibilkis/intro-2-QML.git
cd intro-2-QML
# Install dependencies
pip install -r requirements.txt
# Run your first quantum circuit
python modules/01_custom_simulator/01_basic_circuits.py- Python 3.9+
- NumPy, Matplotlib, tqdm
- PennyLane (optional, for Module 2)
- CUDA-Q (optional, for Module 3)
Learn quantum computing fundamentals by building from scratch
Master the building blocks of quantum computing with our custom "Castellers" simulator. Understand gates, measurements, and quantum states at the lowest level.
from castellers import QuantumCircuit
qc = QuantumCircuit()
circuit = [qc.ry(np.pi/2), qc.rz(np.pi)]
unitary = qc.unitary(circuit)
state = qc.output_state(unitary)Topics Covered:
- β Quantum gates and circuit composition
- β State preparation and measurement
- β Energy landscapes and optimization
- β Parameter-shift rule for gradients
- β Variational Quantum Algorithms (VQA)
Files:
01_basic_circuits.py- Basic operations02_energy_landscape.py- Energy exploration03_parameter_shift_rule.py- Gradient computation04_gradient_descent.py- Complete VQA training
Build quantum neural networks with modern tools
Transition to professional quantum machine learning tools. Learn to build quantum neural networks, implement VQE, and leverage automatic differentiation.
import pennylane as qml
@qml.qnode(dev)
def quantum_circuit(params):
qml.RY(params[0], wires=0)
qml.RZ(params[1], wires=0)
return qml.expval(qml.PauliX(0))Topics Covered:
- β PennyLane basics and automatic differentiation
- β Variational Quantum Eigensolver (VQE)
- β Entanglement and multi-qubit systems
- β Quantum Neural Networks for classification
- β Integration with classical ML frameworks
Files:
01_introduction.py- PennyLane fundamentals02_vqe_two_qubits.py- VQE with entanglement03_quantum_neural_network.py- Complete QNN example
High-performance quantum computing with NVIDIA CUDA-Q
Explore cutting-edge quantum algorithms on NVIDIA's platform. Implement QAOA for optimization and quantum GANs for generative modeling.
import cudaq
@cudaq.kernel
def qaoa_ansatz(gamma, beta):
q = cudaq.qubit()
h(q)
ry(gamma, q)
rx(beta, q)
mz(q)Topics Covered:
- β CUDA-Q platform fundamentals
- β Variational Quantum Algorithms
- β Quantum Approximate Optimization Algorithm (QAOA)
- β Quantum Generative Adversarial Networks (qGAN)
- β Combinatorial optimization applications
Files:
01_basics.py- CUDA-Q fundamentals02_vqa_training.py- VQA implementation03_qaoa.py- QAOA for MaxCut04_qgan.py- Quantum GAN for image generation
# Custom simulator approach
from modules.01_custom_simulator import optimize_vqa
params, energy = optimize_vqa(
initial_params=[np.pi/4, np.pi/2],
n_iterations=1000
)# PennyLane approach
from modules.02_pennylane.03_quantum_neural_network import train_qnn
qnn, n_params = create_qnn(n_layers=2)
params = train_qnn(qnn, n_params, X_train, y_train)# CUDA-Q approach
from modules.03_cudaq.03_qaoa import optimize_qaoa
gamma, beta, cost = optimize_qaoa(
G, p=2, n_iterations=50
)intro-2-QML/
βββ π modules/
β βββ π 01_custom_simulator/ # Custom quantum simulator
β βββ π 02_pennylane/ # PennyLane examples
β βββ π 03_cudaq/ # CUDA-Q examples
βββ π tests/ # Test suite
βββ π figures/ # Visualizations
βββ π castellers.py # Core simulator library
βββ π requirements.txt # Dependencies
βββ π README.md # This file
Run the comprehensive test suite:
# Install test dependencies
pip install -r requirements.txt
# Run all tests
pytest tests/ -v
# Run with coverage
pytest tests/ --cov=modules --cov=castellersContributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- Start with Module 1 - Understand quantum fundamentals
- Move to Module 2 - Learn professional tools (PennyLane)
- Explore Module 3 - Advanced algorithms (CUDA-Q)
- Experiment - Modify examples and create your own
This course material was originally developed for FΓsica CuΓ‘ntica II at the Autonomous University of Barcelona (May 2021) and has been expanded into a comprehensive QML course.
This project is licensed under the MIT License - see the LICENSE file for details.
MatΓas Bilkis
- GitHub: @matibilkis
- Original tutorial inspiration from FΓsica CuΓ‘ntica II course
- PennyLane team for excellent documentation
- NVIDIA for CUDA-Q platform
- Quantum computing community
β Star this repo if you find it helpful! β
Made with β€οΈ for the quantum computing community