The Stack Overflow Podcast

The nature of simulating nature: A Q&A with IBM Quantum researcher Dr. Jamie Garcia

Episode Summary

Dr. Jeannette (Jamie) Garcia, Senior Research Manager of Quantum Applications and Software at IBM Quantum, tells Ryan about IBM’s 433-qubit quantum computer and the real-life applications of quantum computing today.

Episode Notes

A chemist by training, Jamie serves as Senior Research Manager of Quantum Applications and Software at IBM Quantum, which offers cloud access to advanced quantum computers capable of solving highly complex, highly interconnective, and dynamic problems.

Learn about the superconducting qubits IBM Quantum uses to program quantum computers. (Need to back up a bit? Learn what a qubit is.)

Jamie explains how a heavy hex architecture allows IBM to limit crosstalk between qubits to ensure coherence times long enough to complete practical calculations within hours, not years.

IBM Quantum’s Qiskit Runtime allows users to optimize workloads and efficiently execute them on quantum systems at scale. 

As you might expect, Jamie and her colleagues are already thinking hard about the intersection of quantum and AI. Learn about System Two, IBM’s next-generation quantum system.

Connect with Jamie on LinkedIn or Twitter.

Congrats are in order for Stellar Question badge winner Dmitry z for asking How can I use environment variables in docker-compose?.

Episode Transcription

[intro music plays]

Ryan Donovan Hello, and welcome to the Stack Overflow Podcast, a place to talk all things software and technology. I'm Ryan Donovan, and I'm speaking today with Dr. Jamie Garcia. She's the Senior Manager of Applications and Application Software at IBM Quantum. We're going to talk all about their big 433 qubit quantum computer and how it's going to change reality. So, good to talk to you today, Jamie. 

Jamie Garcia Hello! Great to talk to you as well, Ryan. 

RD So if you could, tell us a little bit about yourself and how you got into quantum computing. 

JG Okay, sure! So I am actually a chemist by training, so I hold a PhD in chemistry and did basically lab work. I came to IBM because I was very interested in some of the material science work that was going on there at the time and started doing some research in that space. And during that time, including in my PhD but also while at IBM, I got to know our computational chemists quite well. I think most experimentalists will tell you if you get a weird outcome from an experiment, one of the first things you need to do is try to figure out why, and that involves a lot of the theory. And so I did a lot of running down the hallway to talk to my computational colleagues to help elucidate what was going on in my flask that I couldn't actually see. So as a part of that process I got very interested in computation as a whole and the simulation of nature and trying to use computation towards that end. And I think just from personal experience I realized that there were some real challenges with using classical computers for that. There were certain reactions, for example, that we just couldn't look at. I would ask my colleagues and they would tell me it was impossible and I was like, “Why?” 

RD Like what? Can you give me an example?

JG Yeah. Actually for me they were surprising examples, but even small molecules that were really reactive. So you think of radicals for example that you hear about that cause all sorts of havoc in our bodies, but also it turns out in batteries, too, which I was studying at the time. And the reaction was so high energy and there were so many different things that had to happen with the chemistry that classical computers couldn't model it, even though they were small molecules, so it's just O2 for example size. Anyway, when I was in Yorktown Heights one day walking down the hallway, I saw one of my colleagues had a poster and it had chemistry on it, which caught my eye because you don't see that all that often at IBM. And it turns out that he was using quantum computers to study a certain property of a molecule and it stopped me in my tracks and I realized this is a whole new tool for chemistry. And so now we've expanded beyond chemistry, obviously. We're looking at all sorts of different things, but I think that was what got me hooked and interested from the very beginning.

RD We've talked to a few folks in quantum computing, but I think it's valuable to kind of get the basics here. What exactly is a qubit?

JG Yeah, so a qubit is essentially our analog to a classical bit. We use at IBM superconducting qubits. So essentially these have to be cooled down to 15 millikelvin. So you may have seen photos of our big dilution refrigerators that cool our qubits down to that level. But they're made out of superconducting materials and what you're doing when you're programming a qubit is you're taking the material’s properties of those superconductors, and having fixed energy states you're able to move electrons into different energy states, and then that basically allows you to program a quantum computer. One of the biggest challenges is keeping them in those states, and I have a feeling we'll talk about that in more detail. 

