Writing Quantum Algorithms for QuEra Devices with Wolfram Mathematica

Wolfram Research and QuEra Computing announced a partnership to run quantum algorithms on Aquila, a 256-qubit neutral-atom device. The livestream showed how to write and simulate quantum code in Mathematica, with examples including Bell states and mapping optimization problems to the hardware.
Questions this video answers
November 2022.
256 qubits.
Rubidium-87.
~99.5%.
About 4 microseconds.
Chapters
Sam.
Terrific. Okay, just count us in. Let us know.
We are live.
Hello, everyone. Thank you for joining us. Today we are going to be announcing a new partnership between Wolfram Research and Quera Computing. My understanding is this is going to be a big step improving the practical applications and accessibility of quantum computing. So a lot to unpack there. By the way, we will be using some Mathematica notebooks in this little workshop and all of the workshop notebooks that we use, we're going to upload them to the permanent versions of this video once we're done. So if there's any particular little line of code that moves too fast for you, it's. It will be something that you'll be able to look through in more detail later. Although, of course, we'll try and be given it to you at a pace that'll work for you now as well. I'm joined today by Mods, who is manager of academic innovation support at Wolfram. Also, Nick, who is a senior research programmer for Wolfram, and we have Alexei, who is a senior research scientist at Quera and a visiting scientist at Harvard University, and Yuval, who is the CMO at Quera Computing. And without further ado, I'm going to hand this over to them and let them all explain what's going on and perhaps tell you a little more about themselves.
Excellent. Thank you, Noel. Like, you know, hello everyone. Like, you know, we are very excited in our first live stream, like, you know, on our partnership with Quera. What we are going to represent is the bleeding edge of the technology, software and hardware. So, like, you know, we are the software part, like, you know, that Quera team is the harder part. And you know, together, I'm sure, like, you know, we are going to have lots of fun and I think, like, you know, it's going to open new horizon to do like, you know, quantum computation. So our plan, like, you know, we are going to start with, you know, some quick overview of the hardware. Like, you know, when we talk about, like, you know, Quera hardware, what are we talking about? So you all will give a short presentation and then together, you know, with Quera team, we have a conversation like, you know, we are going to share like, you know, a Wolfram notebook and to get, we are going to have a conversation how we can model and how we can basically simulate that great hardware and communicate with that from a wall, from mathematical notebook. Handing over to you, Yuval, please.
Thank you very much, Mads, and thank you, Noah, for having us in this live stream. I'll spend the next few minutes presenting Quera and our computer and then turn it over to the PhDs. In terms of who's speaking from Quera today, my name is Yuval Boguer, I'm Chief Marketing Officer of Quera. I lead the company's sales and marketing efforts and before Quera, I was the CEO and Chief Marketing Officer of several frontier tech companies and Alexei Bolinsky, senior research scientist at Quera. Alexei is one of the first three hires at Quera. Helped build a technical team, led the development of our first quantum computer, Aquila. So he knows about Aquila essentially as much as anyone else. Alexei, thanks very much for being here.
Today.
About Quera in general, we built and we operate the world's only publicly accessible quantum computer based on neutral atoms. We believe that neutral atoms are the best way to quantum and we believe that Quera is the most advanced of the neutral atom vendors. Our machine called Aquila has been live on Amazon bracket since November of 2022. We're working on and believe we have a clear path towards what we consider the holy grail of quantum computing large scale error corrected device. So more on that in the future. One of the reasons we're able to do that is we have very close collaborations with Harvard and MIT and we're able to productize innovations done by Harvard, MIT and R people at record speed. Dozens of companies are using our machine either directly through Quera or through Amazon Braket and are publishing some amazing results both in simulation optimization and machine learning companies based in Boston. We have more than 40 scientists and engineers from Harvard, MIT and many other top tier institutions. If you look at the history of Quera, it's a history of breakthroughs. Company was started in 2019, spin out of Harvard and MIT. In 2021 we built our 256qubit machine and launched it on Amazon in 2022. And part of that is driven by some of the innovations done at Harvard Labs together with Quera scientists. Most recently we've demonstrated a new dynamic qubit shuttling architecture that allows us to move qubits while maintaining their coherence and that opens the door for more efficient error correction code for more efficient algorithms and also recently demonstrated 2 qubit gate fidelity with 99.5 fidelity. So again a crucial step towards error correction. The machine itself 256 entangled neutral atom qubits, highly coherent. So you can do both some amazing things given the number of qubits and the level of coherence that we can achieve there. It is a dual Mode architecture. We have analog computing today. I'll explain in a second what that is. And are working on universal gate based models. So you can have the best of both worlds. And we have a technology called field programmable Qubit Arrays. It's sort of a takeoff on an fpga. An FPGA is an electronic device that you could adjust its functionality in the field. And FPQA is an architecture that allows us to move the qubits, move the atoms and use that to encode a lot of the constraints and a lot of the other things that we want to encode programmatically. So we have to take fewer programming steps because we let the physics do some of the work for us. Just running quickly. How do neutral atom computers work? Well, they're basically three building blocks atoms. We use Rubidium 87 optical tweezers and what's called the Redbird bouquet. So we have a Rubidium 87 atom. That atom ends up being trapped in a laser beam essentially sometimes called an optical tweezer. And that atom could basically, here's a photo of that atom. And that atom could today exist in two states. You can think about them as 0 and 1. We sometimes call them ground and Rydberg. And one of the interesting things is that when the atom is in the Rydberg state, it appears to be much, much larger, thousand times larger than it is in the ground state. And obviously we can drive it, we can take it from ground to redbird, from redbird to ground. And the interesting thing, the reason that size is important is what happens when you put two of these atoms next to each other. If the two atoms are sufficiently far apart, they can both coexist at the ground or the Rydberg state. But if they're closer than than that, what happens is a phenomena called the Rydberg blockade, which basically prevents them from simultaneously being in that high energy Rydberg state. And we can use that to encode optimization problems. We'll talk about that. We'll see a lot of these demonstrations in today, today's webinar. One last word on analog and digital. In an analog mode, you're basically defining the time dependent Hamiltonian, the way the system evolves over time. And you can do that simultaneously on 256 qubits. Here's a photo of these 256 qubits organized in a 16 by 16 array. But we can also put them in other ways. Here's a map of the world. Or we can also move them before in the computation and soon during the computation. And that Gives us some amazing capabilities. And digital gaze space modes is what you know and love. Sort of gates that operate are one or two qubits. Digital mode is universal, you could do anything you want with it. Analog mode is more restricted, but then more powerful in certain applications. Specifically we've seen amazing results both in machine learning, both in classifying and as well as regression and predicting of data. We've seen amazing results in optimization and also in simulation. So just to wrap up before I hand it over back to Mads and the scientific team, there are three ways of working with Quera. You could work with us with our solutions team directly on building a proof of concept or figuring out an algorithm for you. You can access the machine either through BRAKET or what we call premium access, which gives you business class, service level agreements and most importantly, direct support from our scientists to accelerate your quantum program. And then we also see if instances where people want to buy or lease a computer, whether it's part of a national program or part of an HPC center integration. And we're happy to support that. So talk to me after the webinar and happy to help you navigate this and find the best solution for you. And with that, Matt, let me turn it over back to you.
Excellent, thank you, Yuval. So now let's see how we would understand like you know, these neutral atom system. So like, you know, Nick, he's gonna go ahead, share a screen and you know, as a scientist, like you know, for us the way that we understand like you know, an atom is, or any quantum system, like you know, Alexi, you know, if we know Hamiltonian, we know everything about that system, right? Like you know, and this is the Hamiltonian of like, you know, these neutral atoms. So let's go through this Hamiltonian and let's see how we can understand that. So Alexei, like you know, here we have three terms. What are those terms? And like you know, in, in simple terms how we can understand them.
So this is an approximation still, you know, doesn't include things like noise and other levels inside the atom. But this, this is a, you know, assuming everything is coherent and the abstractions hold, this is basically an equation that will describe the evolution of your quantum system coherently. And the user in this case is going to be able to program some terms on the simultaneous. So let us go through term by term what these things mean and how they are programmed. So maybe starting from, maybe the most important one from the back that pertains to this field, programmable qubit arrays, this term basically tells you through this VJK coefficient, which qubits interact with which other qubits and with what strength. Right? And this is a zz, what's called a ZZ interaction. And the strength of that interaction is proportional to a constant that has to do with the atom that we've chosen to use as our qubits, the C6 coefficient. And that is fixed oracle. But what is programmable by the user are these positions of the atoms. So they are these XJ XK vectors in 2D so that they're actually pairs of coordinates. And basically the, the strength of the interaction term for any pair of atoms is inversely proportional to the sixth power of the distance. And it is a, it's actually a fantastic way to program a quantum system because it's very visual. You can, you know, the user positions these atoms in a plane and you can visualize actually which atoms will be entangled with which atoms in the, through the next neighbor interaction, basically.
So like, you know, so then the first term is basically like, so like, you know, what we are discussing here is like, you know, a two dimensional lattice of atoms. And what we are saying is that like, you know, each of them, they can have a very specific position. So the limitation is that like, you know, the size is like, you know, about 74 to 75 micrometer, I think. Like, you know, that's the limiting size of like, you know, this rectangle for 256 atoms. And the minimum distance between them is basically, you know, four micrometer. These are the only constraints. So within this rectangle with the constraint of like, you know, they cannot be closer than like, you know, four micrometer, we can throw everything there and we can have, for example, a simple lattice, a simple configuration like this.
Yeah. So first of all, it doesn't have to be a lattice, doesn't have to be a regular pattern, like you said. As long as the constraints are satisfied, it can be kind of an arbitrary arrangement of atoms, which is nice because it gives a lot of degrees of freedom in encoding your problem of interest into the atom positions. We've probably covered how that is done. Specifically later one, one additional constraint that I'd like to add to what you mentioned. So there's a minimum distance to which you can bring next to each other. And that has to do with kind of fundamental limits on optical diffraction. Because the way that we bring these atoms together is we trap them in, in the foci of optical tweezers and then we need to bring those tweezers together and the optical interference between these tweezers limits how close you can get them. Another limitation that is not fundamental but, but is in practice there, because of the way that we set Aquila up, is that for large arrays, if you want to get to large number numbers of qubits, you have to kind of discretize this arbitrary pattern into rows. So if two atoms are you know, close, close to the same Y position, but not quite, we basically kind of force them to be in the same, the same Y coordinate because of the way those atoms are arranged by us according to the user request. So basically arrange them row by row. So each row is arranged, all the items in the particular row arrange simultaneously and then we go to the next row. And so that kind of puts an additional constraint on the space of possible geometries.
Okay, now given this geometry, so when we fix the geometry which is basically like, you know, the number of sides, like, you know, we can have like, you know, basically what Alex, you just explained is basically this, this like, this is a good visualization for that. So given this geometry, basically like, you know, let us assume the case that the geometry throughout the process is fixed. So it means like, you know, Nick, if you scroll up to that Hamiltonian term, it means like, you know, the interaction. So by setting our like, you know, sites location, we are fixing that interaction V, J, K. So those terms are fixed, which depends on basically the distance between like, you know, two atoms. Now the other option that we have are three other parameters that are basically rabbit drive, detuning and phase. So what are they? How you know, our users should understand those three parameters.
So first of all, all three of those pertain to the strength of the laser that is used. Sorry, they pertain to the basically the waveform that we apply on the laser to drive those atoms between the ground state where the atoms don't interact with each other at all and the rhythmic state where they interact with each other according to these VJK coefficients. So in addition to arranging the atoms, the user can control the coherent evolution of the atoms between this non interacting states and the interactive states. And it's basically a sinusoidal wave that you can control the amplitude, phase and frequency of.
Okay, and so like you know, in the most generic form we have like, you know, the subscript J for the location of like you know, rabbit drive, like you know, omega and phase phi and you know, detuning delta. In reality do we have, as a user, do I have this option to have different rabbit drive per site or all of my add ons, they are Going to experience the same RABB drive.
Yeah, so that's a good point. So in the Hamiltonian that's written down here, the Omega, the phase and the tuning have the subscript. However, currently in Aquila it is a global param. All of all three of those, they're global parameters. So this drive that takes the atoms between the non interacting and the interacting states is applied uniformly across all the atoms. One feature that we're working on in, working on towards putting into service is local control of the detunings. So that would be local control of frequencies through this delta J coefficient over there. Yeah, and that, that was going to open up a number of applications because you can think of that whole term as basically a cost function in some kind of optimization problem. And now you can have much many more degrees of freedom in defining that cost function by having local coefficients to it.
Okay, so let us start with a simple case like in Wolfram Mathematica we have a function Aquila Hamiltonian which takes basically four terms at this level. Remember sides omega, phi and delta. These are the terms that you have to specify. And this is the way that we understand that Hamiltonian on the top. So the sides are basically like, you know, a list of positions X and Y. I don't know, like Nick, let's go with the simplest case. Let's put one atom at the origin 0, 0 and then like, you know, we can, you know, for Omega we can go, I don't know, let's give a value. We would like to see some, you know, oscillation. I don't know, 1, 0, 0. So this is the case that we only have rabbit drive and nothing else. And this is the Hamiltonian for one single atom. This is the form, the usual form in bracket notation that we do. And the way that we understand it like, you know, in our framework is like this. So this Hamiltonian is basically responsible for the evolution of your atom. So we are going to evolve our system in a time basically frame using this Hamiltonian. The object that we have in our framework for evolution is quantum evolve. Okay, so you can evolve any quantum object. And here let us like, you know, evolve our quantum system, which is describe our quantum state. So we would say it's Hamiltonian. And then like, you know, for us, you know, we would like to specify time, for example from 0 to 1. And you see like, you know, this is what we see like, you know, now the result of this evolution is a state function whose amplitudes has time dependency. Okay, One thing that we can Basically extract out of this state is basically the population, which is the probabilities, the modulus square of like, you know, each of those terms. And let's look at that. You would see like, you know, a function that looks strange because again like, you know, those are the functions, they depend on time. And let us specify, I don't know, a specific time. For example, you know, the second option, Nick is saying that, you know, the time is zero point, you know, three microsecond. By the way, I forgot to mention like, you know, everything is in microscale. The sizes like you know, is micrometer and like, you know, the time here is microsecondition. And before one technical detail, Alexey, if I remember correctly, in the actual hardware, the time scale of our evolution is about 4 microseconds, right?
That's right.
Okay, so remember our users, you have absolute freedom at this level to set your time whatever you like. But when it comes to the actual hardware, keep that in mind like 4 microseconds. And now let's look at the probabilities at that point. Nick is showing you basically the very first, we can call it like, you know, the red day population. And let's increase the time. Maybe one second was not the best. Let's change that. Let's go to four.
So what are your units for frequency? I guess, are they megahertz or are they.
They are basically like, you know, we can understand it as megahertz or you can see as like, you know, rod per microsecond. Yes. So like, you know, they are, they are all megahertz. So basically the same convention that we have in the hardware, for example, maybe rabbit drive, you put it, you know, Nick, as one. Maybe if you put it as 10, we would see bare oscillations there. So let's put it at 10 and let's evolve our system for 4 microseconds and let's look at like, you know, the probability. So you see that that's a usual like, you know, famous rabioscylation is a textbook example that we have. Okay, of course, like, you know, this is the simplest case and as like, you know, Alexei mentioned, you can play around your four time dependence parameters. So you can give, I don't know, like, you know, time dependency to any of your parameters. For example, let's do as the next example without showing the simulation, let's understand like, you know, Alexei has a physics. What's going to happen if we give time dependency to detuning the same rabbit drive? Now if we give like you know, some time dependency to the tuning. What's going to be the effect? Like, you know, how would you understand that?
So it is important how fast or slow, slowly the detuning is changing relative to this dynamics that you see there. Of course, but one, one typical protocol that is maybe very easy to understand is if you start with a strong Rabi drive, but a large thing, so that your Rabi oscillations are actually not these resonant ones that you show here, but actually they're really fast, really small amplitude oscillations. Effectively they are, you know, it's a population oscillating around the ground state, right? So you start with a large negative detuning and your population is in the ground state with like these fast rapid oscillations. And then if you ramp this detuning through resonance to a large positive value, the system actually wants to be in the Rydberg state. So atoms want to be in this interacting state, but with fast, rapid, now rapid oscillations around the Rydberg state. Except that these interactions between them set by those VIJ coefficients by the arrangement of the atoms that the user requested, they prevent atoms that are next to each other from both being in the Rydberg state. And this protocol of basically sweeping the detuning through resonance from a trivial ground state where all the atoms just want to be in the ground state, to a non trivial many body ground state where all the atoms want to be in the Rydberg state, but they block each other, block neighbors, block each other from being there. That is a way of preparing what's called adiabatically, preparing many by the ground state of the system, which has only one excitation per edge of the graph that you're encoding effectively.
Excellent. So just to understand how we would model what Alexey explains, so let's do this step by step, right? Now the very first example that we showed you guys, you remember this site, was only one atom at the origin, like you see inside the ocular Hamiltonian, it was only one atom, okay? And those other terms like, you know, you can have any time dependency there. We want to move on to the case that like, you know, we have more than one atom. But before that let us consider the second example, still one atom. But let us consider the case that the tuning has this, you know, time dependency. So the amplitude is the same as strong as like, you know, rabbit drive. You see like, you know, the basically compare the blue line with the orange line. But time like, you know, the detuning, you know, oscillates and again, let's like, you know, drive our system like you know, quantum evolve of like you know, using this new Hamiltonian with this new drive just to show like, you know, this simple, you know, time dependency effect 4 micrometer. And let's look at the probability of the again, you know, the very first one which will be similar. Yes. So you see like you know the, the this time like you know the. That those like in their changes are basically due to the effect of you know, detuning. And of course here our detuning is like you know, a sign oscillation. The adiabatic case that you know, Alexei explains like you know, you go start from for example a negative value and slowly you ramp it up to a positive one, which is the next case that we want to study. So basically this is the simple case and I highly recommend the users it helps to play around these three parameters like rapid drive, detuning and phase to understand how they basically influence the behavior of each single atom. And of course the headache starts when you add the second one and more because that's the time that we have interaction between different atoms. Okay, so that's basically. Yes, like you know, omega, you know, what we usually call as rabbit drive delta detuning and you know, face. And by the way, like you know, one single note for the like you know, are you know, maybe technical but because we have the laser field here. Alexey, please correct me if I'm wrong. We are treating laser fields as classical system. We know that laser is truly quantum, but they are very strong in this modeling the Hamiltonian that we showed at the top, we are treating basically the light as a classical field which is a very good approximation. So just, just write Alex, like you know the.
That's. That's correct. It's a time dependent part in the Hamiltonian where, where basically you know, it's a, it's a drive term that has a time dependent amplitude, frequency and phase.
Okay, so let's move on to the case of like, you know, interaction, you know, between different atoms and I don't know, like shall. How many shall we consider three atoms? Two atoms, like you know, the rhythmic blockade. Like you know, are we okay with only two atoms? And like how would you like, you know Alexey, two atoms is good.
Do the two atom case because you can prepare. Okay that way.
Okay, let's consider two atoms. So for our Hamiltonian inside the site. So remember like now the case of two atoms and you know the term is basically now for the drive like you know, how would you like to set it.
The question is, there's many, you know, there's a lot of flexibility in how you force the system to coherently evolve. So you could try to do a. What's called a pipulse from, from the case where you have only. We have no excitation among the atoms and the state where one of the two atoms is excited. Right. Basically do a square pulse for the amplitude at zero. Detuning would be one way to prepare that state. The state of, you know, 0r +r0, a superposition state of the left atom having the excitation and the right atom having the excitation. Or you could prepare the same state by using the adiabatic protocol we discussed before, where you start with a large negative detuning maximum drive and then you sweep through resonance to a large positive detuning. So both of those will actually give you the same final.
Okay, so let's like, you know, one other function that we have like in our framework is called, you know, I could have drive. And for simplicity, let's go with like, you know, automatic drive that you mentioned. For example, like, you know, the very first time is the times. Like, you know, we can give it as a list. For example, we can start from zero and then, I don't know, like, you know, so time is the first one, then is, you know, omega. Basically rabbit drive. And then, yes, the tuning and then face. So time, let's go 0, 1, 3, 4. Are they good? And then let's say that like, you know, we start, you know, for the Rabbit, you know, 0, 15, 15 and 0. We basically go through this lamp and detuning. Let us start with negative 30, like, you know, the second one, negative 30. And then we jump to positive 30.
So it's not going to jump, it's going to be a sweep from the second to the third point, right?
Yes. And then, you know, we, we can plot it. So the last one, the two phase, let's set it as zero. Okay. So Nick, if you want, you can plot them for between like, you know, the, the 0 and 4 microseconds. Let everybody see like, you know, how they look like. This is what we are discussing. So they look. Oh, you drive. Yes. Yeah, that, that's what we are doing here.
That looks right.
Okay, this is what we like, you know, that fancy term of like, you know, adiabatic, you know, evolution. It's basically setting something like this. And before doing the actual. Basically, let's see like, you know, if we can understand the physics before doing Any simulation. Alexey, what's going to happen to these two add ons? Both of them? We start from grounded state. Then what's going to be the contribution of login? So the last term is zero. So phase is zero. So what's going to be the contribution of rabbit drive and also the tuning here?
Right, so basically the drive is going to want to put the two atoms into the Rydberg state from the groundbreak state. However, when you're detuning as large negative, which is where you start, it's, it's a far detuned Rabi oscillation. So the population is basically stuck around the ground state. Right. And as you sweep through resonance, you actually go to positive detuning where you know, it's energetically favorable for the entire system, which includes, you know, for the entire driven system, which includes essentially the energy of the light and the, the atoms. It's more favorable for that system to have Rydberg excitations in the two atoms. However, there's an energy penalty for having both of them in the Rydberg state when they're close together. And that penalty is effectively that VIJ term. And so because you have placed your atoms that. I forgot what distance you used.
But now Nick, like you know, now that was the second question we wanted to ask you, Alexei. Nick is setting like, you know, the distance as four micrometer. So what, what like that's the minimum distance. So what is the distance that like, you know, you would like to set the second atom? Alexey?
Yeah, so at that distance, basically the, the atoms are close enough that the energy penalty is much larger than the, than the, and than the energy gain in having both atoms in the Rydberg state. So basically it does want to have at least one, but two or two atoms in the Rydberg state are too expensive in terms of energy at this distance. And so you will indeed see in the final state only one of the two items excited. Okay, which one? You know, there's no preference and therefore you're actually going to end up being in a superposition state of those. Okay, possibilities.
Okay, so let's explore that. So basically like, you know, we set it, you know, you see the first term in Oclo Hamiltonian is two positions that we set there. I think like, you know, the T should be the symbol T maybe Nick. Like, you know, and then we see the drive is there basically the, the one that you see in the line, you know, 422. So that's how basically we evolve our system now. Like, you know what we can do we can look directly into the probabilities at a given time. So that, that's one way of like, you know, looking that, for example, like, you know, at time four, we can look at the probabilities. And here if we look at the probability, we have basically four terms. So which of these terms are interesting? Like, you know, when we talk about, like, you know, that superposition that you mentioned, Alexey, like, shall we look into each of these bit strings, as we usually call them, or a summation of them? Like, you know, how we should go after our computation.
Right, well, so these are actually amplitudes, right?
These are the probability of each bit string. We can also show like, you know, the amplitudes. We're going to look at the amplitudes. So these are basically the.
Well, yeah, I, I think it's important to, to look at the, you know, the full, the amplitudes first because this tells you that there's actually, you know, this is not a classical probability distribution. This is actually what you're creating is superposition state. And you can look at the amplitudes. The first one is basically zero and the, the last one is basically zero. But the second and the third give you this superposition effectively of 01 and 1 0. So that's a Bell state.
So it means like, you know, for that very specific case, you know, we can look at basically the summation of, you know, those two specific states. So what Nick is doing, like, you know, let's go, I guess, like, you know, that state is phi plus Nick. So you should look at the. Was it five plus? Yes, it's five plus.
Plus.
No, maybe now I'm forgetting. Maybe it's. Is it psi plus? Now I don't remember, like, you know, these.
The names of different Bell states in mathematics.
Yeah, so we have them. So that. Now plus. Yes. Okay, five minus five plus. So we have them. By the way, some of our users, they may say, oh, why you don't show us the usual bracket notation? Because I understand that bracket notation, the main reason that we show you that summary box that originally, when you evaluate those codes, why you see that summary box, because that quantum object, it contains much more basically information compared to that bracket notation that you have. So that bracket notation is not the most generic way of representing that quantum object. That's why we show you the summary box. But of course, if you feel more comfortable, it's simply a traditional representation. So what the short key that Nick is using is, you know, command shift T, which is basically literally traditional like, you know, representation of like, you know, that state. And now Nick is bravely here. He wants to show like, you know, the random pure state of like, you know, 10 atoms. And like, you know, you see here like, you know, when you go to larger. Now let's show the traditional form. I'm not sure if it's going to, you know, render it like, you know. So you see that broken notation? Like, you see, you don't get anything out of that. Okay, so that's one thing. Like, you know, when it comes to a real computation, I know, like when you are learning these things, those brackets, notations, they might be useful. But when it comes like, you know, to higher level, one has to be more careful. Now why like, you know, we wanted to show you like, you know, that psi plus state. Now Nick, use, if you scroll down. So Alex said that, you know, the interesting term is get the amplitudes that correspond to that cycle and extract it out of your state and look at like, you know, the probability because that, that's where we have the superposition. So in terms of logging on quantum, it means now I have to project my big quantum state into this subspace which is basically psi plus. And now like, you know, Nick, you know, what you can do is like, you know, let's just like, you know, get, you do that projection. The traditional way is going to be the dagger of that quantum state acts on the original state at a given time. So remember, like, you know, if you don't specify time like, you know, you would get a symbolic number which is an interpolation depends on time. So let's go with, you know, quantum state plus instead of PSI1, put it as quantum. Say. Yeah, that was. So that's basically what we are doing there. Okay, which is trivial. Now Nick, do psi plus on psi one the last, last line that you had. Yes. Okay. And now this is the term at a given time. This is the amplitude. Of course, you know, we can ask for, you know, modulus square of that one to get the probability. You know, what Nick is showing you is like basically this is the textbook representation that you guys are more familiar with, right? Like, you know, you basically take the conjugate transpose of that one and then like, you know, apply to that estate and you project it to that bell state. Okay? So that's the amplitude that like, you know, time at a specific time. And since we are interested in probability, let's take the absolute square of that term. Absolute square of large 441.
I'm just going to take a note.
Or norm, which is basically like, you know, that, that, that's a different way of doing that. And let's look at the actual scholar. Let's just look at the number which is the, the number that you see, as you know, Alexi mentioned, it's very close to one, which is what we expected. Now let's plot it for the whole time from 0 to 4. Let's see what happens to that, that number. So now you should take the term where was it like the what line you have it and then set for. So it's going to be like, you know, set four as your time.
And then we want the actual dependency on time, right?
Yes, we want to see like, you know, that, like, you know, that projection as a. Yes. As a function of time from 0 to 4.
I'll do it like this.
Yes.
Good.
It should be much faster than this. But let's see now it's doing some grinding as we are waiting for that. So, and that's, you know, the plot that we got. Now how we should understand it. Alex, like, you know that that's exactly what you explained, right. Like you know, it, you know, he, you remember guys, he said, look at the second and the third amplitude and they're almost one. It means we have the Bell state. Look at the evolution slowly, like, you know, we reach the probability of one for that bell state.
Right.
And you can see this adiabatic transition basically from basically a state that's orthogonal to it to this bell state as you go through resonance. And the resonance is basically in the middle of this time evolution 2. That's where you are. It's actually roughly 50, 50. And you see the little wiggles that have to do with these off resonant Rabi oscillations.
Yes, yes.
Adiabatic protocol in action. And one thing maybe to kind of lead a little bit into what you can do with Aquila in terms of variational algorithms, is we picked a protocol kind of intuitively we picked the starting detuning and the final detuning and the rate of the sweep. And already we got pretty good, you know, final probability of being in the correct bell state. But of course you can now take those values and treat them as variational parameters and optimize this overlap with the Bell state that you're trying to prepare. And that, that is, you know, the great flexibility in defining the, the waveforms is something that lends itself wealth to this kind of optimistic.
So basically, like, you know, what, what, what Alex is saying here is that like, look, you could have any time dependency for Your functionalities, you know, which one is going to be like, you know, useful for a specific goal. It depends on the problem. Now like, you know, let me like, you know, again, like, you know, for those of you who join us, like, you know, what you see here is basically like, you know, quantum framework and you know, we had a few functionalities such as, you know, Aquila, Hamiltonian, Aquila Drive. These are, you know, some new functionalities to help you to do coding easier for Aquila. At the very fundamental level, the way that we model this system in Wolfram quantum framework is we see them as a time evolution. You set your Hamiltonian, you specify the time dependency of your rabbit drop, detuning and phase and you let your system evolve. Like how big you can do it for the system. It depends on the memory of your hardware. But basically that's your main limitation. And this is like, you know, it's basically any system that evolves those Hamiltonian, it is applicable now what we can do with this. So what we can do is one interesting application would be I can like, you know, set his sit, set this Hamiltonian. I can get, you know, this result and then through AWS I can send it to our actual hardware. I can communicate with Aquila. So the only thing that like, you know, I need to send through AWS is what are the position of my sites, what are those three parameters? Time dependent parameters, basically like, you know, the time series that we have for rabbit drive, detuning and phase. And I can get the result from a hardware. So here we are going to do some sort of cheating because if you want to send the query directly to Aquila, it's going to take some time. I don't know, like, you know, what's the weight? Like Alexi, what's the wait line? Like, you know, wait time right now, like, you know, if we send a query, is it going to be fast? Is it going to be long?
Well, so today is Monday. So Aquila is not currently available on the AWS service. It's available every week for 48 hours from Tuesday through Thursday.
Okay.
But the queue currently is not, is not that long. So. Okay, I think, you know, if you submit it now, you'll probably get your results soon after the beginning of the window tomorrow.
Okay, good to know.
If you were to submit it on Wednesday, actually if you had this seminar on Wednesday, you would get your results more or less.
Okay, so let's, let's do like this part, like, you know, it's a little bit Cheating. So we already sent like, you know, one query to Aquila. We got the result from your hardware. So we can show you like, you know, Nick, show the, like, you know, amplitude phase and the tuning that we sent and the results. So, you know, we did like, you know, the case of like, you know, how many. We had nine sites, basically nine atoms. And I guess somewhere there you also have like, you know, Nick, can you show like, you know, the rabbit drive that we send there? So I think like, you know, it's in the notebook somewhere under AWS section. I remember, like, you know, we also had a picture for the rabbit drive just for the sake of. Yes, so that's basically the job, like, if somebody wants to understand. Look guys, this is the job that you're sending to the hardware. Like basically like, you know, it has three pieces. One piece is basically you are specifying the sites. This time, like, you know, to go through like, you know, aws, you have to convert them into micrometer. Okay. Which is easy. Just add, you know, 10 to negative six in front of all your numbers. The, the amplitudes. This sound like, you know, you have to basically, you know, convert them into hertz. So that's why like, you know, you see those numbers. But anyhow, this is, you know, the job that we sent. And Nick, do you have any visualization for that? I guess somewhere in that notebook we also had a visualization just to see the actual. Or maybe do we have it or.
Like the actual comparison?
Yes, like the rabbit. No, not the comparison, the rabbit drive. Like, you know, what does. I guess like, you know, we went from.
Let's see.
Yeah, yeah, that one. So this is basically the job that we sent. Okay. Which is basically again, textbook example. And the data set that Nick is showing you, that's the result that we got from the actual hardware. And we need to understand like, you know, how we should interpret that. Let's look at like, you know, the measurement results. So Alexey, like, you know, in the measurement results, you guys return pre sequence and post sequence. As a user, how should I understand them?
So you had a very nice illustration earlier in your notebook where we had atoms that were initially loaded in the sites and then the sorting. Yeah. So. Yes. So when the atoms are loaded into this optical tweezers that are whose positions are defined by the user. Actually only 50% of the of those sites are loaded. And what we do under the hood is move the atoms to the right locations so that the pattern is as the user requested it. Okay. However that can, that process can have finite error. And what we give our users is the result of that sorting step. So we basically tell the users which of the sites that they requested to be filled were indeed filled and which ones had a defect in it. So this is a good illustration of, you know, three sites in that array. And so that would be turned into, you know, a list of ones, except for zeros being at the indices corresponding to these empty sites. And that would be. That would be a pre result. So pre sequence, okay.
Okay, got it, got it.
Pulse post sequence would be then the result of the actual computation. Okay, the. Where zero would correspond to the atom being in the Rydberg state and the one would correspond to that being in the ground. Or it might be the other way around. I don't know what the convention that you guys adopted in Mathematica, but yeah.
Now my question for you is this. Does it mean, like, you know, whenever I want to calculate, like, you know, the probabilities and, you know, from the histogram and et cetera, should I select only the pre sequence that all of them are one, or like, is that the meaning of, like, you know, what you just explained to me? Like, you know, for example, yeah, if I want to.
It gives you the opportunity to do that post selection. Like, for example, if you really care that the initialization is perfect before you consider the results, then yes, you can basically throw away all shots where the initial sorting or this pre sequence has any zeros in it or any zeros where you didn't want it to be a zero. So it depends on what you're doing. In some cases, you might be tolerant to defects in your battery, and in some cases, you might have even created, you know, 10 parallel experiments in the, in this region that's available to you. For example, with a pair of atoms where we were doing bell state preparation, right? You have more than enough space to create, you know, 16 pairs in there, and you might want to keep the results for only those pairs that were correctly initialized and throw away the results, okay, that were not correctly initialized. So it's up to you how you process that data, but you have information available to make the decisions.
Got it. So basically, like, you know, as a theorist, if I want to make a comparison, like, you know, with my theory out of, like, you know, by the way, like, you know, in that job, you know, you can specify the number of, like, you know, basically shots that you can, like, you know, send to Aquila drive Aquila device. You know, what we said was a thousand. And I think like you know, the, the cost also depends on the number of shots, if I remember that correctly. But anyhow, as a theory. So my approach would be I'm gonna basically, if I want to calculate the probabilities, I need to basically remove those 39 that the pre sequence is not what I expected. But the rest which is more than like, you know, 960. These are the one that they can tell me exactly. Like, you know, okay, like you know, I can do whatever I want, you know, using like, you know, that data. Okay, so let's basically post select those that like, you know, they look good and let's look at like, I don't know, the histogram of like you know, 600961 and let's look at the histogram. So what we are gonna see is. So that maybe not the best visualization. Let's do the counts and then bar chart. Yeah, that, that's fair. So that's basically. And you know, let's see. Chart label. Now I guess you have to rotate the chart label because they are very large that you know.
Yeah.
Or maybe show the top 10 maybe from the counts. Let's just do the top 10.
I'm gonna cheat.
Okay. Yeah, you can rotate 90 degree the. Okay, you see for example, like you know, the results that we got for that, you know, nine sites. As you can see, like, you know, this is, this is for example a very beautiful result that like, you know, for the probability of it bit string. And of course you can do all the comparison like you know, with the, with the theory. Like you know, this, this exactly the same result that can become computed from the theory. So and one thing I can tell from at least you know, the theory point of view. It's so beautiful because look, you know, I can do a theory. It's literally as a theorist, I am doing an actual quantum experiment. It's like it's a prediction and then I'm going to send it and then I'm going to get a result. So basically we didn't show you this step of you know, sending to the actual hardware, but we practically perform a quantum experiment. Like you know, we did the theory part and this is the result that we can get from our device. And then you can do whatever you want on the top of that in terms of noise analysis compare like you know, any like, you know, test you can do on the top of these statistics. There is zoo of like, you know, possibility that one can extract explore here. And it's just the beginning. Remember like, you know, you have the option go to a dimension of you know, 2 to 256 and like, you know, good luck if you want to do those simulations on your like, you know, actual like, you know, the hardwares that we have here, I mean classical computation, it's gonna be very challenging, if not impossible. So it opens up like, you know, a zoo of great possibilities to explore like, you know, quantum world. And one of them I know, like, you know, we have very lim time, but it would be a pity if we don't mention that. Look, you know, these simulations, time evolutions, they have some very interesting application. And one of the examples that Quera team, they have very nicely explored in their, you know, white paper that was published like, you know, a couple of months ago was the application of this system for a very important set of problems are called maximum independent sets problem. Okay, so Nick, let's, you know, you know, it would be a pity if we don't mention that. Let's very briefly, you know, comment on that. And together with Alexey, at least like, you know, we can show the concept of like, you know, what we are talking about when we like, you know, talk about like, you know, maximum independent, like, you know, set problem. So I guess, you know, this time let's bring the whole computation that we had done like, you know, we don't have that much. So the concept here is this. Let's look at this graph. So we have a graph here and the idea is that, okay, pick vertexes, the maximum number of vertexes that you can pick out of this graph that there is no edge connection between them. Mathematically it's a very interesting problem. But you would be amazed how much application this simple problem has in the real world. Alexey, would you like to comment on some of the application of this simple problem?
Well, so this is actually an NP hard problem and you know, the decision associated decision problem is in the NP complete class, which means there's a vast, vast number of problems that can be mapped onto it. Okay. But in particular for Aquila, there are some geometric constraints to the kinds of graphs that you could work with to find the maximum independent set. And because of this geometric constraints, it's actually all kinds of geometric problems fit very nicely. So things like finding the optimal set of street corners where you want to put your Starbucks in a way that you don't have more than one Starbucks at neighboring corners. And this kinds of problems from the class of traveling salesmen or optimization of these are all combinatorial optimization problems. We actually have a white Paper that describes a number of such problems in social networks and in finance, like hedge portfolio optimization, in logistics and so on.
And by the way, the animation that you see here is that in mathematical we have a classical algorithm to out figure find which is basically using the function that you see here, find independent vertex set. And you can look at all the solutions. For example, for this very specific graph that Nick is showing you here, we are looking for like, you know, those, you know, potential solutions to see like you know, okay, how, how we can find them. And the way that like you know, we model it, you know, in this quantum system is this is basically your site location. So literally the position of these vertexes, we are going to treat them as the position of your atoms as Alexey mentioned. So here it comes some limitation like how you would basically model it because you have some limitation in terms of the actual position. But then when it comes to setting those treat parameters, rabbit drive, detuning and phase, what is the best setup? Alexey here like you know, shall we go with adiabatic drive? And if so, why? This is the right approach to solve this problem.
We have found that adiabatic works pretty well among the different algorithms that you can, you can apply. Now the parameters of this adiabatic drive can be, you know, further optimized through variational approaches. But even the kind of the naive one that we started with with a simple sweep will actually get you a pretty good answer for a small problem like the one you're showing here. Okay, why don't you go with that?
Okay, so like you know, then like, you know, Nick, let's, let's, let's go with that. So let's see like you know, let's set like you know the, let's get the vertex positions. This is the rabbit drive that we are going to use. Okay, so like remember guys, like you know, Aquila drive is your favorite function whenever you want to set your three terms, time, rabbit drive, detuning and phase. And we are setting like you know, the location like here, you know, we are saying that like by the way everything is in a, like you know, in a sphere of like, you know, in a circle of one. And we are multiplying that by five because we would like to basically have Nick can show you the actual positions to that like you know, where we set them. Yes, this is the actual position of like you know, those vertexes. Maybe least plot is a pair and yeah, and then yeah, that's the graph representation. So that's how we set our hamiltonian okay, so this is the Hamiltonian. We set the Hamiltonian. Let's evolve our system using this Hamiltonian, the Rabi, the everything. Like you know, the adiabatic drive, you know, Nick showed you. On the top we have the sides. So let's just evolve this system.
Actually takes more time to construct the Hamiltonian than evolve it for some specific reasons.
Okay, and then what we can do. So this is our Hamiltonian. And by the way, like you know, one, one comment since you know, Nick mentioned here, like you know, the performance. We are doing everything in the most naive way. Like you know, we are doing summation, etc. There are much better way of like, you know, doing these things in Mathematica. But this is the simplest way. So we have the wave function and let's look at the probabilities like you know, basically let's look at the Rydberg population per site. So which means like you know, let's consider all the cases that specific site has like, you know, the one. So that's how we can go after, you know, Rydberg population. And let's just, you know, plot them in time. And like, you know, that's what you get. Now as you can see here, for example, like you know, couple of them like you know, with the maximum probabilities. So these are the one that has highest probability of, you know, observations. I don't know, maybe. Nick, do you want to plot the bar chart at the very end? Let's look at the very last one. Let's see like, you know, how does it look like for the very end?
Hold on. What is. Time?
Final is 2.2, if I remember that correctly. Yes, 2.2 microseconds. And like, you know, if we do that, I think like, you know, the six, five like you know, they have the highest probability of like, you know, getting result. By the way, let me just be like, you know, honest comment here. It doesn't mean you would be able to get the collection of all maximum sets. Okay? Like you know, if you play around like, you know, with your parameters, like you know, if you change like you know, the rabbit drive and et cetera, like you know, you might get like, you know, different results. But like, you know, here you see like, you know, for example, like you know, one, four look at like you know, the answers. They are the one with the largest probabilities. But like, you know, from the quantum approach we would be never able to get the result. 3. Okay, so it would be like, you know, a pity. But again like you know, we managed to Get a collection of them. And by the way, this is the simplest approach. Like, you know, you can play with the rabbit drive. You have the freedom of like, you know, changing them and then like, you know, whatever works better. You can send it basically to your actual hardware. One more time, Nick, if you scroll up, because there are a couple of questions like you know, the, you know, our users need better clarification. Look, the graph that you see here, each of the, basically the vertexes that you see, this is going to be the position of your add on. So literally what we are doing is like, you know, we are, it's like reflecting this exactly into a configuration that we have in Aquila. And then here if all of them like you know, just, just a scaling, we did a scaling and like, you know, that is scaling like, you know, which was very similar to what we did with, you know, you guys did it in your white paper. You know, we go with the factor of, you know, five micrometer, multiplying all of them and that's how we set the position and then the rabbit drive. So that's one of the many. And then again like, you know, to all of our users, both hardware and software, it's just the beginning of like, you know, this whole story of like, you know, doing quantum computation with these hardware. It's like uncharted territories. It's just open, as I said, a new horizon and, and users by all means just dive in and explore. I'm sure like, you know, you will be able to find like, you know, lots of new things that we had no clue that you can do. Lots of interesting computation using like, you know, these systems. We are almost out of time. So Alexey, like you know, you all, any final comments, any comment about the simulation that we just showed to our users?
Thank you ma'. Am. I think as you mentioned, we just tracked, scratched. I'm sorry, the surface of what's going on here. There is the white paper that you mentioned and a beautiful mathematical notebook that goes with it, that goes through five examples I believe, from simple to very sophisticated. The Aquaria team is happy to answer any questions about how to use this for machine learning, for optimization, for simulation. There's also a Slack channel that you're welcome to join for quera questions and we look forward to seeing you in the Hilbert space.
Alex, you know, any final comment? Like you know, anything you would like to add here?
A good way to visualize results is actually plot the probability distribution of bit strings rather than parsite very good points. And you have One above for the regular array. If you scroll up to it, Nick.
Show that you know.
Yes, go, go up before the, before.
This, you know, example when we were.
Doing the regular array. So you see that the highest probability bit string over here is actually this ordered phase, 010101001. That is actually the maximum independent set on the square array of atoms that you programmed for this example. That is indeed. So you found with high probability the maximum independent set. And for those who are physicists out there, that phase is the antiferromagnetic ground state of the system.
Very good point.
So this kind of illustrates both use cases that you can work work on on Aquila. That's kind of like combinatorial optimizations and the kind of ground states of many body systems. They are kind of two sides of the same kind of hardware capabilities that we offer.
Yep. So like, you know, Nick, if you want to do the probability, I think the probability is almost close to one.
Like.
Yes, but just looking at just comparable counts. Yeah, let's normalize that by total and like wrap it by a number. And so you see like, you know, that's the probability of like, you know, getting the right answer. So basically, even the previous example that we are showing you, because it was a simple lattice example, it was actually finding the maximum independent set. That's right. So as you all said, both teams, we are looking forward to see more application on these devices. We are just at the beginning of a big revolution and we would love to see the contribution of both community of users, Aquila and Wolfram Mathematica. Please reach out to us like you know, you know how to find us. Quantumoform.com and both teams, we are looking forward to have more interaction with our users. Thank you Alexey. Thank you, Nick. Like Noah, everyone, like you all, it was great. I'm very happy about this partnership and as I said, you will hear from us much more.
Thank you so much, Mads. Thank you, Nick.
Thank you guys.
Thanks guys.
More from Guy

Cheryl Strauss Einhorn | The Human Edge: Smarter Decisions in the Age of AI | Talks at Google

Rachel Glennerster | Innovation and the Center for Global Development | Talks at Google

Rebecca Winthrop | Rethinking the Purpose of Education in the Age of AI | Talks at Google

Dr. Robert Wachter | A Giant Leap: How AI Is Transforming Healthcare... | Talks at Google






