❗ This plugin will not be supported in newer versions of PennyLane. It is compatible with versions of PennyLane up to and including 0.33❗
The PennyLane-Orquestra plugin integrates the Orquestra workflow management system for quantum computing with PennyLane's quantum machine learning capabilities.
PennyLane is a cross-platform Python library for differentiable programming of quantum computers.
Orquestra is a workflow management system for quantum computing.
- Provides four devices to be used with PennyLane:
orquestra.forest
,orquestra.ibmq
,orquestra.qiskit
andorquestra.qulacs
. These devices provide access to the various backends and simulators, including hardware devices like the IBM hardware, which is accessible through the cloud. - Allows computing expectation values by submitting and processing Orquestra workflows.
- Supports a wide range of PennyLane operations.
- Combines Orquestra's execution capabilities to submit batches of circuits that can be executed in parallel.
The source folder of the plugin contains sub-folders for both server and client-side code:
- Server-side: the
steps
subfolder contains the functions used in generated workflows as steps and thesrc
subfolder contains further server-side auxiliary code (if any). Orquestra imports themain
branch of thepennylane-orquestra
repository on each workflow submission, so server-side changes merged into themain
branch take effect immediately. - Client-side: the
pennylane_orquestra
subfolder contains client-side code making up the PennyLane-Orquestra plugin.
This plugin requires Python version 3.6 and above. PennyLane and the Quantum Engine CLI are also required.
Installation of this plugin, as well as all dependencies, can be done using pip
:
pip install pennylane-orquestra
To test that the PennyLane-Orquestra plugin is working correctly you can run
make test
in the source folder. Tests that involve submitting Orquestra workflows to test
the end-to-end integration of the plugin can be run with make test-e2e
.
Note
Tests on the IBMQ device
can only be run if an IBM Q authentication token is available via the IBMQX_TOKEN
environment variable for the IBM Q experience.
If this is the case, running make test-e2e
also executes tests on the
orquestra.ibmq
device. By default tests on the orquestra.ibmq
device run with ibmq_qasm_simulator
backend. At the time of writing
this means that the test are "free". Please verify that this is also the
case for your account.
Further test cases for the steps
used by the PennyLane-Orquestra plugin are
located in steps/tests
. To run these, Python version 3.9 and above is
required along with the dependencies contained in the
steps/requirements_for_tests.txt
. Once these are available, running make
test-steps
will run the steps
test suite.
Please refer to the plugin documentation as well as to the PennyLane documentation for further reference.
We welcome contributions - simply fork the repository of this plugin, and then make a pull request containing your contribution. All contributers to this plugin will be listed as authors on the releases.
We also encourage bug reports, suggestions for new features and enhancements, and even links to cool projects or applications built on PennyLane.
PennyLane-Orquestra is the work of many contributors.
If you are doing research using PennyLane and PennyLane-Orquestra, please cite our paper:
Ville Bergholm, Josh Izaac, Maria Schuld, Christian Gogolin, M. Sohaib Alam, Shahnawaz Ahmed, Juan Miguel Arrazola, Carsten Blank, Alain Delgado, Soran Jahangiri, Keri McKiernan, Johannes Jakob Meyer, Zeyue Niu, Antal Száva, and Nathan Killoran. PennyLane: Automatic differentiation of hybrid quantum-classical computations. 2018. arXiv:1811.04968
- Source Code: https://github.com/PennyLaneAI/pennylane-orquestra
- Issue Tracker: https://github.com/PennyLaneAI/pennylane-orquestra/issues
- PennyLane Forum: https://discuss.pennylane.ai
If you are having issues, please let us know by posting the issue on our Github issue tracker, or by asking a question in the forum.
The PennyLane orquestra plugin is free and open source, released under the Apache License, Version 2.0.