RD Yeah, yeah. I mean, especially since your material science background. That seems like that's a big part of the ball game. 

JG Yeah. But fundamentally it's a kind of different beast too, because we're now using and leveraging quantum mechanics to really program the qubits and the quantum computers and be able to perform algorithms on them. So it has a different flavor to it than a classical bit. In fact, you can use quantum mechanical properties such as superposition and entanglement, which are new knobs to turn when you're thinking about algorithms. And so it's in many ways and in certain instances complimentary to classical devices, but it really is a whole new thing and a new area to explore. 

RD So talking about the qubits, I heard that qubits aren’t exactly stable; that you have them supercooled and you're trying to keep them in this particular state. You need a lot of redundancy and error correction to produce that one qubit. 

JG So generally speaking what we're doing when we're programming a quantum computer is we're taking the qubits that are laid out on a chip –so they'll be put on a chip in a certain array– and you'll have whatever number it is of that. So right now we're still in single-chip tech regime when we're talking about 433 qubits or less, 27 qubits or 5 qubits. What that is is it's all on one chip. And so when you program them, what you're doing, and a lot of times we leverage two qubit gates where you need to entangle two qubits together. So you kind of set it up and map your circuit onto the qubits in a very specific way in order to get out an answer that makes sense. Now, the stability piece that you're referring to, qubits are inherently sensitive. We have to cool the qubits that we use down to 15 millikelvin because of exactly what you said– you're trying to basically hold the qubit in this state for as long as possible so you can run the calculation that you need to run. Basically you have enough time to perform the gate operations that you need for your circuit. So they're susceptible to noise. Sometimes we know where that noise comes from and sometimes we don't. When we think about how we put the qubits and arrange them on the chip, we're doing it in a way that minimizes noise most of the time. So we use what's called a heavy hex architecture where essentially what that does is limit the crosstalk between qubits so that you minimize the noise so that you're able to have as long coherence times as possible to be able to run the circuits that you want so that you can do a practical calculation, meaning within hours, not in a lifetime kind of thing. But we've also developed a lot of other techniques to manage the noise, and this includes certainly error correction which is something that our teams are working towards and developing out the theory for certain error correction that will include having a fault-tolerant kind of device available and error rates low enough that we can actually run some of those codes. But we're also looking at error mitigation which leverages classical post-processing methods and sort of is able to capture the noise regardless of whether we know where it comes from or not, but to be able to account for the noise and then correct for it so that we can get out as accurate results as maybe even in an error corrected regime. So there's active research ongoing, and then also software tools that are being developed so that we can leverage these techniques as they are developed in real time, and then use them for our applications research and running algorithms and circuits that are interesting to us. 

RD That post-processing, does it use sort of statistical methods? Does it use machine learning, or is it something else? 

JG So one of the things that we've recently put out, and you can actually access through Qiskit runtime, is something called probabilistic error cancellation. You run a circuit, and then you run the inverse of the parts of the circuit and you effectively are able to kind of learn where the noise is that way. And then the post-processing set divides it into smaller circuits and you're able to basically pull it all back together and account for the noise. So there's opportunities I would say for machine learning certainly, and thinking about how AI and quantum intersect is another thing that we're thinking very seriously about, especially since we just announced our system two and kind of the plans for that and you can see these quantum-centric supercomputer type of arrays and things of that nature. So yeah, we're thinking very carefully about how all these things will play together and where AI can help quantum, where quantum can help AI, and what that looks like in particular.

RD So I know it's not a hard equivalence, but what's sort of a rough equivalence of the 433 qubits to classical computing? 

