WEBVTT

00:00.000 --> 00:11.440
All right, yeah, the Mexicans are traveling in June, they're going to talk about the

00:11.440 --> 00:17.440
Apache project related to Quadum.

00:17.440 --> 00:18.440
Thanks for joining.

00:18.440 --> 00:19.440
Good to see everybody.

00:19.440 --> 00:21.680
Hope you're having a good fun as them.

00:21.680 --> 00:25.080
Hope you have a good trip home, wherever you came from.

00:25.080 --> 00:27.480
We came from Chicago and Portland, Oregon.

00:27.480 --> 00:29.120
I had only 17 hours of flight.

00:29.120 --> 00:31.880
So grateful to be here.

00:31.880 --> 00:37.280
Just wanted to give everybody a heads up on a new feature in Mahoot, which has allowed

00:37.280 --> 00:41.600
us to put Quadum compute in our back end.

00:41.600 --> 00:46.880
We're just going to talk about who we are, where the project has been over the years.

00:46.880 --> 00:54.960
The rationale for putting Quadum into Mahoot, quick demo or just screenshots of live notebooks.

00:54.960 --> 00:59.120
And then a way calls to action for how you guys can get involved.

00:59.120 --> 01:03.000
Who am I?

01:03.000 --> 01:07.720
I came from Portland, Oregon, like I said, I've been working on Mahoot for about 13 years.

01:07.720 --> 01:13.720
I got into that when I found a bug in one of the similarity computations on a project

01:13.720 --> 01:14.960
for a bank.

01:14.960 --> 01:19.400
So we were making recommendation in June and we were dropping all our results on the floor,

01:19.400 --> 01:22.720
got on the user list or the dev-lift at least and asked how I could help.

01:22.720 --> 01:28.800
And so I fixed a bug and got the bug for doing matrix math being able to see where

01:28.800 --> 01:34.080
all the arithmetic happens and it's been a fun ride, Metraver there.

01:34.080 --> 01:36.440
Have a lot of hobbies.

01:36.440 --> 01:42.880
Head of technology at a speed chain, which is a B2B startup and then Trevor, who are you?

01:42.880 --> 01:46.560
Hi, I'm Trevor Grant.

01:46.560 --> 01:51.040
I also am a PMC, which is a project lead on the Mahoot project.

01:51.040 --> 01:56.240
I wrote a book in some papers, but nothing on Quadum.

01:56.240 --> 02:01.520
I'm not a Quadum expert and I aside from giving a talk at Fas Dem, don't really pretend

02:01.520 --> 02:03.320
to be one, at least not to be people actually.

02:03.320 --> 02:04.320
No Quadum.

02:04.320 --> 02:06.520
I've got two boys.

02:06.520 --> 02:07.520
I've been kind of out of space.

02:07.520 --> 02:08.520
I used to speak a lot.

02:08.520 --> 02:09.880
I haven't for the last couple of years.

02:09.880 --> 02:10.880
I had a couple of boys.

02:10.880 --> 02:11.880
They're really great.

02:11.880 --> 02:14.720
But I've been card-free since 23.

02:14.720 --> 02:17.720
I've actually been card-free since 22.

02:17.720 --> 02:21.480
A lot of people in here from Europe probably doesn't sound like it's really impressive

02:21.480 --> 02:22.480
in America.

02:22.480 --> 02:23.480
It's pretty hard.

02:23.480 --> 02:25.280
I'm very proud of myself for that.

02:25.280 --> 02:32.000
As always, I have a special thank you to IBM for patroning my artistic endeavors, such

02:32.000 --> 02:37.960
as my vacation to Brussels.

02:37.960 --> 02:42.280
A new wee art, as I was alluding to, we are not Quadum researchers.

02:42.280 --> 02:45.640
You can, I think, awesome phrase I heard.

02:45.640 --> 02:49.360
You can nerd snipers, or try to show that we don't know what we're talking about.

02:49.360 --> 02:50.360
You're going to win.

02:50.360 --> 02:52.000
I'm just going to give that to you right now.

02:52.000 --> 02:56.320
If you're a freshman in a Quadum program, you are going to blow us out of the water with

02:56.320 --> 02:59.800
some questions, some got you question on Quadum computing.

