We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

Simulating noisy quantum devices with QuTiP

00:00

Formal Metadata

Title
Simulating noisy quantum devices with QuTiP
Title of Series
Number of Parts
490
Author
License
CC Attribution 2.0 Belgium:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Identifiers
Publisher
Release Date
Language

Content Metadata

Subject Area
Genre
Abstract
Simulation is a powerful tool to understand quantum phenomena. The simulation of quantum circuits is usually achieved by gate matrix product, such as in Qiskit and ProjectQ. Thanks to the Lindblad master equation solver, QuTiP is developing a simulator that simulates quantum circuits at the level of the real quantum evolution happening in your quantum device. This framework offers pulse-level control and a flexible way of noise simulation. Upon it, we are going to define different back-ends for different physics systems such as Cavity QED, Ion trap or Superconducting system. The simulator could help to improve your quantum device, study the effect of noise and create noise mitigation scheme.
Quantum computerNumberSoftwareStudent's t-testQuantum computerOpen setFocus (optics)Software developerModule (mathematics)Computer simulationMereologyCodeProjective planePhysical systemComputer animation
Quantum computerComputing platformPhysical systemSimulationObservational studyPhysical systemDifferent (Kate Ryan album)QubitQuantum computerComputing platform
Quantum computerState of matterOperator (mathematics)Function (mathematics)SphereBloch waveTime evolutionSystem dynamicsPhysical systemQuantum computerQuantum stateInformationstheorieOpticsDifferent (Kate Ryan album)AbstractionSystem dynamicsMereologyOperator (mathematics)Transformation (genetics)Functional (mathematics)Visualization (computer graphics)SphereInheritance (object-oriented programming)Computer animation
Physical systemOperator (mathematics)Hamiltonian (quantum mechanics)EquationBloch waveInvariant (mathematics)Quantum computerNichtlineares GleichungssystemHost Identity ProtocolResultantNichtlineares GleichungssystemMereologyQuantum computerIntegrated development environmentState of matterCentralizer and normalizerDissipationPhysical systemPhysical lawCASE <Informatik>Semiconductor memoryQubitInvariant (mathematics)MeasurementSystem dynamicsWell-formed formulaEccentricity (mathematics)Phase transitionComputer animation
Observational studyPhysicsQuantum computerProcess (computing)Optimale KontrolleSystem dynamicsStochasticOpticsMathematical optimizationPhysicalismQuantum computerQuantum information scienceComputer simulationInformationComputer animation
Quantum circuitQuantum circuitLogic gateQuantum computerState of matterForm (programming)MereologyProduct (business)Matrix (mathematics)Representation (politics)
Control flowComputer simulationSoftwareLevel (video gaming)Different (Kate Ryan album)Projective planeQuantum circuitSystem dynamicsPhysicalismSimulationGame controllerPulse (signal processing)MereologyComputer simulationDigital electronicsComputer animation
Computer simulationControl flowPulse (signal processing)CoprocessorNumbering schemeHamiltonian (quantum mechanics)Parameter (computer programming)QuiltSequenceCoefficientModule (mathematics)Quantum computerGame controllerCodePulse (signal processing)InformationSocial classComputer simulationNoise (electronics)QubitRectangleElement (mathematics)State of matterTime seriesCoefficientShape (magazine)Multiplication signNumbering schemeCoprocessorComputer animation
System dynamicsComputer simulationPulse (signal processing)Shape (magazine)Ideal (ethics)AdditionSingle-precision floating-point formatAbstractionQubitDescriptive statisticsLevel (video gaming)Noise (electronics)Logic gatePotenz <Mathematik>PhysicalismError messageShift operatorGame controllerSimulationRandomizationPulse (signal processing)State of matterEnergy levelZwei-Niveau-SystemPhysical systemFile formatBitDigital electronicsOffenes KommunikationssystemMereologyComputer animation
Quantum computerCompileroutputControl flowParameter (computer programming)CoefficientPulse (signal processing)Digital electronicsPhysicalismLevel (video gaming)Different (Kate Ryan album)Game controllerDigital electronicsFrequencyPulse (signal processing)Front and back endsNumbering schemePhysical systemCompilation albumQuantum computerNoise (electronics)Correspondence (mathematics)MereologyOnline helpQuantum circuit
Time evolutionAlgorithmPersonal digital assistantBuildingQuantum computerSoftware frameworkComputer simulationSource codeSoftware testingNumbering schemePulse (signal processing)CodeLine (geometry)Error messageLimit (category theory)ExtrapolationComputer simulationLevel (video gaming)Different (Kate Ryan album)Software testingResultantAlgorithmPhysicalismParameter (computer programming)ExtrapolationFigurate numberGraph coloringoutputArithmetic meanVector potentialNoise (electronics)Numbering schemePhysical systemCodeLine (geometry)Multiplication signCASE <Informatik>Pulse (signal processing)Form (programming)Logic gateWeb pageServer (computing)Software frameworkGame controllerDigital electronicsQuantum computerPatch (Unix)Phase transitionObject (grammar)CompilerIdeal (ethics)Module (mathematics)LaptopFormal verificationQuantum circuitComputer animation
Software developerUsabilitySoftware developerOcean currentWeb-DesignerProjective planeComputer animation
Local GroupGoogolCodeRevision controlPhysicsQuantum computerWeb 2.0LaptopMereologyBenutzerhandbuchWeb pageLaptopForm (programming)Source code
BlogWechselseitige InformationGame controllerStudent's t-testFront and back endsCodeFrequencyPosition operatorSpline (mathematics)Projective planeFile formatWeb pageMultiplication signPhysicalismDomain nameOpen setSoftware developer
GoogolLocal GroupCodeRevision controlPhysicsQuantum computerPersonal digital assistantSoftware frameworkComputer simulationBuildingSource codeNumbering schemeSoftware testingPulse (signal processing)Line (geometry)Error messageAlgorithmExtrapolationLimit (category theory)CompileroutputControl flowParameter (computer programming)Quantum circuitCoefficientCoprocessorNumbering schemeHamiltonian (quantum mechanics)SequenceForm (programming)Hamiltonian (quantum mechanics)Game controllerFigurate numberFront and back endsSoftware developerMereologyFunction (mathematics)Data structureSurfaceComputer animation
CompileroutputParameter (computer programming)Control flowDigital electronicsPulse (signal processing)Quantum computerCoefficientConvex hullAverageRange (statistics)Sampling (statistics)Multiplication signMereologyTracing (software)Different (Kate Ryan album)Physical systemEvoluteDifferential equationLimit (category theory)
Open setPoint cloudFacebookOpen source
Transcript: English(auto-generated)
So our next speaker is Boxy Lee. Boxy is a master student at ETH Zurich, but currently he has exchange at TU Delft.
And he's one of the developers behind the Q-Tip project, which is an essential software toolbox for quantum simulations, including noisy and open quantum systems. And today, he's going to be talking about the outcome of his Google Summer of Code project in a talk titled, Simulating Noisey Quantum
Devices with Q-Tip. Hello, can you hear me? Good, yeah. Thanks for the introduction. So my name is Boxy. I am a Google Summer of Code student last year. And that's when I joined the Q-Tip community
for this project. So in this talk, I'm going to talk about a new module in Q-Tip that is going to help you simulate your quantum chips, your quantum system. Now, if you were here last year, you might already heard a talk about Q-Tip,
which was the general Q-Tip stuff given by Chenoweth. Now, in this talk, we'll focus on this new module. So I'll first still give a very brief introduction of Q-Tip, but only the very central part. Then we'll come into this new simulator. So to begin with this, today we have
a lot of different approaches that are trying to build us quantum computers. So we have superconducting system, quantum dots, or some photonic platforms, also ion traps. They are all different kind of platforms. But in your quantum chips, what you have in your system
is usually a very small quantum system that we treat them as qubits. Because everything here is quantum, that's why I want to use them, there's a lot of counterintuitive phenomena happening there. So one way of understanding your quantum system and study what is really happening in your chips
is by simulation. So Q-Tip, the name indicated the quantum toolbox in Python, is exactly this Python package that help you to understand your quantum system. We have a lot of different nice tools in our package,
ranging from some nice abstraction of quantum operators, we call it QObject, so we have a lot of transformation function, which can transform between, for example, Troy operator or super operator, which are commonly used in quantum information theory. On the other hand, we also have many predefined
quantum states that can help you to, for example, set up your quantum simulation. And we also have nice visualization tools, so like Bloch sphere or Wigner function used in optical system. So they help you have a closer look or more intuitive understand of your quantum system.
But those are very nice tools. We have many tons of them. Now, the central part that combine them and unite them together is actually the quantum dynamic solver of Q-Tip.
So, don't freak out, don't freak out. This is the only page with formulas. Now, what I want to say is that despite this eccentric behavior of quantum physics, we can still describe things with physical laws. So the Newton equation in the quantum world
will be the so-called Schrodinger equation. And basically means that if you gave your initial state and then gave something called the Hamiltonian, which basically determines the dynamic of system, and then you can actually calculate what kind of state am I having in the future.
Now, of course, this never going to tell you what exactly is the measurement result because we still have this uncertainty, but it can describe your state, your physical system in a statistical way. Now, this works only for perfect isolated system. But in reality, it's never the case.
So we're trying very hard to isolate our quantum system. We put it in vacuum chamber or we cool the temperature down to some millikelvin. But still, there's always that environment around. And this environment leads to something called decoherence. So if you store your qubits in some quantum memory
and you come back after a microsecond or millisecond, you marry it again, then probably you find out that the state changed. It dropped from some state one to state zero. So it means that your quantum system
actually talks to the environment. So this kind of dissipative behavior is captured by the so-called Lin-Blatt master equation. And the solver of this equation is the central part of Q-tip. So we also have a bunch of other solvers.
Some of them deal with a slightly different situation, like if you have some invariance in your system. But they are basically all designed and used for studying quantum dynamics. Based on all those solvers, a lot of physics phenomena can be studied,
like quantum optics, cavity QED, quantum optimal control, and also the topic today, quantum information processing. Now when we talk about quantum information processing, we usually use this circuit model. So Q-tip also have this very nice
quantum circuit representation where you can create a circuit, you can add gate to it. So we have a lot of predefined quantum gate. And we also allow you to define your gates, your customized gates, your own gates in a matrix form. So when you run the gates, you get the final state by matrix production.
But this part is not new. You might also ask that we already have many, many other softwares that are doing this quantum circuit simulation. So we have Qiskit, Project Q, and dozens of others. So what's the difference?
Now the difference here is that in Q-tip, we are going to simulate the circuit at the level of your physics dynamics control pulse. So we will first transfer the quantum circuit into the control pulse of a device, of a physics system, and then it simulates the physics dynamics.
So our simulation is running one level lower than the circuit model. So with this, I'll go to the second part. So noisy device simulation, this new module in Q-tip. Now imagine you have some quantum chip.
And usually the way you want to control your qubits is through some control pulse. So you either shine a laser on it, or you give it some microwave signal. So this kind of your quantum chip is represented in our simulator in a class called Processor.
So it has information like the number of qubits, the typical relaxation time, T1, T2, and also the most important, your control pulses. So the control pulses is actually the basic element in our simulation. So it's characterized by the Hamiltonian, which describes the interaction and the target qubits,
and also the pulse coefficients and the time sequence. So basically the last two, the last two here, describes what kind of shape your pulse is going to have. So when do I want to turn the pulse on, and does it have the rectangular shape, or triangular, or even a Gaussian shape?
So with this, you can define a device and add some pulse to it, like you should hear a short code block, you just have sigma Hamiltonian and act on qubit zero with some pulse shape, and then you click run, you run a state,
our simulator will tell you what the state looks like at some filter time T. So this is less interesting if we are really interested in the ideal case, because if we want to simulate ideal gate, then why don't just use the matrix? Now, this becomes interesting if we want to add noise.
So usually in those gate-based simulator, the way of simulating noise is, for example, through some dipolarizing channel, we assume that, okay, a small part of, a small part of, a small part of formation of my quantum system is lost after each gate.
Or we say that, okay, I apply some flip error with some probability P after each gate. But there's always an additional level of abstraction there, so you have to calculate which probability do I want to apply this error gate.
So in our case, because we are doing this simulation at the physics level, you don't need to worry this. So because we have an open system solver, it is quite natural to add like single qubit relaxation noise, but beyond that, you can define a lot of other kind of noise, like pulse shift noise,
where your pulse is suffered from some random amplitude noise, or maybe you have exponential tail, or for example, it can happen that your pulse is not very focused. So you're trying to address one qubit, but because the pulse is a little bit broadened, you address actually several neighboring qubits
at the same time. There's also this so-called leakage noise, where, so basically, we always imagine our qubits to be a two-level system. That's why I call it a bit. But in fact, even in a simple atom, there's infinite many energy levels. So we just pick two of them to use them as our qubit.
But if your control pulse is not perfect, which is usually the case, it's very likely that you can also excite your state to some third level that is not even captured in your qubit description.
So in our simulation, you can easily define or characterize those kind of noise by, for example, some ancillary level. So basically, your qubit circuit is still a qubit, but when we run a simulation, it actually runs on a three-level system. Now, with this pulse level control and noise,
you can basically characterize your chip. But the part that connects the quantum circuit and the physics, the physics dynamics, is what we call back-end and compiler. So this part is still under active development,
where we aim at create different back-end compilers for different common physics systems, like those, that are commonly used for quantum computing. So basically, what a back-end does, in our sense, is that you give it a parameter, a few parameters,
like number of qubits, or the frequency of my resonator, or the frequency of my ion trap, and then we construct the control hypotonians for you automatically. Okay, so yeah, basically, it's a simulator. Be careful, it's still a simulator, so there's no hardware, no hardware back-end.
We're just simulating different kind of system. Now, on the other hand, the compilers start from the quantum circuit and transfer, find the corresponding control pulse that realize this circuit. So with the help of those two, you can basically create some,
create, describe your quantum device with a few parameters, and then you can load some quantum circuits defined in Q-tip, for example, Q-tip circuit module, and then you add some noise to it, you run simulation, and you can see
how does this circuit perform on this certain device, maybe even with some additional noise. So in a more illustrative way, here is the figure for the workflow. So basically, what you can do is that you choose some predefined back-end and compiler, and you give your quantum circuit as input.
So the compiler will then transfer your circuit into the ideal control pulse of this certain device, and then the noise object will add noise to those control pulse. So you can have here, for example, phase pulse shape noise,
or some additional noisy signal. We then patch all those things together, create a fixed model around it, and send it to the Q-tip server. So the server will show you how is the system looks like as a function of time. So as an example, we have a simple
Deutsch-Jozze algorithm implemented on our tutorial page. So tutorial is in the form of Jupyter notebook. You can read the instructions, and also run the code by yourself at the same time. So we have a very simple Deutsch-Jozze circuit here, three qubits, and we find the control pulse
of this algorithm on one called spin-chain model. So each color here in this figure represents a different control Hamiltonian, basically a different control pulse, and those control pulse will realize the circuit. So those higher pulse is for S-naught,
and those one are for the C-naught gate. So in the notebook, you can find that we run the circuit and compare the result, these and without some additional noise. The summary, so this new module,
in this new module, we produce a structured framework that can help you to simulate your quantum device. So we offer this pulse level control interface, and with this noise, with this way of defining noise, you can actually simulate your device in a more way closer to physics.
So we will transfer the gate into the control pulse, also a noise to it, with the help of back-end and compiler, you can actually set up your device, the simulator of a device with a few lines of code. So there's a lot of potential use cases for this.
So for example, because we are now running a simulation, you can actually turn on and turn off noise. Means that I can compare the influence of different kind of noise. So in this way, you can actually determine, or at least study, get an intuition, what is actually the dominant noise in my system.
If you design a quantum algorithm, you can also give your quantum algorithm as an input to our system, and then you can see that how does the algorithm perform on a certain kind of device, or how is my algorithm sensitive to some certain kind of noise.
So in addition, you can also use it to, for example, test some noise mitigation scheme. So there's a paper from IBM, where they use this extrapolation to mitigate noise. Basically what they do is that they have a parameter that characterizes the strength of noise,
and they run their device, real physical device, for different noise strengths. And then they extrapolate back to find, okay, what does the result look like if I have no noise? So because the argument is basically at the level of Hamiltonian,
and this module will be useful to, for example, verification their results, or maybe even do some improvement. Now with this, I'll go to the end of my talk. So those are the developers for Q-tip. Because Q-tip is actually already eight or nine year old,
there has been different generations of developers. So those two are the original developer from Japan, and so they have nice paper published. So if you are using Q-tip for your research, please also cite us. And those are the current lead developers.
You can see that we have people from basically all around the world, from Europe, from Canada, from Japan. And we also have dozens of other contributors who contribute to the Q-tip project. So if you're interested in this project,
or in general in Q-tip, you are very welcome to visit our website. And we have tutorials in the form of Jupyter Notebooks. So there's also a few tutorials about this project. And you can find them on our tutorial webpage. Also have documentation for user guide and API.
And also, if you're interested in the code, welcome to go to our GitHub page. And if you find some bugs, or maybe even typos in documentation, you're very welcome to point this out to help us improve things. And also you can also contribute your own code and let it become part of Q-tip.
So another way, another very nice way of contributing and become one of the community is through the Go-Go Summer of Code. So this year we are participating again in Go-Go Summer of Code. So between May and August.
So if you are about to graduate in a few months, or you are going to have a very long holiday, you can, it's a very nice way to join the team. So you can find a few projects proposed on this page. A few more is to come. And you are also very welcome to bring our own project.
So what do you want to do with Q-tip, or what do you want to add to Q-tip? So because I am a student of last year, I very highly recommend it if you are interested in open software development. So even if you have zero experience,
it's also okay because you are going to be mentored by the Q-tip members, both from the coding side and from the physics side. So, and also Go-Go will give you a scholarship for a few months for our support. And so this is my blog of last year.
So where I wrote some of my, some of our ideas and what's the problem we're trying to solve. And also some of kind of our, a method we used. And at the very end, a small advertisement for myself. So I'm a master student that is about to graduate this summer and looking for PhD positions. So if any of you have some nice projects
and find my background might be helpful, please contact me. Okay, with this, I'll thank you for your attention. Thank you very much, yep.
Are there any questions? Hi, what format are the control pulses emitted in the backend of Q-tip? Is it like splines, frequency domain, time domain?
Sorry? The control pulses that the backend emits that are device-specific, what's the format or how are they represented? Is it like splines or frequency domain or? It's basically just as a figure I showed before, the control Hamiltonian form.
So we don't have, we don't yet have like a backend for ion trap design yet, it's still on development. But basically what it consists of is the Hamiltonian, corresponding Hamiltonian, the target pulse, and that will define, characterize your device. Okay, cool, thank you.
So you were talking about the different noises. What happens if in your gate, if you have some structure defect or surface defect, did you do such study? Like, will it modify or distort your output pulse?
It basically determines, so this part we are coming to the backend. So now we only have backend for a very limited range of devices, and I think those defect you mentioned
will be very small part in the device and can be maybe modified how the evolution is running backend. You can do that, but it will depend very highly on what kind of system it is, right? Okay, we got time for one more. I was wondering, this solving of a differential equation,
is this just cutting it up a very small time steps and just running through it, or is there something more clever happening? There are different approaches. So there is differential equation approach. You use something similar to roaring kuta, not exactly, and solve it.
And there's also the Monte Carlo approach. So you basically build different sample approaches with different kind of collapse operator, link-blatt operator, and then you take the average of different Monte Carlo trace. That's a typical way to do this
like in quantum optics and this field, yeah. Okay, so let's thank Boxy one more time. Thank you.