Code Monkey home page Code Monkey logo

braket.jl's People

Contributors

amazon-auto avatar dilumaluthge avatar kshyatt-aws avatar maolinml avatar pitmonticone avatar zmohammad01 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

braket.jl's Issues

Support for Braket Direct reservations

Describe the feature you'd like
Amazon Braket now has the Braket Direct feature, which allows users to reserve certain Direct-only devices or access experimental capabilities of devices.

Is this feature already present in the Python SDK?
Yes. https://github.com/amazon-braket/amazon-braket-sdk-python/blob/main/src/braket/aws/direct_reservations.py

How would this feature be used? Please describe.
This allows users to provide a reservation arn to access their reservation, as in the BDK.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Intermittently failing noise model test.

Describe the bug
The apply noise model test fails intermittently on CI, only on OSX:

apply: Test Failed at /Users/runner/work/Braket.jl/Braket.jl/test/noise_model.jl:132
  Expression: noisy_circuit_from_circuit.instructions == expected_circuit.instructions
   Evaluated: Instruction[Instruction(Depolarizing(0.09), QubitSet(0)), Instruction(H(), QubitSet(0)), Instruction(Depolarizing(0.04), QubitSet(0)), Instruction(PauliChannel(0.06, 0.07, 0.08), QubitSet(0)), Instruction(CNot(), QubitSet(0, 1)), Instruction(TwoQubitDepolarizing(0.05), QubitSet(0, 1)), Instruction(Unitary(ComplexF64[0.7071067811865475 + 0.0im 0.7071067811865475 + 0.0im; 0.7071067811865475 + 0.0im -0.7071067811865475 + 0.0im]), QubitSet(0)), Instruction(Depolarizing(0.1), QubitSet(0)), Instruction(Depolarizing(0.06), QubitSet(0))] == Instruction[Instruction(Depolarizing(0.09), QubitSet(0)), Instruction(H(), QubitSet(0)), Instruction(Depolarizing(0.04), QubitSet(0)), Instruction(Depolarizing(0.04), QubitSet(0)), Instruction(CNot(), QubitSet(0, 1)), Instruction(TwoQubitDepolarizing(0.05), QubitSet(0, 1)), Instruction(Unitary(ComplexF64[0.7071067811865475 + 0.0im 0.7071067811865475 + 0.0im; 0.7071067811865475 + 0.0im -0.7071067811865475 + 0.0im]), QubitSet(0)), Instruction(Depolarizing(0.1), QubitSet(0)), Instruction(Depolarizing(0.06), QubitSet(0))]

To reproduce
Seemingly cannot reproduce this locally.

Expected behavior
Test should pass as it does on my local OSX laptop, and on Ubuntu and Windows.

Screenshots or logs
Failing jobs log.

System information
A description of your system. Please provide:

  • Julia version: 1.8
  • Braket.jl version: 0.2.0
  • OS and CPU arch: OSX & x86

Additional context
Have only ever observed this on Github CI which makes it very difficult to repro.

Auto-parsing of Python schemas to extrude StructTypes representations in Julia

Describe the feature you'd like
It should be possible to use the Smithy representation of the Amazon Braket Schemas to automatically generate JSON versions of all the Braket Schemas, which JSON3.jl and StructTypes.jl can then digest to generate the corresponding Julia types.

Is this feature already present in the Python SDK?
N/A

How would this feature be used? Please describe.
This would make it possible to keep the Braket.jl versions of the schemas up to date automatically.

Describe alternatives you've considered
Currently this must be done by hand.

Additional context
It's necessary to replicate some of the implicit information encoded by the type hierarchy in Python that is currently represented with traits in Julia, e.g. target count. Also, support for the Pydantic restrictions on fields would be helpful.

TagBot trigger issue

This issue is used to trigger TagBot; feel free to unsubscribe.

If you haven't already, you should update your TagBot.yml to include issue comment triggers.
Please see this post on Discourse for instructions and more details.

If you'd like for me to do this for you, comment TagBot fix on this issue.
I'll open a PR within a few hours, please be patient!

Full support for local detuning