02:59.800 --> 03:02.960
We're not, you're not in a PhD either.

03:02.960 --> 03:06.040
No, we're not a PhD at all.

03:06.040 --> 03:08.880
I've got a master's degree.

03:08.880 --> 03:12.200
Again, we write some stuff, mainly blog posts.

03:12.200 --> 03:17.840
But who we are, we are pretty confident software engineers, who has a background that we're

03:17.840 --> 03:24.520
going to get into of abstracting over back ends and why that's important.

03:24.520 --> 03:29.240
We have a history of doing that, and when we saw this quantum space emerging, it seemed

03:29.240 --> 03:33.720
like a good fit for a number of reasons, so with that, I'm going to turn back to Andrew.

03:33.720 --> 03:39.000
Yeah, so this project has evolved over the years, and basically it's been a small club

03:39.080 --> 03:47.880
of people interested in machine learning, data science, analytics, natural language processing.

03:47.880 --> 03:55.000
We've evolved from initially a sub project of Lucine, became a top level project as

03:55.000 --> 04:00.200
a recommender engine, which Sean Owen donated, I think it was called Taste.

04:00.200 --> 04:06.360
It's evolved over the years from a Hadoop-based MapReduce system, which turned out to be

04:06.360 --> 04:11.640
a bad architectural choice because you're doing full table scans every time you do an iteration

04:11.640 --> 04:19.360
on your machine learning algorithm, so we re-tooled and worked on a spark back end.

04:19.360 --> 04:24.000
Then the direction of the project took a turn where we realized that there were so many

04:24.000 --> 04:29.320
back ends popping up, there was flink, there was H2O, and so we decided that the right

04:29.320 --> 04:35.080
thing to do was to provide a uniform interface where you could write code one time and

04:35.080 --> 04:38.440
then run it on any back end that you chose.

04:38.440 --> 04:44.120
That basically fast forwarding was where the idea for quantum came, because as you'll see

04:44.120 --> 04:48.680
the several back ends in the cloud providers, we thought we had an opportunity to make

04:48.680 --> 04:53.480
something that would benefit the community so that you didn't have vendor lock in, you

04:53.480 --> 04:58.280
didn't have to decide for the next 10 years what platform you'd use, so that's the motivation

04:58.280 --> 05:05.720
for where we are with this.

05:05.720 --> 05:14.040
Yeah, and so coming off of that, we put a Q-mat into Mahood as a way to be a layer in front

05:14.040 --> 05:17.960
of any of these back end systems.

05:17.960 --> 05:24.360
The core capabilities of the project are matrix arithmetic, so matrix multiplication,

05:24.440 --> 05:30.440
factorization, any kind of dot product, similarity calculation, things like that, and what

05:30.440 --> 05:37.000
we looked at when Trevor decided that this might be a good place to work was that the

05:37.000 --> 05:44.200
math behind quantum looked a lot like linear algebra, so we figured it was a good fit.

05:44.200 --> 05:51.080
So everybody here who's a researcher, I'm sure this is grade school level, but this came from

05:51.160 --> 05:56.440
another talk that we did too, but this is just explaining that when we looked at this, we just saw

05:56.440 --> 06:05.240
unit vectors, you know, basis vectors, and so it made a lot of sense for us, and so matrix multiplication

06:05.240 --> 06:11.480
obviously is just what we do all day and in distributed level, and so making it a new layer made

06:11.560 --> 06:14.760
a lot of sense for us, and you're going to do that.

06:18.360 --> 06:22.520
So as I said in the abstract, if you may or may not have, what you may or may not have read,

06:22.520 --> 06:29.000
there's approximately as many quantum programming languages as there are quantum computer vendors

06:29.000 --> 06:40.840
at this point, so you've got a very diversified field, and KISKID is an other slide on this,

06:40.840 --> 06:46.360
but KISKID is emerging as a standard, they also realize like, hey, we don't,

06:46.360 --> 06:50.760
nobody wants to pick one because they're afraid, I will do all this research, that quantum computer

06:50.760 --> 06:55.000
will go away and we'll have to start over from scratch, and so KISKID is kind of making all these

