Here is a nice shot of two D-Wave OneTM systems being tested in the lab!
I’ve been thinking about the BlackBox compiler recently and came up with a very interesting analogy to the way it works. There are actually lots of different ways to think about how BlackBox works, and we’ll post more of them over time, but here is a very high level and fun one.
The main way that you use BlackBox is to supply it with a classical function which computes the “goodness” of a given bitstring by returning a real number (the lower this number, the better the bitstring was).
Whatever your optimization problem is, you need to write a function that encodes your problem into a series of bits (x1, x2, x3…. xN) to be discovered, and which also computes how “good” a given bitstring (e.g. 0,1,1…0) is. When you pass such a function to Blackbox, the quantum compiler then repeatedly comes up with ideas for bitstrings, and using the information that your function supplies about how good its “guesses” are, it quickly converges on the best bitstring possible.
So using this approach the quantum processor behaves as a co-processor to a classical computing resource. The classical computing resources handles one part of the problem (computing the goodness of a given bitstring), and the quantum computer handles the other (suggesting bitstrings). I realized that this is described very nicely by the two computers playing 20 questions with one another.
The quantum computer suggests creative solutions to a problem, and then the classical computer is used to give feedback on how good the suggested solution is. Using this feedback, BlackBox will intelligently suggest a new solution. So in the example above, Blackbox knows NOT to make the next question “Is it a carrot?”
There is actually a deep philosophical point here. One of the pieces that is missing in the puzzle of artificial intelligence is how to make algorithms and programs more creative. I have always been an advocate of using quantum computing to power AI, but we now start to see concrete ways in which it could really start to address some of the elusive problems that crop up when trying to build intelligent machines.
At D-Wave, we have been starting some initial explorations in the areas of machine creativity and machine dreams, but it is early days and the pieces are only just starting to fall into place.
I was wondering if you could use the QC to actually play 20 questions for real. This is quite a fun application idea. If anyone has any suggestions for how to craft 20 questions into an objective function, let me know. My first two thoughts were to do something with Wordnet and NLTK. You could try either a pattern matching or a machine learning version of ‘mining’ wordnet for the right answer. This project would be a little Watson-esque in flavour.
Here is a video showing how some of the parts of a D-Wave Rainier processor go together to create the fabric of the quantum computer.
The animation shows how the processor is made up of 128 qubits, 352 couplers and nearly 24,000 Josephson junctions. The qubits are arranged in a tiling pattern to allow them to connect to one another.
There are two new tutorials on the website, complete with code snippets! Click on the images to go to the tutorial pages on the developer portal:
This tutorial (above) describes how to solve Weighted Maximum Independent Set (WMIS) problems using the hardware. Finding the Maximum Independent Set of a bunch of connected variables can be very useful. At a high level, the MIS it gives us information about the largest number of ‘things’ that can be achieved from a set when lots of those ‘things’ have conflicting requirements. In the tutorial, an example is given of scheduling events for a sports team, but you can imagine all sorts of variants: Train timetabling to improve services, assigning patients to surgeons to maximize the throughput of vital operations and minimize waiting lists, adjusting variable speed limits on motorways to reduce traffic jams during periods of congestion, etc etc.
This tutorial (above) describes how to find Maximum Common Subgraphs given two graphs. The example given in this tutorial is in molecule matching. Looking for areas where sub-structures in molecules are very similar can give us information about how such molecules behave. This is just one simple example of MCS. You can also imagine the same technique being applied to social networks to look for matches between the structuring of social groups. This technique could be used for improving ad placement or even for detecting crime rings.
These two tutorials are closely linked – as finding the MCS involves finding the MIS as part of the process. There are also lots of interesting applications of both these methods in graph and number theory.
If anyone would like to implement WMIS or MCS to solve any of the problem ideas mentioned in this post, please feel free!
Keen-eyed readers may have noticed a new section on the D-Wave website entitled ‘developer portal’. Currently the devPortal is being tested within D-Wave, however we are hoping to open it up to many developers in a staged way within the next year.
We’ve been getting a fair amount of interest from developers around the world already, and we’re anxious to open up the portal so that everyone can have access to the tools needed to start programming quantum computers! However given that this way of programming is so new we are also cautious about carefully testing everything before doing so. In short, it is coming, but you will have to wait just a little longer to get access!
A few tutorials are already available for everyone on the portal. These are intended to give a simple background to programming the quantum systems in advance of the tools coming online. New tutorials will be added to this list over time. If you’d like to have a look you can find them here: DEVELOPER TUTORIALS
In the future we hope that we will be able to grow the community to include competitions and prizes, programming challenges, and large open source projects for people who are itching to make a contribution to the fun world of quantum computer programming.
So today D-Wave’s latest paper has been published in Nature. You can take a look at the abstract here (and the paper if you have a subscription!). The paper is entitled ‘Quantum annealing with manufactured spins’
So what is this new publication all about?
Everyone knows that when you observe a quantum computation, you destroy it, right? So how are you supposed to know if your quantum computer is working correctly? That’s what this latest Nature article from the scientists at D-Wave addresses. We’ve known for some time that the D-Wave quantum computers are performing computations, and we know that the answers they are giving us are correct, (they agree with our predictions).
But wouldn’t it be cool to be able to go further, to actually look INSIDE a quantum computer, with large numbers of qubits all interacting and computing, and catch the quantum mechanics in the act?
Not just a string of atoms
The first cool thing about this experiment is that the system under test this isn’t just the usual suspects found in quantum experiments – a string of atoms, a series of electron spins in a crystal, or a bunch of photons. It’s not a curiosity that scientists have found lurking in the natural world allowing them to observe some quantum mechanics. This is a processor! It is programmable – it actually solves problems, looks similar to the integrated circuits inside your laptop, and you can program it using Python! Anyway… I digress. What I mean to say is that it is very important to realise that these quantum effects are controllable. We’re no longer just looking at quantum systems – like atoms – and verifying their quantum nature. We’re taking those systems, and moulding and warping their energy levels, and controlling the way they interact with each other, so that we can use those quantum effects to help us compute.
Respecting the bigger picture
It’s fairly easy to isolate a single quantum bit and do some experiments on it to check that it is behaving quantum mechanically. It’s much harder to test that it’s STILL working quantum mechanically when it’s in the middle of an incredibly complex processor, connected to all kind of lines and electronics. It would be like designing a bridge that was able to support its own weight – but never considering what would happen when the bridge is used as it should be – with high volumes of traffic passing over it every day.
That’s the second cool thing about this result – during the experiment, the processor is operated in the same way as it is operated during problem solving. We didn’t have to do anything particularly esoteric to the qubits in order to watch them. We’re simply lifting the lid off the black box so we can take a peek at the quantum mechanics of the computation as it happens during normal problem solving.
In the experiment itself, this ‘black box’ is a subsection of the processor known as a unit cell. It is a fundamental block which is replicated and tiled together to form the larger processor. The unit cell tested contains 8 qubits, all linked together. There are 16 such unit cells in the current generation of D-Wave’s processors – known as the ‘Rainier’ architecture.
So how exactly do the scientists ‘watch’ the quantum mechanics? Well, the unit cell mentioned above is operated in the same way as it would be during a normal computation – running what is known as a quantum annealing algorithm. The difference is that at a certain point during the computation, the usually slow, careful annealing of the qubits is suddenly interrupted by a very fast signal. This signal causes the unit cell to ‘freeze’ in whatever state it was in at the time. If you repeat the computation lots of times, but each time apply your ‘freezing’ signal at a slightly different moment during the quantum computation, you can build up a series of ‘snapshots’, like stills on a movie reel. D-Wave scientists compiled all these snapshots to reveal exactly what is happening during the quantum computation.
The next step is to check that these results really do agree with what quantum mechanics tells us. So a theoretical model of the unit cell was set up, based on the predictions of quantum physics, and the model fits very well indeed. Even more interesting, a second model was set up, which captured how CLASSICAL physics predicts the processor should behave. The results were striking – the classical model wasn’t even close! There’s no way these results can be explained using classical physics.
This is a pretty awesome result for quantum computation in general. People have been worrying for a while that it may not be possible to ever build large scale quantum computing systems, that once we start putting those fragile qubits into a real processor environment that the quantum mechanics will be destroyed. The results from this latest paper reveal to us exactly the opposite – that quantum effects persist, and allow us to control them.
Maybe quantum mechanics isn’t so spooky after all. In fact, I’d say that the future of building large scale processors that operate using quantum mechanics looks more promising than ever.