Summary
Quantum computers are the biggest jump forward in processing power that the industry has seen in decades. As part of this revolution it is necessary to change our approach to algorithm design. D-Wave is one of the companies who are pushing the boundaries in quantum processing and they have created a Python SDK for experimenting with quantum algorithms. In this episode Alexander Condello explains what is involved in designing and implementing these algorithms, how the Ocean SDK helps you in that endeavor, and what types of problems are well suited to this approach.
Announcements
- Hello and welcome to Podcast.__init__, the podcast about Python and the people who make it great.
- When you’re ready to launch your next app or want to try a project you hear about on the show, you’ll need somewhere to deploy it, so take a look at our friends over at Linode. With 200 Gbit/s private networking, scalable shared block storage, node balancers, and a 40 Gbit/s public network, all controlled by a brand new API you’ve got everything you need to scale up. And for your tasks that need fast computation, such as training machine learning models, they just launched dedicated CPU instances. Go to pythonpodcast.com/linode to get a $20 credit and launch a new server in under a minute. And don’t forget to thank them for their continued support of this show!
- You listen to this show to learn and stay up to date with the ways that Python is being used, including the latest in machine learning and data analysis. For even more opportunities to meet, listen, and learn from your peers you don’t want to miss out on this year’s conference season. We have partnered with organizations such as O’Reilly Media, Dataversity, Corinium Global Intelligence, Alluxio, and Data Council. Upcoming events include the combined events of the Data Architecture Summit and Graphorum, the Data Orchestration Summit, and Data Council in NYC. Go to pythonpodcast.com/conferences to learn more about these and other events, and take advantage of our partner discounts to save money when you register today.
- Your host as usual is Tobias Macey and today I’m interviewing Alex Condello about the Ocean SDK from D-Wave for building quantum algorithms in Python
Interview
- Introductions
- How did you get introduced to Python?
- Can you start by giving a high-level overview of quantum computing?
- What is the Ocean SDK and how does it fit into the business model for D-Wave?
- What are some of the problem types that a quantum processor is uniquely well suited for?
- How does the overall system design for a quantum computer compare to that of the Von Neumann architecture that is common for the machines that we are all familiar with?
- What are some of the differences in algorithm design when programming for a quantum processor?
- Is there any specialized background knowledge that is necessary for making effective use of the QPU’s capabilities?
- What are some of the common difficulties that you have seen users struggle with?
- How does the Ocean SDK assist the developer in implementing and understanding the patterns necessary for Quantum algorithms?
- What was the motivation for choosing Python as the target language for an SDK to attract developers to experiment with quantum algorithms?
- Can you describe how the SDK is implemented and some of the integrations that are necessary for being able to operate on a quantum processor?
- What have you found to be some of the most interesting, challenging, or unexpected aspects of your work on the Ocean software stack?
- How do you handle the abstraction of the execution context to allow for replicating the program behavior on CPU/GPU vs QPU
- Is there any potential for quantum computing to impact research in previously intractable computer science research, such as the P vs NP problem?
- What are your current scaling limits in terms of providing compute to customers for their problems?
- What are some of the most interesting, innovative, or unexpected ways that you have seen developers use the Ocean SDK and quantum processors?
- What are you most excited for as you look to the future capabilities of quantum systems?
- What are some of the upcoming challenges that you anticipate for the quantum computing industry?
Keep In Touch
- arcondello on GitHub
Picks
- Tobias
- Alex
Links
- Ocean SDK
- D-Wave
- Quantum Computing
- Quantum Annealing
- Quantum Superposition
- Qubit
- D-Wave Leap
- Von Neumann Architecture
- Cuda
- Linear Programming
- D-Wave ML Papers
- D-Wave NetworkX
- Maximum Cut Problem
- Ising Problem
- Los Alamos National Laboratory
- Vertex Cover Problem
- D-Wave Hybrid
The intro and outro music is from Requiem for a Fish The Freak Fandango Orchestra / CC BY-SA
Hello, and welcome to podcast. Init, the podcast about Python and the people who make it great. When you're ready to launch your next app or you want to try a project you hear about on the show, you'll need somewhere to deploy it. So take a look at our friends over at Linode. With 200 gigabit private networking, scalable shared block storage, node balancers, and a 40 gigabit public network, all controlled by a brand new API, you've got everything you need to scale up. And for your tasks that need fast computation, such as training machine learning models, they just launched dedicated CPU instances. Go to python podcast.com/linode, that's l I n o d e, today to get a $20 credit and launch a new server in under a minute. And don't forget to thank them for their continued support of this show.
And you listen to this show to learn and stay up to date with the ways that Python is being used, including the latest in machine learning and data analysis. For even more opportunities to meet, listen, and learn from your peers, you don't want to miss out on this year's conference season. We have partnered with organizations such as Corinium Global Intelligence, Alexio, and Data Council. Upcoming events include the combined events of the Data Architecture Summit in Graph Forum, the Data Orchestration Summit, and data council in New York City. Go to python podcast.com/conferences today to learn more about these and other events, and take advantage of our partner discounts to save money when you register. Your host as usual is Tobias Macy. And today, I'm interviewing Alex Condello about the Ocean SDK from D Wave for building quantum algorithms in Python. So, Alex, can you start by introducing yourself?
[00:01:42] Unknown:
Hey. Great to be here. So, yeah, my name is Alex Condello. I am a developer at D Wave Systems, which is, the practical quantum computing company. I've been here I have a mathematics background. I've been here for about 3 years, and I'm 1 of the developers who works on the D Wave Ocean SDK, which is our set of Python tools for solving problems on the quantum computer. And do you remember how you first got introduced to Python? Yeah. You know, when I was in undergrad, I was studying mathematics. And there, they just sort of assumed that you can learn how to program along the way. We don't really get much of a formal introduction, but I had to, you know, I just had a bunch of problems I had to solve, and I did a very cursory search of what's the easiest programming language to use, and Python was the 1. And and, you know, it's all all history from there. And so before we get too far into the topic at hand, I'm wondering if you can just start by giving a bit of a high level overview about what we mean when we're talking about quantum computing. Sure. Yeah. So, you know, I think the best way to define quantum computing, at least in this context, is simply using quantum effects to do calculation. So, you know, as as transistors are getting smaller and smaller and as we're getting down to smaller and smaller scales with our CPUs and GPUs, a significant amount of effort is spent on, you know, accounting for quantum effects and getting around quantum effects to do sort of what we call classical computation.
So quantum computing is sort of taking the opposite approach, which is we have these these quantum mechanical effects and we wanna try to exploit them for for computation. So the there's a couple different models for quantum computing. So there's the topological, the gate model, and we do particular 1 called, quantum annealing. So quantum annealing is using little superconducting loops in superposition to solve a particular style of problem using those quantum mechanical effects.
[00:03:27] Unknown:
And my understanding is that because of the fact that the qubits are in superposition, it means that we're not restricted to the binary logic that we're used to with classical computing, and then and that instead, they're able to represent multiple different states simultaneously as a means of achieving greater efficiency in terms of being able to perform these computations.
[00:03:49] Unknown:
Yeah. That's right. I mean, the way that a a simple a simplified way to think about how you solve problems on our system is that we start off the computation with all of the bits in superposition, all the qubits in superposition, and then we apply the problem on top of that. And as the computation goes on, the sort of superposition force backs off and the problem force gets applied more strongly, and then they collapse into a into, hopefully, what is the solution to your problem.
[00:04:16] Unknown:
And so in order to make this whole new world of computing accessible to developers, D Wave has built the Ocean SDK, and I'm wondering if you could just discuss a bit about what that is, some of the capabilities that it offers, and how it fits into the overall business model for D Wave. Sure. Yeah. So, you know, when I first started at D Wave, actually, I was in our professional services organization, which is, you know, we we would partner with different customers to help them solve their problems.
[00:04:44] Unknown:
And at the time, we had a, a set of software that that was used to access the system, but it was relatively limited. And, you know, there's just so many problems in quantum computing and so much low hanging fruit and so many ideas that people wanna implement. I mean, it's really a a big wide open area. And, we thought to ourselves that it would be really nice if we could get other people, other smart people in the ecosystem helping us to solve these problems. Tell giving us feedback, helping us make better tools, adding their ideas, you know, contributing their solutions, you know, beating us at our game, benchmarking, all these different things. And, obviously, the best way to access that is with an open source package where, you know, people really can sort of explore these ideas, make contributions, tell us what what we're doing wrong, tell us what we're doing really well. And so the Ocean SDK was was originally just built as a access point to the system. So, you know, the first package that got released was a a client, that accesses the the QPU through, you know, a REST API. And then from there, we built up a couple abstraction layers. So, you know, the the particular problem the system solves is, a little bit specific and it's a little bit restricted. And so, obviously, the the next thing we wanna do is to abstract that a little bit into something that the user can use more generally and then abstract that even further into different domains that the user might be familiar with. So, I mean, maybe this would be a good time to sort of talk a little bit about what the problem we solve is. Yeah. So if you can just give a bit of an overview about some of the
[00:06:12] Unknown:
problem spaces that you're working in and some of the particular problem types that quantum processors are uniquely well suited for, that would definitely be helpful. Sure. Yeah. So
[00:06:22] Unknown:
1 of the problems that we solve, to pick an example, would be imagine that, you have a collection of people. This collection of people has relationships between them, and they're either friendly or hostile. So, you know, imagine you and and all of your coworkers, some people in the building, you know, you're friends with, some people in the building maybe you don't get along so well with, and some people in the building you don't know at all. So there's sort of 3 types of relationships within this network. You have friendly relationships, hostile relationships, and no relationships. Now imagine that you want to divide this group into 2 teams. You wanna have a red team and a blue team such that within each team, everyone is friends and between these 2 teams, all the hostile relationships because that makes for, you know, a fun competition. You wanna have a company soccer game or something like that. Well, this is a problem that's really well suited to our system and the reason for that is that our cubits, as I mentioned earlier, start their computation in superposition so they're both sort of negative 1 and 1 or equivalently both 0 and 1, and they end their computation in a classical state. So they've picked either 0 or 1, which corresponds to those 2 teams that I've described.
The other thing that is important to understand about our qubits is that they're connected pairwise. So 1 qubit has a relationship with another qubit, but there's no sort of 3 way relationships. I don't have relationships between 3 qubits, which corresponds to our our social network that I described before, where I'm friends with you, but I'm not so much friends with this other person. So fundamentally pairwise relationships. And at the end of it, you want to minimize the number of violations to a rule. So I wanna pick an answer such that I have as few violations, I have as few hostile relationships within my team, and as few friendly relationships across teams as possible.
So that is about the most classic problem that you can put on our system that you can imagine. Wow. This is really hard to do without a a visual. Solving obviously, describing this, you know, over an audio format is is kind of tricky. So what I would really encourage everyone to do is go check out Leap, which is our online platform for solving these sorts of problems. You can go to Leap and you can, click through 1 of our demos, which shows this problem I just described. And it uses Romeo and Juliet
[00:08:35] Unknown:
as, the front the the signed social network in the problem. And a lot of link to the show notes for anybody who does wanna click through and explore that a bit more. And so 1 of the other things that I'm curious about is how the overall system design for a quantum computer compares to the traditional Von Neumann architecture that we're all familiar with from our laptops and desktops and just some of the ways that that manifests in terms of how you interact with it? Sure.
[00:09:00] Unknown:
I think 1 of the best models you can use for understanding how to how we interact with the system is that it's much more of a coprocessor than anything else. So you can think of it as a GPU in the sense that when I'm solving a problem on the system, I am almost I am always starting with it, solving it just the way I normally would. I start with a regular Python program or, you know, whatever your language of choice is. I'm using an existing architecture. I have some existing workflow that I'm using, and I'm simply trying to extract a hard kernel, some particularly difficult job out of this problem, some particular particularly difficult subcomponent out of this problem and submitting that to the quantum computer.
So, you know, the whole game of the D Wave Ocean SDK is to plug into your existing workflow and help you extract that particular hard problem, put it into a form that the quantum computer can understand, and then dispatch it to the quantum computer. This is you know, there's no concept, at least not right now, of a quantum computing operating system or or anything like that. It's really is sort of it's much more like an analog computer where you're you're taking this problem and you're massaging it until it, until it fits on the system, and then you're submitting it where it gets translated into analog waveforms and finally dispatched to the system. And so in some ways,
[00:10:17] Unknown:
the idea of how you would use the quantum processor is probably, in a Python context, using it in some form of Celery task, for instance, where you have your particular long running job that you want to execute or you wanna get an answer for a particular computation. And as part of that, it dispatches to the quantum processing unit and then gets a response back, at which point it's then able to continue on using your standard Python logic to be able to send that to whatever end users requesting it or store it in a database, for instance. Yeah. And that's exactly right. And in fact, you've kind of hit on the way that, some of our, you know, our demos work is is exactly that where, you know, you you're running a regular classical
[00:10:56] Unknown:
system. You're running up regular classical program. You're submitting jobs to the system. You're carrying on with whatever you were doing, and then you're getting the response back and feeding that into your overall calculation.
[00:11:05] Unknown:
So similar approach to what somebody might be turning to CUDA for as far as being able to parallelize across multiple cores in a GPU. In this case, you're just sending it off to the QPU for a different type of compute optimization.
[00:11:17] Unknown:
That's right. And, you know, we don't really have a concept right now of sort of parallel quantum computing, although I would love to see someone, try to, you know, use multiple quantum computers at the same time,
[00:11:27] Unknown:
just because it's an interesting project. But it's exactly the same idea where you're taking some some particular nugget and sending it off. And so for somebody who is developing the logic for being dispatched to the quantum computing unit, I'm wondering what are some of the differences in terms of algorithm design that they should be aware of and any necessary context that they should have for being able to make sure that they are making as efficient use of the QPU as possible?
[00:11:55] Unknown:
Sure. Yeah. I mean, I think the the first thing to to understand is that the when you're submitting a problem to the QPU, you're not really submitting a, like, a program. You're submitting a problem to be solved. So it's much more like doing a, like, l you know, linear programming or mixed integer linear programming, that kind of thing where you are constructing a particular problem, specifically a particular energy equation, and the quantum computer is returning solutions to that energy equation. So it's not so much that you're compiling down to a sequence of steps that have, you know, loops and and structures and functions and and a set of transforms that are being applying. It's simply dispatching it's it's building it it's boiling it down to 1 problem that hopefully encodes the entire your entire program into that problem. So if you imagine, say, you you wanna do factoring on the system, but we always get asked about factoring. The instead of sort of trying all the different, possible factors, say, which would be the brute force solution, The way that we actually solve this is we, represent a multiplication circuit. You know, actual like, we we we take the the gates that would make up a multiplication circuit, and we encode those into this energy equation. And then we simply ask what are the inputs that will and that will rematch this output. And we dispatch that entire problem to the quantum computer, and it gives back, hopefully, solutions.
The other thing that's really important to keep in mind when you're when you're solving problems on the quantum computer is that it's fundamentally a probabilistic machine. It's not guaranteed to give you a good solution. You you are you know, it's sampling from a distribution, defined by that energy equation. And so when it's not guaranteed that, oh, I've just put my problem into something the quantum computer can understand and I've dispatched it, not gotten back a solution, that's guaranteed to be optimal. You have to potentially take multiple runs at the quantum computer. You might have to ask it to solve that problem multiple times. But this can also be a huge advantage because if you're interested in, say, finding all of the solutions to a particular problem, each of those solutions has a certain probability associated with it. And by running the quantum computer multiple times, you can hopefully sample from all of those different solutions.
[00:14:07] Unknown:
And that also sounds a lot like some of the approach that you would take in a machine learning or a deep learning approach. And so I'm curious what your experience has been in terms of trying to apply some of those approaches to the quantum processor for being able to get the probabilistic outcome for some measure of data inputs? Yeah. I mean, so D Wave has a pretty extensive,
[00:14:30] Unknown:
machine learning research group. And we have a number of papers which I can sort of provide,
[00:14:36] Unknown:
for for that sort of thing. But So because of the fact that this is inherently a probabilistic output, I'm wondering if you have found that it's useful to have any particular specialized background in terms of statistical inference or anything along those lines for being able to effectively use the quantum processor. And I'm also wondering how much the Ocean software stack helps in terms of assisting people in formulating the problem in a way that they're able to understand given their particular background?
[00:15:06] Unknown:
Sure. So 1 of the main ideas with the Ocean SDK is that it's kind of pick your own level of abstraction. So, you know, the the way that you ultimately end up interacting with the quantum computer is through a REST API. And the the job that you submit to that REST API is about as close to a quantum machine instruction as we can reasonably put up. We we really do try to make sure that all of the knobs that we have available on the quantum computer are available to the user. And when we, you know, invent a new a new knob that can you can turn on the system, we work very hard to get that available to the user as quickly as possible. So if you're a physicist and you have a physics background, you know, you're more than welcome to to interact with it at that level and and, you know, in that case, you might need a a degree in physics. That said, we D Wave is trying to, you know, is the practical quantum computing company. We really wanna make sure that it's available to to all of users. So to use the Ocean SDK, really the only background you need is a a little bit of a Python background. The problem that we're submitting this energy equation I described earlier is pretty straightforward, and, honestly, you don't need a, you don't need a math degree. You don't need a physics degree to understand it. On the other hand, if you have a computer science background or, you know, you simply are a Python enthusiast, the D Wave Ocean SDK provides abstraction layers that will let you access that. So at the very, very top, we have a couple packages. So D Wave NetworkX, which, which extends the very popular NetworkX package, which is used for solving, graph theory problems. So if you have, like, a maximum cut problem or a map coloring problem or that sort of thing, you can simply use the NetworkX interface and, access the quantum computer through that. On the other hand, there's sort of intermediate level where if you feel comfortable generating these energy equations, which I think anybody with a Python background, would be able to do without any particular trouble, you can hit those directly. And so the Ocean SDK is built around the idea that we can handle different users with different backgrounds.
[00:17:11] Unknown:
And I'm wondering what the selection process looked like when initially developing the Ocean software stack and targeting Python, and if there were any particular requirements that Python met particularly well, and maybe what some of the other considerations happened to be at the time or any other,
[00:17:30] Unknown:
existing implementations for the SDK? Sure. Yeah. I mean, when we were first starting to build the SDK, there was a question that came up. You know, what are the different languages that we could hit? And, you know, we considered a couple. Python is absolutely the obvious choice. So, you know, right now, especially with machine learning and TensorFlow and and all of that in Python. Python really is where a lot of the scientific community, computing community lives. It's easy to understand. It's easy to use. You can install things. It runs across multiple operating systems. We're able to leverage the PIP installer, which lets people get the Ocean SDK very easily. It's really just it's a no brainer to use Python because we can hit the most users and we can hit the user community that we wanna hit the most, which are, you know, curious people with, who are interested in trying new and exciting things and interested without having to write, you know, huge amounts of boiler plate in order to get there. They can get started right away. So digging deeper into that, can you talk through a bit about how the Ocean software stack is implemented and just some of the overall integration process for making sure that it works effectively with the QPU that it's targeting? Yeah. I mean, so most of Ocean actually is written as a pure Python stack. I mean, we simply, at the bottom, we have a a relatively simple client, that puts together a rest API call. It doesn't use anything fancy to do that.
You know, there's a couple places where, we have some hard computational tasks. And in that case, we're leveraging sort of a Cython library to to write some, code in c and then, you know, bind that into Python. But but, really, the vast majority of it, especially at the higher levels of abstraction, is written in Python because we want it to be understandable. We want the user to be able to say, you know what? I think the way that you're solving this particular problem isn't as efficient as it could be. And if they can go, you know, open up the the Python file and explore exactly how we're solving it and then tell us how to do it better, that's that's great. And that's 1 of the main reasons we picked Python is to to let people, you know, make it readable and make it self documenting and and, allow people to to try to understand it and and to tell us how to do it better. And I'm wondering what you found to be some of the most interesting or challenging or unexpected aspects of your work on the Ocean Software
[00:19:47] Unknown:
stack as well as your experience of working with these quantum algorithms?
[00:19:51] Unknown:
Yeah. I mean, I think the the most interesting thing has been what users wanna try. I mean, when you when you come at the the quantum computer with with no background in quantum computing, you know, most people wanna throw whatever whatever hard problem they have in front of them onto the quantum computer. And, you know, quantum computing is still relatively young, and it's it's not that every problem that you can solve, goes sort of naturally onto the quantum computer. So I think the surprising thing has been how much success people have had solving their problem when I would have been like, no way. There's no way that'll work on the quantum computer. And then, you know, they they come up with some clever trick, and and they use some clever encoding and are able to get it on the system using our software, and it's really gratifying to see people doing these off the wall things. And sometimes, you know, it works, And and that's that's really an amazing thing. And and, in fact, a vindication of why we went to,
[00:20:48] Unknown:
open sourcing this software and why we went to Python is to to let people do that. And I'm also intrigued by the fact that you're able to target these problems to run on classical CPUs and GPUs as a validation step before submitting to the GPU. And I'm wondering what the overall challenges were in terms of being able to provide that abstraction, and, particularly as you introduce newer generations of your actual underlying compute infrastructure.
[00:21:16] Unknown:
Yeah. Actually, I mean, so so 1 thing I think that's worth highlighting is that for the problem the quantum computer solves, which, is for the record called a binary quadratic model, and you can check out all of our documentation about that. The quantum computer even within that particular problem class, the quantum computer is never going to be the best solver for all possible binary quadratic models. I mean, it's possible to construct 1 that, will always be better to solve classically. And part of the reason that we put up these other solvers in Ocean is to allow users to to do that comparison and to to make use of classical resources where it makes sense. And so I think 1 of the biggest challenges for us has been, you know, what is the most useful set of these classical solvers to put out there? Because we wanna make sure that they are complementary to the quantum computer so that, you know, if if this problem if we have a particular problem class that we know not to be a great fit for the quantum computer, then we wanna put something out. We don't wanna block people from solving that problem, and so we wanna put something up that will will helps, you know, fill that gap. And so sort of understanding how these different algorithms complement each other and what they're strong and weak at is is by far. I mean, it's a huge research effort. It's something we spent significant time on here at D Wave. And then making those available to the user is, you know, there's there's simply an implementation effort that comes with that. But, yeah, I think it it's picking what to do is by far the biggest challenge because there's so much low hanging fruit in this area, which makes it really exciting because, you know, I'm never short on new ideas to implement or things that I would like to do. And I think people who who contribute to the software in the same position where, you know, there's almost any idea is gonna be the first time someone's done that and the first opportunity to do it. And probably, you know, it's a good idea, and then it should be included.
[00:23:03] Unknown:
And I know that there are also other services that allow for interacting with their own quantum computers. And I know that you mentioned that there are a few different approaches that are taken in terms of the actual physical implementation where you use quantum annealing, somebody else might use a different strategy. So I'm wondering how much of the work that somebody does for programming something using ocean for a D Wave computer, they would be able to abstract out to be able to submit to other quantum computation platforms and, any trends that you might see in terms of standardizing along a common API to make these workloads more portable?
[00:23:42] Unknown:
Yeah. So that's a great question. So 1 of the most common open source projects and sort of hackathon projects I see are various cross compilers between the different quantum computing architectures. And I think that's really, really cool. Like, I think, you know, at D Wave, we're really excited to to have people try to integrate multiple systems, and and I think that in the long run, anything that helps the quantum computing community as a whole is good for all of us because it it builds excitement. And then specifically, you know, for for working with the different processors and trying to solve your problem on different processors, especially at the sort of higher levels of abstraction when you're solving these sort of graph theory problems like maximum cut, or something called the icing problem.
These are these are sort of broadly applicable, and I think a lot of the different software architecture solve that kind of problem. And so, you know, if you're if you're working at that higher level abstraction, it can be as simple as just switching out a function call. But, obviously, then the deeper you get into the stack, the more specific
[00:24:41] Unknown:
to the particular hardware it comes. And so, you know, that's true for our software stack as well for, some of the other vendors. 1 of the other things that I'm curious about is if there are any differences between the different hardware generations as far as how they are constructed for being able to solve different problems, and any constraints that are enforced in terms of trying to maintain the same interface for backwards compatibility with the software stack that you're building? Yeah. That's a great question. So
[00:25:13] Unknown:
the fundamental problem that we solve has not changed over all the generations of the D Wave system. So, you know, we have we've been fundamentally solving this binary quadratic model problem from the beginning. So in 1 sense, nothing's changed. In the other sense, we've increased our cubit count enormously and our connectivity. So over time, we have been increasing the number of cubits available to the system. So, you know, 1 of our first systems that we made available to customers had 500 cubits. Our new advantage system, has 5, 000 cubits. The The other thing is that the amount of connectivity. So in our first system, each cubit was connected to 6 other cubits, and now each cubit is connected to 15 other cubits.
So the size of problem that you can solve on the system has has increased enormously, and the complexity of the problem that you can solve on the system has increased enormously over the different generations. The other thing that I'll mention is that over time we've increased more and more sort of control knobs and finer tuning systems that that let you finely tune the way the processor is, working on your problem. And along with that, in the Ocean SDK, we've released a lot of sort of auto tuning functions that help you help you use those parameters. And so if you had a problem that ran on that original system, using the Ocean SDK, you can continue to run it on the newer and newer systems, and the main thing that you'll see is that you can solve larger and larger problems. On the other hand, you can still make use of all these new and exciting features.
[00:26:42] Unknown:
And then in terms of scale, I'm curious how you approach that as far as ensuring that anybody who submits a problem to the QPU doesn't get put into a long backlog waiting for their results, given that there is inherently a limited number of these units available. And my understanding of the service model is that it's a time sharing approach similar to what we used to have in mainframes in the early days of computation.
[00:27:08] Unknown:
Yeah. Sure. So D Wave is a real time computing platform. So, you know, when you we have a couple of QPUs that are online and publicly available in Leap right now. And when you submit a problem, it simply goes into a queue. And, you know, we we have the capability of scaling the number of QPUs that are available so so that we can make sure that we're meeting demand. And then I'm also curious about some of the most interesting or innovative or unexpected ways that you've seen developers
[00:27:32] Unknown:
use the Ocean SDK and the quantum processors that you're exposing?
[00:27:36] Unknown:
And also, if you can talk a bit about the Leap platform that you've mentioned a couple of times and how that fits in with your overall product offerings. Sure. So, maybe working backwards through that, the Leap platform is our online platform for training and accessing the Quantum computer. So when you log into Leap, you will immediately get 1 minute of free time on the Quantum computer. You'll be able to, you know, see how much time you've used. You'll be able to access demos and different documentation resources. It's the 1 stop shop for accessing the quantum computer. In terms of exciting applications that people have put on the system, I think 1 of the coolest ones is out of the Los Alamos National Labs.
So before I mentioned this idea of, you know, when you're submitting a problem to the quantum computer, you are submitting a problem, and it's simply giving you back an answer. You're not submitting a full program. I think 1 of the most unique, ways that I've seen people to use the quantum computer is out of Los Alamos National Labs. There is a compiler that takes a restricted set of c code and will compile it into that problem that I described that you can use run it on the quantum computer. Now this is done very inefficiently. The number of cubits you would need to encode, even a relatively small c program is enormous. But, nonetheless, I think this is a very, very cool and exciting and unique direction to take the, take quantum computing.
[00:28:55] Unknown:
And so you mentioned that when you sign up for LEAP, you get a free minute of computation on a QPU. So I'm wondering if you can just give a bit of an idea as to how much real world usage that equates to. Because from, you know, from from the outside perspective, 1 minute doesn't seem like a lot. But if the QPU is able to solve your problem in, you know, some thousandth of a second, then it does end up being a substantial amount of compute. So I'm curious if you can just give a bit of a real world example of a problem that somebody might submit and then how much of their, free, allocation that would end up using and how many times they'd be able to take advantage of that before they ran out. A really classic problem that someone might wanna submit to the system is imagine I have a set of pipes
[00:29:38] Unknown:
and these pipes intersect at a bunch of different junctions. And I want to pick the smallest set of junctions such that I can monitor all the pipes. Now this is a really classic vertex cover problem, and that's about as native computing problem as could possibly be solved. That's really, really close to what our system actually solves. And in terms of, you know, the amount of computation that you can get with a minute, each run of the system typically takes about 15 milliseconds per per run. So that's you could actually do an enormous number of runs on the quantum computer in that minute. And I'm wondering how you approach metering
[00:30:12] Unknown:
of the usage for people who are submitting their problems to be able to count up those 15 millisecond intervals up to whatever their,
[00:30:22] Unknown:
either free or purchased allocation happens to be. Sure. Actually, that 1 for us is really easy because, each of the quantum computer takes that fixed amount of time. So, you know, when we actually run the problem on the system, it's being run for a certain duration. And so, really, it's just a counting problem. So when you submit a problem to the system, as I said, you're putting together this sort of energy equation, and then you're simply saying, I would like to run the the quantum computer on this equation n times. So that could be 5 times, 10 times, a 100 times, a 1000 times, and we can just do the multiplication to do that. When we're when you have that sort of free minute, we're not counting sort of the the preprocessing time and the postprocessing time that it takes to run on the system.
[00:31:02] Unknown:
Because that I'm sure is just running on classical computers that you're able to scale out as needed using either on premises resources or cloud capacity. That's right. And as you look to the future of quantum computing and the key capabilities
[00:31:16] Unknown:
that they provide, I'm wondering what you personally are most excited about. I think I'm most excited about hybrid applications. So, you know, D Wave, we recently put out added a new package to our SDK called D Wave Hybrid. This is the idea of combining classical and quantum resources together in order to solve your problem. So, you know, before I describe this idea of different problems fit better on different types of resources, so you might wanna use classical resources for this problem and quantum resources for this other problem. But there's this whole area that, you know, we're really just scratched the surface of, which is using both. So this is things like preprocessing with classical, postprocessing with classical, or with quantum. This is running something simultaneously on classical and quantum. This is using quantum to to guide a classical, computation.
There's just a huge number of combinations and a vast area that hasn't been fully explored.
[00:32:06] Unknown:
And also looking forward, I'm curious if there are any particular challenges that you anticipate the overall industry having to deal with, and just, any concerns that you might have as far as user uptake
[00:32:20] Unknown:
or, yeah, just overall challenges that exist in the space? I think the the main challenge that the industry as a whole is facing is that, you know, these these machines are still new and and there's still there's not a lot of best practices for using them. And so everyone, you know, like like, when we write our SDK and and when the other vendors write theirs, we are we're trying to encode best practices into these abstraction layers. But this is still a big open area that that hasn't been fully explored. You know, there isn't years years of of experience, deciding how to best optimize the solutions. And so this is both simultaneously the most exciting part and the biggest challenge for the industry as a whole is how do we encode these best practices in a way that people can make use of them without having to And I'm also wondering as far as your own experience of building the Ocean SDK for trying to encapsulate some of those best practices. Just some of the overall challenges that you faced in the process, and any particularly interesting or unexpected lessons that you've learned?
I think the the most common lesson that we've learned is that, people will do crazy things if you give them an interface. And and I think the biggest challenge has been enabling people to you know, guiding people down the right best practices and but not preventing them from going off the wall because those off the wall ideas are the ones that that get the most traction or or potentially have the best,
[00:33:43] Unknown:
upside. Because, you know, it's it's the thinking out of the box that'll give the best solution. Well, for anybody who wants to follow along with the work that you're doing and get in touch, I'll have you add your preferred contact information to the show notes. And so with that, I'll move us into the picks. And this week, to keep it topical, I'm going to pick an interview that I did a while back about the q tip package, which is for being able to do simulations of quantum optical circuits, which is 1 of the foundational layers for quantum processors. So it's another way to dig a bit into this overall problem space. And so with that, I'll pass it to you, Alex. Do you have any picks this week? Yeah. I think the the project that I or the package that I've been working with a lot recently, which has just really been amazing, is Cython.
[00:34:28] Unknown:
You know, we've been recently you can check out some of the open pull requests in Ocean where we've been converting some of the underlying data structures into C. And and I've been really digging into Cython and understanding how how that works, and it's been amazing. It's a really cool library that does solves a really important problem. And I think in the long run, as scientific computing,
[00:34:46] Unknown:
is using Python more and more, it's gonna be really important to to be able to find the performance of c with the usability of Python. Yeah. It's definitely an interesting package and another 1 that I've had on the show in the past. I'll add a link to that as well, but definitely heard of people doing some pretty amazing things with Cython to be able to get some pretty incredible speedups. Well, thank you very much for taking the time today to join me and discuss your work on the Ocean SDK and the overall space of quantum computation. It's definitely an interesting area and 1 that I've been keeping an eye on, and I'm pretty excited to see some of the types of applications that it unlocks as we continue to progress down this road. So thank you for all of your time and effort on that, and I hope you enjoy the rest of your day.
[00:35:28] Unknown:
It's been a pleasure. Thanks so much.
[00:35:33] Unknown:
Thank you for listening. Don't forget to check out our other show, the Data Engineering Podcast at dataengineeringpodcast.com for the latest on modern data management. And visit the site of pythonpodcast.com to subscribe to the show, sign up for the mailing list, and read the show notes. And if you've learned something or tried out a project from the show, then tell us about it. Email host at podcastinit.com with your story. To help other people find the show, please leave a review on Itunes and tell your friends and coworkers.
Introduction to Alex Condello and D-Wave
Understanding Quantum Computing
Overview of the Ocean SDK
Problem Spaces for Quantum Processors
System Design and Interaction
Algorithm Design for Quantum Computing
Implementation of the Ocean SDK
Cross-Platform Quantum Computing
Scaling and Metering Quantum Compute
Innovative Uses of Quantum Computing
Future of Quantum Computing
Challenges and Lessons Learned