JG Yeah, that's a tough question to answer. So we think of the qubits in terms of states, and so I think that if you just do a rough back of the envelope type of calculation, people will usually say it's 2^n. So 2^433 is a lot. Huge. In fact, I think if you do 2^275, that's the cutoff. That's the number that is more than atoms in the universe kind of style. So it's absolutely massive. But there's a lot of nuance that goes into that, and especially when we're talking about actually programming a quantum computer and using it to look at a chemistry problem or a problem in finance or anything like that. And in addition to that you have to of course take into account the noise that you have present in the system. So it's hard to say what the computing power is of a device today that has 433 qubits. If you project out and think of someday that we have error rates that are as close to zero as possible, then that's where you start talking about this 2^n and harnessing the power of the universe and all these things. But that's the idea, and that's what we're going for and the potential that it brings to us in terms of compute. So that's about what we're aiming for. 

RD And that 2^n is computations per cycle? 

JG It’s states, so it’s basis states. So you can use some of the examples of just molecules for example. So water might use somewhere around 14 qubits. We've actually shown and demonstrated that you can use much less. You can do it with some of these techniques I've been talking about. You can do it on five qubits. But regardless, if you have 14 qubits then that's 10^4 classical bits, so you can kind of calculate it out that way. But again, there's a lot of nuance here, including that we need to carefully consider the types of problems that quantum will be good for, and it's not necessarily all the same problems that you can think of classical being good for. So I think that's my caveat, but it kind of gives you a rough idea.

RD And that's a fantastic lead into the next questions. I've read about some crypto algorithms trying to be quantum safe and things like Shor’s algorithm being lightning fast for prime factorization and sort of being uniquely suited to quantum computing. Can you talk about why that is?

JG Well, again, Shor’s is an algorithm that is in that sort of long-term error-corrected regime that you would need to use error correction for it. And a lot of the famous algorithms that you've heard of that show what we refer to as being exponential speed up with quantum computers, typically what we're talking about are in that regime. And so there's some algorithms that are famous as well for chemistry, like phase estimation, quantum phase estimation, Shor’s algorithm, Grover’s. So you can think of ones that you've probably heard of needing to have that error correction kind of piece. That said, as I mentioned, we're doing a lot to bring algorithms closer to near term and error mitigation and maybe even error mitigation combined with error correction in these early days which will allow us to start solving problems that I don't think we would've thought that we would've been able to solve before, or as early as this. And so Shor’s algorithm definitely again leverages quantum devices that have these sort of ancilla qubits. So in general, when you think of the back of an envelope calculation for what you would need to be able to run Shor’s algorithm or crack RSA or something like that, you'll see numbers that are in the millions of qubits, just to give you an idea. Because you have to account for that overhead that comes with the error correction. But the asterisk is that we're doing things earlier than we thought and so I think that that's part of the reason that we're talking about quantum safe now, is that we don't know when things will come, like what the timeline is exactly, but we do have sort of methods to address this that are available today. And so for example, in our systems, they are quantum safe systems already. So it's definitely something to start considering now, even though if you had asked me the same question two years ago, I would've just been like, “Yeah, that's so far away I don't even know.” And now I'm like, “Well, actually maybe.”

RD Start planning now. 

JG Start planning now, yeah. 

RD So we talked about the prime factorization, we talked about the molecule simulation. What are some other sort of tasks and applications that quantum computing is uniquely suited to? 