Describe the feature you'd like
QuEra's Aquila now supports local detuning with Braket Direct. The underlying structs are implemented in Braket.jl but many of the correctness tests and validations are not.

Is this feature already present in the Python SDK?
Yes. https://github.com/amazon-braket/amazon-braket-sdk-python/blob/6c4282e7eafcff906c4cfc6804bf06209d82a4fc/src/braket/ahs/local_detuning.py#L23

How would this feature be used? Please describe.
Local detuning would be used with Braket Direct to access this advanced feature of Aquila.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Feature request: support for loading pickled results from Hybrid Jobs

Describe the feature you'd like
Amazon Braket Hybrid Jobs may encapsulate job results in a Python pickle file, especially if the results are large or contain images. Currently Julia isn't able to natively read pickle files (e.g. without shelling out to Python or using PythonCall.jl). Ideally we'd be able to un-pickle these files without any dependency on Python.

Is this feature already present in the Python SDK?
Yes, there is support for pickled results files.

How would this feature be used? Please describe.
Users would be able to extract their results without having to use or install Python.

Describe alternatives you've considered
You can currently use pickle either via the shell (e.g. running a cmd) or PythonCall, but this isn't ideal behavior.

Additional context
There are some nascent pure Julia packages for un-pickling (e.g. Pandas.jl and Pickle.jl). Any implementation of this feature should explain why a particular package was chosen.

More examples in documentation

What did you find confusing? Please describe.

Would be great to have more doctests and examples for various features.
Describe how documentation can be improved

Add doctests for:

  • [] Circuit construction
  • [] Circuit manipulation (adding noise models, combining circuits)
  • [] Various result types
  • [] AHS programs
  • [] Querying device properties

Add an example of submitting hybrid job

What did you find confusing? Please describe.
A clear and concise description of what you found confusing. Ex. I tried to [...] but I didn't understand how to [...]

I am looking for how to submit a hybrid job through Braket.jl without the need of Python, but I couldn't find any example in the "example" folder. In the "test" folder, there seems to contain some examples but I couldn't follow them.

Describe how documentation can be improved
A clear and concise description of where documentation was lacking and how it can be improved.

Add an example in the "example" folder, which explains the essential elements of hybrid job, such as
a) how to specify the algorithm script and entry point,
b) how to configure instances,
c) how to specify devices
d) how to set hyperparameters
e) how to set images if needed

The example could simply replicate one of the examples in the Braket example folder.

Additional context
Add any other context or screenshots about the documentation request here.

Support for symbolic expressions in FreeParameters

Describe the feature you'd like
Currently only numerical values are allowed for FreeParameter. We should replicate the Python SDK support for FreeParameterExpression, allowing gates like Rx( 2 * alpha /3), for example.

Is this feature already present in the Python SDK?
Yes. https://github.com/amazon-braket/amazon-braket-sdk-python/blob/main/src/braket/parametric/free_parameter_expression.py

How would this feature be used? Please describe.
This would allow more complex expressions for parametrized gates.

Describe alternatives you've considered
Currently users have to create new parameters to capture cases like 2 * alpha.

Additional context
An appropriate Julia package should be chosen for the symbolic expressions. SymbolicExpressions.jl is one example.

Feature request: pulse control

Describe the feature you'd like
Support in Julia SDK for OpenPulse and pulse control of QPUs.

Is this feature already present in the Python SDK?
Yes.

How would this feature be used? Please describe.
Would allow users to natively use pulse from the Julia SDK.

Describe alternatives you've considered
Could provide thin support through PyBraket.jl.

Additional context
See the dev guide for more information about Pulse.

Decimals.jl support

Describe the feature you'd like
The current Braket IR uses Dec128 from DecFP to represent the Decimal type but this relies on an external Intel library. It would be nice if Decimals.jl support could be added as a Julia-native option for the Decimal type.

How would this feature be used? Please describe.
There are plans for the Bloqade.jl schema to use Decimals.jl. If the Braket IR supported Decimals.jl it would make future IR conversions much easier ๐Ÿ˜ƒ

Credit to @Roger-luo and @weinbe58 for the idea