06:55.000 --> 07:00.360
different backends, and I do work for IBM, and I want to, in fact, at least say this is not a

07:00.360 --> 07:07.640
pitch for IBM KISKID, again, upcoming slide will show me turning on them soon, and anybody

07:07.720 --> 07:16.920
in here working for IBM, before I say, I guess it's a livestream, oh yeah, it's a livestream,

07:16.920 --> 07:22.200
I won't say anything too egregiously mean to them, I already said thank you for putting my vacation,

07:22.200 --> 07:28.200
so, yes, you have KISKID, you've got bracket, you've got circuit, and the list goes on and on,

07:29.080 --> 07:34.200
we started with the KISKID bracket in circuit because they are arguably the bigger frameworks,

07:35.160 --> 07:42.280
and we will expand out from there, we have different vendor platforms running on,

07:44.200 --> 07:51.240
very, very similar operations, and I've heard rumors that bracket, for instance, will have

07:51.240 --> 07:57.720
optimizations written into bracket that makes quantum stuff run faster on, they will optimize for

07:57.720 --> 08:01.400
when you're running on AWS, and they're, we're not going to have that, so if you are

08:01.400 --> 08:07.400
performance constrained, which I don't think quantum computing as a disciplines really there yet,

08:07.400 --> 08:13.160
where you're trying to milk like super low latency or things like that out of it, but that day will

08:13.160 --> 08:17.960
come, and when that day happens, you're going to, at least, you're probably used KISKID,

08:17.960 --> 08:24.120
or you use KU-MAT to prototype what you're going to build, go get your BC funding, and then pick

08:24.120 --> 08:28.520
your vendor, and then you can optimize and you can really squeeze all those last little bits out of it.

08:29.320 --> 08:33.560
But our background and who, again, being able to abstract over multiple back ends was a

08:33.560 --> 08:41.640
core value we already had, we understood why it was important, so that is that. So yeah, actually,

08:41.640 --> 08:45.960
and normally if there was another IBM or in here, there would be, and I'd be like, you know,

08:45.960 --> 08:52.280
KISKID does all this, it does, they also won't, they will give you the optimal version for

08:52.280 --> 08:58.600
IBM quantum computers. I feel like at Bob's demo, we're all really big and open source,

08:58.600 --> 09:03.400
and we understand why of vendor having the abstraction layer for all the other vendors is probably

09:03.400 --> 09:08.280
a bad idea. If anybody really needs me to go into that, we need to go into that, we can save

09:08.280 --> 09:15.720
a per Q&A later, save a per Q&A later, when next slide. So current states,

09:16.280 --> 09:26.120
we, at the moment, have basic gates. We plan on doing some machine learning stuff and more,

09:26.120 --> 09:34.760
but basic gates, I mean, this is really not particularly high octane stuff and three back ends.

09:34.760 --> 09:40.360
However, the same circuits, it's translated by once for one, you can just switch one line of code,

09:40.360 --> 09:45.000
and you can run Q-mat, or you can run KISKID, you can run bracket, whatever you want in one line.

09:46.680 --> 09:53.960
We also have some, Tom's side card methods like being able to do drawing, being able to

09:53.960 --> 09:57.320
parameterize circuits, which is starting to lay the groundwork for quantum machine learning.

09:58.520 --> 10:02.520
We have a getting started in quantum guide, which is really fun too.

10:03.800 --> 10:08.200
And as I said, we're not quantum experts, so if you want to make some pull requests,

10:08.600 --> 10:12.840
come and read our stuff, I'm sure there's errors in there, and that's a good on-ramping for

10:12.920 --> 10:18.520
other people getting into quantum computing, which is nice. And we have a co-labrunable notebook,

10:18.520 --> 10:24.520
which we will talk about soon. But coming soon, again, we're eventually working toward doing quantum

10:24.520 --> 10:29.720
machine learning stuff. That is a goal that we have in mind. And then the other beauty of that,

10:29.720 --> 10:34.360
too, is you can lay out a quantum machine learning circuit, and then swap one line, and now you can

10:34.360 --> 10:40.760
run it on, whatever you want to run it on. More algorithms coming back to falls down because it's

10:40.760 --> 10:45.080
really fun coming to Brussels, some day getting some VC monies, so we don't have to work for IBM