JG Yeah, so we think about it in three big buckets. So the simulation of nature is one of them. So that includes not just molecular simulations, but also physics fall into this category. Material science falls into this category. So there’s a lot of richness there in just sort of the simulation of nature as a whole. And you can think of this as being a space that's interesting because in some ways nature is quantum mechanical by virtue. And so if you are then leveraging a device that is also quantum mechanical, there's some real obvious connection there. But in addition to that, there's been theoretical kind of proofs that show that we think that there should be at least more than polynomial speed up possible using quantum computers to look at certain problems such as dynamics, such as energy states, ground states, and things of that nature that fall into this category. The second category is basically generally mathematics and processing data with complex structures, so this is where quantum machine learning comes in. We talked about Shor’s and factoring, that's where it fits into this category. Like Shor’s, there's algorithms that have been shown, or precise things that have been shown for quantum machine learning as well that imply that there should be an exponential speed up possible in certain cases there as well. So generally speaking, we try to focus on these two areas in particular. We think they hold a lot of promise because they do have this greater than polynomial potential associated with them for using a quantum computer. So those are really obvious areas to look at. And then in addition to that, the last category is search and optimization, so Grover's kind of falls into this category. And these are areas that we don't necessarily have those theoretical proofs yet that there could be super polynomial speed up or greater than polynomial or exponential speed up. But we know that it promises probably somewhere around quadratic, but maybe more. We're still researching and looking and you never know what you're going to find, so we also have research in this area as well. And then in addition to that, there are certain algorithms like amplitude estimation and amplification that we think could act as accelerators for the other two areas that I talked about. So regardless of what kind of speed up we would expect that it could still help in these other areas as well. So you can imagine it's almost 2^n number of use cases that map on to those areas. It encompasses a lot of different things we can look at, a lot of different areas that we're exploring with partners and coupling it and tying it to things that are really valuable and hard classically. I mean, that's key. If something's really easy classically then you could argue, “Why look at quantum for it?” So something that's hard classically and where we think that quantum can lend some kind of advantage or some kind of speed up in the long run, those are the areas that we're exploring. 

RD Speaking of hypothetical use cases, have you seen the TV show Devs? 

JG No. 

RD Oh, okay. 

JG What was the use case? 

RD Simulating the past and future.

JG Oh my goodness. Okay. Well there is prediction, right? 

RD Sure. I mean, simulating nature, right? 

JG Yeah! No, it's not that far off. 

RD Oh, no. So I know you all are helping other people process quantum jobs within their sort of cloud workloads. Are there any adjustments that you need to make to their algorithms or data to be suitable for quantum computing? 

JG Yes. So again, it depends on how you want to use quantum computers. A lot of our discussions are around, again, as we're pointing to the next generation of these quantum-centric supercomputing centers where you really have classical HPC perhaps next to a quantum device, and how do you best leverage the workloads between those? So I think there's a lot of things that we've been thinking about in terms of how you ideally would situate going in with a problem, how would you set it up in such a way that you have the right parts of the problem being addressed classically and then other pieces perhaps with a quantum computer. That's part of it. But the algorithms that we do and the circuits that we run are inherently different from a classical. So again, it really comes down to how you divvy up the problem and which pieces you want to put where. So I think that's at a very high level, what would need to be taken into consideration. And also something to point out here too is that quantum computers aren't big data type of devices, and so that's another area that again we think that there's a lot to be done from the classical standpoint, but if you want to look at something that has high complexity, high interconnectivity, or is essentially by virtue dynamic, those are the kinds of things that the quantum computer handles really well. But if you were to run something on a quantum computer, you want to make sure that it's the right circuit that's going into it and algorithm that you're using. 

RD Is there anything else you wanted to cover that we didn't talk about?

JG Well, I just think in general thinking about the different use cases and the different areas is really important to do as a field. So it's not just us, but rather that this is a very multidisciplinary area and we need to have folks that are coming from all points of view. So whether it's software development, engineering, architects, and thinking even that are on more of the classical side, learning about quantum and bringing that lens has really pushed us forward in a truly unique way for this field. And I think it just has to do with the fact that it's an emerging area and so it's all hands on deck and we're all kind of learning together. 

RD Thank you very much for talking with me today, and hopefully you can crack the code and simulate everything all at once.

JG Well, thank you.

[music plays]

RD As we often do at the end of the show, we're going to give a shout out to someone on the Stack Overflow community who dropped some knowledge that was useful for folks. Today we're shouting out a stellar question badge awarded to Dimitri Z. “How can I use environment variables in Docker Compose?” Well, if you're wondering the same thing, check out the show notes and you can find out. Thank you all for listening today. I've been Ryan Donovan. I edit the blog and put together the newsletter here at Stack Overflow. You can find the Stack Overflow Blog at You can find me on Twitter @RThorDonovan. And if you like what you heard today, please drop a like or subscribe. It really helps.

[outro music plays]