Feature request: support for local jobs

Describe the feature you'd like
Native Julia support for the Braket Local Jobs feature, which allows users to download the Docker image for their job and run the job on their hardware to test and debug before running it on AWS managed infra.

Is this feature already present in the Python SDK?
Yes.

How would this feature be used? Please describe.
A user would be able to download the Docker image from Amazon ECR and run and test their workflow on their hardware before/instead of running it on AWS managed infrastructure, and without having to use Python.

Describe alternatives you've considered
One could still go through PyBraket although again this requires installing the full Python stack.

Additional context
Check out the dev guide for more information on how Local Jobs work.

Feature Request: Validation API for AHS programs

Describe the feature you'd like
Currently the only method to validate if a AHS program is compatible with a AHS device is to submit that program as a task.

Is this feature already present in the Python SDK?
Not that I am aware of.

How would this feature be used? Please describe.
Ideally some functionality to validate parts or a whole task

validate(device, register::AtomArrangment)
validate(device, hamiltonian::Hamiltonian)
validate(device, ahs_program::AnalogHamiltonianSimulation)

Describe alternatives you've considered
BloqadeSchema supports validation of the entire task but the objects are not the same so validation would require translating from Braket Schemas to Bloqade objects.

Feature request: Benchmarks

Describe the feature you'd like
Basic benchmarking of code for adding circuits, generating basis rotation instructions, comparing Sums, etc.

Is this feature already present in the Python SDK?
No.

How would this feature be used? Please describe.
Helps us diagnose regressions and tackle performance bottlenecks.

Describe alternatives you've considered
N/A.

Additional context
Some good initial benchmarks would be:

  • [] Adding two very wide (many qubits) and deep (many gates) circuits
  • [] Applying a complicated noise model to a very deep circuit
  • [] Comparing two large Sum operators
  • [] Translating a very large Circuit to OpenQASM
  • [] Postprocessing of a shots>0 run with many thousands of measurements
  • [] Clamping all free parameters in a circuit with many thousands of them

Feature request: circuit pretty-printing

Describe the feature you'd like

Currently we don't have a nice way to Base.show our Circuits, which the Python SDK does have.

Is this feature already present in the Python SDK?
Yes.

How would this feature be used? Please describe.
Would be very helpful for notebooks and basic correctness checking.

Describe alternatives you've considered
Currently one can cheat by turning a Circuit into a PyCircuit and printing that. However this won't work if you don't want to install the full Python stack.

Feature request: integration with Yao ecosystem

Describe the feature you'd like
Integrate Braket.jl and Yao.jl to allow Yao users to run circuits/AHS programs on Braket.

Is this feature already present in the Python SDK?
No.

How would this feature be used? Please describe.
Would allow Yao users to seamlessly run their existing quantum circuits on real QPUs. Would also enable Bloqade users to run AHS programs directly on QuEra's Aquila device.

cc: @Roger-luo @GiggleLiu

ITensor-based MPS local simulator

Describe the feature you'd like
Now that we support LocalSimulators, we can hook into ITensor's support for DMRG-based evolution methods to implement tensor network circuit simulation.

Is this feature already present in the Python SDK?
No.

How would this feature be used? Please describe.
It would make sense to implement this as a package extension, which could be loaded on newer Julia versions once ITensors.jl is installed.

Describe alternatives you've considered
This could also be a standalone package.

Additional context
It would be useful to offer users some control over how the simulation is run (e.g. TDVP vs TEBD, maximum bond dimension). Offering a version that supports the GPU implementations of ITensors.jl would be a good stretch goal.

Implement shadows-, grouping-, and POVM-based measurement estimation schemes

Describe the feature you'd like
Implementation of classical shadows or POVMs in Braket.jl.

Is this feature already present in the Python SDK?
No, although shadows can be used in the Python SDK via PennyLane.

How would this feature be used? Please describe.
These schemes allow estimation of observables (especially observables of many non-commuting Pauli words) more efficiently than naively measuring each term in the operator,.

Describe alternatives you've considered
The alternative would be not implementing these.

Additional context
TO DO: add some paper references.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.