Here's a README.md for the QML Training Mini-App:
The QML Training Mini-App is a quantum machine learning application designed for training quantum circuit-based generative models. It leverages the QuGEN framework and supports distributed execution through Ray/Pilot-Quantum for high-performance computing environments.
- Quantum Circuit Born Machine (QCBM) training
- Distributed execution capabilities
- Configurable quantum circuit parameters
- Performance metrics collection
- Support for different parallelism frameworks (JAX)
- Python 3.10+
- QuGEN framework
- JAX
- Pilot-Quantum
- Ray (for distributed execution)
- Multi-core CPU support
- Optional: GPU acceleration
- HPC cluster (for distributed training)
cluster_info = {
"executor": "pilot",
"config": {
"resource": "slurm://localhost",
"type": "ray",
"number_of_nodes": 1,
"cores_per_node": 2,
"queue": "debug",
"walltime": 30
}
}qml_parameters = {
"build_parameters": {
"model_type": "discrete",
"data_set_name": "X_2D",
"n_qubits": 8,
"n_registers": 2,
"circuit_depth": 2,
"circuit_type": "copula",
"transformation": "pit",
"parallelism_framework": "jax"
},
"train_parameters": {
"n_epochs": 3,
"batch_size": 200,
"hist_samples": 100000
}
}from mini_apps.qml_training.qml_training_miniapp import QMLTrainingMiniApp
# Initialize mini-app with configurations
qml_mini_app = QMLTrainingMiniApp(cluster_info, qml_parameters)
# Run training
qml_mini_app.run()
# Clean up
qml_mini_app.close()The mini-app consists of two main components:
-
QMLTrainingMiniApp: Main class handling execution and metrics collection
-
DiscreteQCBMModelHandler: Handles the quantum circuit model building and training
The mini-app collects and records the following metrics:
- Timestamp
- Scenario label
- Number of qubits
- Computation time
- Training parameters
- Cluster configuration
- Kullback-Leibler divergence
Results are saved in CSV format with timestamps for further analysis.
- QuGEN Framework: https://github.com/QutacQuantum/qugen
- Pilot-Quantum: https://github.com/radical-cybertools/pilot-quantum
- Pennylane on Perlmutter with MPI/GPU: https://github.com/radical-cybertools/quantum-mini-apps/blob/develop/src/mini_apps/quantum_simulation/distributed_state_vector/README.md#pennylane-lightninggpu-from-source-on-perlmutter