10:45.080 --> 10:49.960
any more, we can just buy our own plane tickets, et cetera. So I will hand it back over to Andrew for the demo.

10:51.240 --> 10:55.480
Oh, so yeah, there's a problem with the crackling in the browser. You want, I think it is.

10:56.120 --> 11:00.280
The next slide just shows the notebook and the screenshot. Yeah, yeah.

11:02.280 --> 11:07.640
So we've used co-lab. This interface is really what would GitHub, just as far as developers

11:07.640 --> 11:12.680
tooling. When you have a notebook in GitHub, you can just pop, there's a button for popping up a

11:12.680 --> 11:19.000
co-lab notebook. We do have that button on this exact file. I happen to not point to the right

11:19.000 --> 11:28.280
notebook. So here are some screenshots. This is all run-able. We do have a simplified install,

11:28.360 --> 11:38.040
so you can just run these cells. This is all in github.com slash Apache slash Apache slash Mahoot slash

11:38.040 --> 11:44.280
cumat slash examples. And we have some examples of the circuit being drawn, so you can visualize the

11:44.280 --> 11:49.800
matrices you're multiplying together. We had some other stuff that I think is a work in progress.

11:49.800 --> 11:55.080
There was some bloch spheres. So this all is online. You can run this stuff, bless you.

11:55.400 --> 12:00.120
You can run stuff, you can make pull requests, you can tell us where we're wrong,

12:00.120 --> 12:08.440
you can tell us where we can improve. And then, like Trevor has said, we are not experts.

12:08.440 --> 12:13.240
And we are software engineers who have specialized in machine learning and matrix math.

12:13.240 --> 12:19.960
And we are dipping our toes into quantum computing. We actually looked at this morning at

12:19.960 --> 12:25.080
breakfast. I was looking up how to package this into pipi and I found out that user

12:26.200 --> 12:31.800
Zonky had already done it for us. So somehow there's an unsanctioned Python module out there

12:31.800 --> 12:35.880
that you can install with pip. So we're going to unfortunately Zonky didn't give us any

12:36.680 --> 12:42.360
way to get in touch with them. So we are going to go through the press. If anybody's gone,

12:42.360 --> 12:47.160
so Zonky uses a hook here on my file. If you have, please let them know.

12:48.120 --> 12:53.160
Please play with the notebooks, join the mailing list, and buy us beers. I had my first

12:53.160 --> 12:58.920
non-alcoholic Belgian last night. It was actually very delicious. And I think that's a question time.

13:09.480 --> 13:10.120
Any questions?

13:10.760 --> 13:16.760
Yes, Nate.

13:22.760 --> 13:24.760
Question.

13:29.960 --> 13:34.600
Yeah, the question is what do people use in the food for prior and would that also translate

13:34.600 --> 13:38.760
over to the quantum backend? People have done a lot of recommended systems, a lot of

13:38.760 --> 13:44.200
similarity calculations, a lot of analytics. I think that the quantum stuff, the

13:44.200 --> 13:48.920
the end goal, will be to be able to run workloads in the quantum stuff. I'm really,

13:48.920 --> 13:51.560
do you know more about the use cases for quantum that would be different?

13:53.640 --> 13:58.520
Yeah, I mean that to be fair goes to why do use a classical computer versus why use a quantum

13:58.520 --> 14:03.480
computer? And as I understand it, the answer is their different use cases. So

14:04.360 --> 14:10.040
we're probably not, until we get to some sort of singularity, and I don't know how far

14:10.040 --> 14:15.720
different use of this in the future, where those kind of problems start happening, or you're

14:15.720 --> 14:17.080
getting more crossover.

14:26.760 --> 14:29.320
That is a great idea, and we could probably do that, yes.

14:30.280 --> 14:36.840
More distributed. There was actually a workflow prior where it did an analysis of your job,

14:36.840 --> 14:41.640
and it did, it was able to decide what solvers to use and things like that. So yeah, that would be a

14:41.640 --> 14:45.000
great, a great picture. Yeah, thanks.

14:48.840 --> 14:57.160
Question? Commons? What would we get wrong? Thanks a lot. Thank you.

