WEBVTT 00:00.000 --> 00:08.000 We can start with the next call. 00:08.000 --> 00:15.000 So actually it's going to talk about some of the open search tools that the end is 00:15.000 --> 00:19.000 in my writing for Magnostic. 00:19.000 --> 00:21.000 Thank you, Rosanto. 00:21.000 --> 00:22.000 Hi everyone. 00:22.000 --> 00:24.000 So my name is Arshit. 00:24.000 --> 00:28.000 I'm from India and I work with Kubrick as a quantum software engineer. 00:28.000 --> 00:32.000 And today I'm going to be talking about open source tools for platform, 00:32.000 --> 00:34.000 agnostic, quantum computing. 00:34.000 --> 00:35.000 That's a lot to take in. 00:35.000 --> 00:36.000 So we're with me. 00:36.000 --> 00:40.000 And it's going to be a little bit similar in the talk that we had just now, 00:40.000 --> 00:42.000 with QMAT, but a lot more than that. 00:42.000 --> 00:44.000 So let's get started. 00:44.000 --> 00:46.000 So the agenda is threefold. 00:46.000 --> 00:49.000 First, we're going to be talking what exactly is Kubrick. 00:49.000 --> 00:51.000 What are the motivations in why we exist? 00:51.000 --> 00:54.000 Then we're going to be diving into the open source tools, 00:54.000 --> 00:55.000 which we have read. 00:56.000 --> 00:58.000 The first and the foremost is the Kubrick SDK. 00:58.000 --> 01:00.000 In this, we have two components. 01:00.000 --> 01:03.000 The Kubrick runtime and the Kubrick transpiler, 01:03.000 --> 01:08.000 which enables users to develop platform agnostic algorithms. 01:08.000 --> 01:13.000 And then finally, I'm going to be talking about a relatively new tool. 01:13.000 --> 01:16.000 That's called piecasm, which is, you know, 01:16.000 --> 01:19.000 transformation analysis of quantum assembly language with Python. 01:19.000 --> 01:21.000 So let's get started. 01:21.000 --> 01:24.000 So first of all, let's understand why Kubrick. 01:24.000 --> 01:27.000 And imagine your user, and you're trying to get into quantum, 01:27.000 --> 01:29.000 or you're already in quantum, right? 01:29.000 --> 01:31.000 And think of your initial days. 01:31.000 --> 01:32.000 So what do you do? 01:32.000 --> 01:33.000 You learn a bunch of theory. 01:33.000 --> 01:37.000 You learn a bit of linear algebra or some quantum information signs. 01:37.000 --> 01:40.000 And then you want to actually run your quantum circuits, 01:40.000 --> 01:43.000 first on the simulator, and then on the hardware, right? 01:43.000 --> 01:45.000 How do you get access to that hardware? 01:45.000 --> 01:48.000 And let's say once you've learned a particular package, 01:48.000 --> 01:52.000 how do you, you know, run your circuits to different hardware, right? 01:52.000 --> 01:55.000 You know, the problem that are found are also face like, 01:55.000 --> 01:56.000 I would say, four years ago. 01:56.000 --> 01:58.000 And that is how Kubrick was born. 01:58.000 --> 02:01.000 To be a one-stop platform, enabling quantum computing, 02:01.000 --> 02:04.000 and not having as, you know, the last speaker said, 02:04.000 --> 02:07.000 vendor lock-in, right? 02:07.000 --> 02:10.000 So this is one feature that we have. 02:10.000 --> 02:12.000 That's called the Kubrick lab. 02:12.000 --> 02:15.000 What Kubrick lab provides is quantum software development 02:15.000 --> 02:16.000 in the cloud itself. 02:16.000 --> 02:20.000 And I'm going to be showing a quick demo after this slide. 02:20.000 --> 02:23.000 And you can, you know, pretty easily start working 02:23.000 --> 02:26.000 with any particular quantum computing package, 02:26.000 --> 02:30.000 like Kiskit or Amazon's bracket or Serk or Google Serk. 02:30.000 --> 02:34.000 And also use Kubrick SVK, which is our open source tool, 02:34.000 --> 02:38.000 to, you know, integrate your quantum jobs on different hardware. 02:38.000 --> 02:39.000 Okay? 02:39.000 --> 02:42.000 And let's have some moving pieces now. 02:42.000 --> 02:43.000 So this is a demo. 02:43.000 --> 02:47.000 This is, this is what you, you know, 02:47.000 --> 02:50.000 live at when you land at Kubrick.com. 02:50.000 --> 02:53.000 And whenever you click start now, this is our account page. 02:53.000 --> 02:56.000 This represents what kind of plan you have, 02:56.000 --> 02:58.000 how many credits you have. 02:58.000 --> 03:00.000 And for the purposes of this demo, 03:00.000 --> 03:02.000 I'm going to be talking about three services, 03:02.000 --> 03:06.000 quantum jobs, devices, and lab environment manager. 03:06.000 --> 03:07.000 Why? 03:07.000 --> 03:09.000 Because they use the open source tools, 03:09.000 --> 03:12.000 which I'm going to be talking about, post this demo. 03:12.000 --> 03:13.000 Okay? 03:13.000 --> 03:18.000 So first, let's, you know, talk about quantum jobs, right? 03:18.000 --> 03:21.000 So let's say you have any particular vendor, 03:21.000 --> 03:23.000 you want to execute your quantum circuit on. 03:23.000 --> 03:26.000 You can see that through this interface. 03:26.000 --> 03:28.000 This is called the quantum jobs interface. 03:28.000 --> 03:30.000 And you can click on any particular job, 03:30.000 --> 03:33.000 and see the details regarding how many Kubricks 03:33.000 --> 03:35.000 were present in that job, or, you know, 03:35.000 --> 03:38.000 what was the circuit depths, 03:38.000 --> 03:41.000 whether they were any measurements or not in that particular job. 03:41.000 --> 03:44.000 And the details about the provider on which this job was run. 03:44.000 --> 03:45.000 Okay? 03:45.000 --> 03:47.000 This is regarding quantum jobs. 03:47.000 --> 03:49.000 Then comes the devices. 03:49.000 --> 03:52.000 So we have a lot of integrations with different vendors, 03:52.000 --> 03:56.000 which provide their simulators and hardware through our platform. 03:56.000 --> 03:58.000 So for the sake of this example, 03:58.000 --> 04:00.000 I will, for the sake of this presentation, 04:00.000 --> 04:03.000 I'll take the example of AWS's state vector simulator. 04:03.000 --> 04:06.000 Here what you can do is that you can just, 04:06.000 --> 04:08.000 get some details about the device, 04:08.000 --> 04:12.000 and the computing, the cubits, and the availability of the device. 04:12.000 --> 04:14.000 And what is the form of access? 04:14.000 --> 04:18.000 So here it's bracket, that's the package, which AWS has developed. 04:18.000 --> 04:21.000 And next, we're going to be talking about the lab environment manager. 04:21.000 --> 04:25.000 That is present in the cubrid lab environment, 04:25.000 --> 04:28.000 which is launched right now. 04:28.000 --> 04:31.000 That is a feature which allows you to, you know, 04:31.000 --> 04:34.000 develop Python virtual environments directly in the cloud 04:34.000 --> 04:37.000 and persists them across your sessions. 04:37.000 --> 04:40.000 So this is the lab interface, and this is very much like Colab, 04:40.000 --> 04:43.000 but a lot more tuned towards quantum computing. 04:43.000 --> 04:44.000 Okay? 04:44.000 --> 04:46.000 This is the lab environment manager. 04:46.000 --> 04:49.000 You have a lot of environments pertaining to a user. 04:49.000 --> 04:51.000 And you have a lot of environments, 04:51.000 --> 04:54.000 which are publicly available for any user to install and work with. 04:54.000 --> 04:56.000 This is what I'm scrolling right now. 04:56.000 --> 04:59.000 Let's take an example of, let's say, Penny Lane. 04:59.000 --> 05:01.000 This is Zanadoos environment and we click Install. 05:01.000 --> 05:05.000 That will be available for any user in their personal environment, 05:05.000 --> 05:06.000 which you can see here. 05:06.000 --> 05:09.000 And you can just click on it, activate it, and there you go. 05:09.000 --> 05:14.000 You can start using your Jupiter notebooks right with this environment's kernel. 05:14.000 --> 05:15.000 Okay? 05:15.000 --> 05:20.000 I already have Cubid SDK installed, and we can just add the kernel for that particular environment. 05:20.000 --> 05:26.000 We can click on that notebook and run with all the good stuff present in that kernel for that notebook. 05:26.000 --> 05:31.000 So this was kind of setting the background for the tools. 05:31.000 --> 05:37.000 And the most important ones are Cubid SDK and Pycasm. 05:37.000 --> 05:41.000 And let's talk about Cubid SDK now. 05:41.000 --> 05:50.000 So as you saw that Cubid SDK is a tool, which allows users to not think about how they're going to do something. 05:50.000 --> 05:52.000 But mostly about what they want to do. 05:52.000 --> 05:55.000 Let's say a user wants to write a quantum program. 05:55.000 --> 05:59.000 They only think about what's going to be the algorithmic details, 05:59.000 --> 06:00.000 but not the implementation details. 06:00.000 --> 06:03.000 So that is like the core motivation of Cubid SDK. 06:03.000 --> 06:06.000 And yeah, it's available on Pyp. 06:06.000 --> 06:08.000 You can install it, you can want to be turned. 06:08.000 --> 06:10.000 So yeah. 06:10.000 --> 06:13.000 And the feature right now I'm going to be talking about is Cubid runtime. 06:13.000 --> 06:20.000 What this does is, you know, material for after we talk about what the problem it's solving. 06:20.000 --> 06:21.000 Right? 06:21.000 --> 06:26.000 Let's first imagine that you are a user and you have a high level programming language. 06:26.000 --> 06:30.000 And you want to execute your program on a quantum computer. 06:30.000 --> 06:31.000 How do you do that? 06:31.000 --> 06:33.000 Well, it's not very trivial. 06:33.000 --> 06:39.000 You need to, you know, go through converting a program into an IR or an intermediate representation. 06:39.000 --> 06:44.000 Go through the, you know, stuff of client side management authentication. 06:44.000 --> 06:45.000 So on and so forth. 06:45.000 --> 06:51.000 Then billing and then finally executing on the hardware and then getting back the results and transforming them. 06:51.000 --> 06:52.000 Right? 06:53.000 --> 06:55.000 This is not very easy. 06:55.000 --> 06:57.000 And this is why we have built Cubid runtime. 06:57.000 --> 07:00.000 What it does is that it will take your program. 07:00.000 --> 07:04.000 It will convert that to device specific constraints, 07:04.000 --> 07:07.000 such as the gate set of a device or what kind of topology you have. 07:07.000 --> 07:11.000 Then finally it will convert that to a quantum program IR, 07:11.000 --> 07:15.000 which can be opened for under assembly language or it can be, 07:15.000 --> 07:18.000 the LLVM IR that is the QIR representation. 07:18.000 --> 07:21.000 And then finally you have the client side authentication, 07:21.000 --> 07:25.000 which is built into Cubid, which interacts with the Cubid API on the backend. 07:25.000 --> 07:28.000 So this is, you know, about Cubid runtime. 07:28.000 --> 07:32.000 And now we will see another demo of Cubid runtime. 07:32.000 --> 07:35.000 This is just another condensed information. 07:35.000 --> 07:40.000 So, okay. 07:49.000 --> 07:51.000 All right. 07:51.000 --> 07:54.000 So I have a Jupyter notebook running locally. 07:54.000 --> 07:56.000 And just to highlight that this is all local. 07:56.000 --> 07:59.000 You can also prep install Cubid and start working on this notebook. 07:59.000 --> 08:00.000 Right? 08:00.000 --> 08:02.000 Given you have set it up correctly. 08:02.000 --> 08:04.000 So yeah, you can prep install Cubid. 08:04.000 --> 08:06.000 I'm not going to be doing that here. 08:06.000 --> 08:08.000 You can print the version. 08:08.000 --> 08:12.000 There are some extractions present here such as the provider or the device. 08:12.000 --> 08:14.000 You're trying to run your program on. 08:14.000 --> 08:19.000 Provider here is Cubid because we are hosting all of these simulators, 08:19.000 --> 08:21.000 which you are, you know, seeing here. 08:21.000 --> 08:22.000 Okay. 08:22.000 --> 08:25.000 And then we can choose for the sake of this demo, 08:25.000 --> 08:27.000 the AWS is straight vector simulator. 08:27.000 --> 08:31.000 And you can clearly see that the target specification, 08:31.000 --> 08:35.000 or the program type it expects is bracket, 08:35.000 --> 08:37.000 which has been developed by AWS. 08:37.000 --> 08:41.000 And for here, we're just going to be preparing a GFZ state. 08:41.000 --> 08:43.000 This is a very simple max million times in the state. 08:43.000 --> 08:48.000 And you will set a short. 08:48.000 --> 08:50.000 I mean, a key point to note here, 08:50.000 --> 08:52.000 we're going to be building in packages, 08:52.000 --> 08:54.000 which are not directly supported on AWS. 08:54.000 --> 08:57.000 Here we're building in search, which is a Google package. 08:57.000 --> 08:59.000 Post that will build and kiss it. 08:59.000 --> 09:02.000 And then send directly to the AWS simulator, 09:02.000 --> 09:06.000 so that we can, you know, see how good Cubid SDK is. 09:06.000 --> 09:09.000 This will take some time because obviously this is interacting 09:09.000 --> 09:14.000 with the actual AWS packet, but I will end here on the jobs. 09:14.000 --> 09:20.000 And just to explain a little bit, 09:20.000 --> 09:23.000 this is the simulator object. 09:23.000 --> 09:26.000 We run the circuit, and hey, we got results. 09:26.000 --> 09:27.000 Okay. 09:27.000 --> 09:30.000 And these are the probability of our results. 09:30.000 --> 09:33.000 Similar case is with the kiss kit, 09:33.000 --> 09:36.000 circuit, we again take the AWS simulator, 09:36.000 --> 09:39.000 run the kiss kit, circuit, get the results back, and display them. 09:39.000 --> 09:43.000 Okay, so this is just, you know, promoting the efficacy of Cubid, 09:43.000 --> 09:46.000 that we are actually using different packages to run 09:46.000 --> 09:49.000 circuits on different devices. 09:49.000 --> 09:52.000 Okay, getting back to the presentation. 10:06.000 --> 10:13.000 All right. 10:13.000 --> 10:17.000 So yeah, as you saw that this enables agnostic quantum development. 10:17.000 --> 10:21.000 You can code in any package and execute on any backend with Cubid. 10:21.000 --> 10:24.000 And you can also see our runtime user guide, which we have on docs. 10:24.000 --> 10:26.000 We currently integrate with kiss kit, 10:26.000 --> 10:29.000 a Microsoft Azure, then AWS, OQC, 10:29.000 --> 10:32.000 IonQ, they're also other providers as Cubera, 10:32.000 --> 10:34.000 and any C, which are integrated, 10:35.000 --> 10:37.000 but these are one of the foremost. 10:37.000 --> 10:40.000 And yeah, this was the demo for runtime. 10:40.000 --> 10:42.000 Now let's go behind the scenes. 10:42.000 --> 10:43.000 How do we do that? 10:43.000 --> 10:46.000 So we have something called a Cubid Transpiler, 10:46.000 --> 10:49.000 which detects and makes your circuits 10:49.000 --> 10:52.000 run-able on a quantum device, right? 10:52.000 --> 10:54.000 Let's dive into the details of that. 10:54.000 --> 10:57.000 It allows you to convert one package to another, 10:57.000 --> 11:01.000 transform your, you know, program to device specific requirements, 11:01.000 --> 11:05.000 and then finally also enables access to any optimizations that you have 11:05.000 --> 11:07.000 in a particular package, right? 11:07.000 --> 11:10.000 Because that's integrated with our SDK. 11:10.000 --> 11:12.000 The model is similar to a graph. 11:12.000 --> 11:15.000 I think most of you are familiar with the graphs in the redesigns. 11:15.000 --> 11:19.000 Every single node we have is a quantum computing package, 11:19.000 --> 11:24.000 and an edge to another package is a conversion path. 11:24.000 --> 11:26.000 So let's say we choose search, 11:26.000 --> 11:29.000 and you want to convert to, let's say, kiss kit. 11:29.000 --> 11:31.000 We can go through search, bracket, kiss kit, 11:31.000 --> 11:34.000 or we can choose to cancel and do to kiss kit. 11:34.000 --> 11:36.000 So this is our Transpiler model. 11:36.000 --> 11:38.000 This is our works behind the scenes. 11:38.000 --> 11:42.000 And a test, do ensure that there is unitary equivalence, 11:42.000 --> 11:46.000 or basically there's no loss between converting one particular circuit 11:46.000 --> 11:48.000 from one package into another, 11:48.000 --> 11:51.000 and we have a very robust unit test for that. 11:51.000 --> 11:53.000 And you can easily execute as we saw a kiss kit 11:53.000 --> 11:56.000 so we can get on an Amazon back. 11:56.000 --> 12:01.000 So you can also see code here, which is present in our bit of repo. 12:01.000 --> 12:06.000 And this is like the example for the conversions. 12:06.000 --> 12:10.000 Let's say you take kiss kit, which is IBM's quantum computing package. 12:10.000 --> 12:12.000 You call Cubrid or Transpile on it. 12:12.000 --> 12:14.000 You take the circuit, you take the target, 12:14.000 --> 12:16.000 and then you can, you know, Transpiler, 12:16.000 --> 12:17.000 circuit to let's say AWS, 12:17.000 --> 12:21.000 search, open gasm, penny lane, or anything else. 12:21.000 --> 12:23.000 Again, this is our demo node book, 12:23.000 --> 12:27.000 which you can, you know, see to just see this in action. 12:27.000 --> 12:29.000 So flag that. 12:29.000 --> 12:32.000 Now, finally, we also have a pretty vibrant community, 12:32.000 --> 12:36.000 and we have a lot of issues and help required in Cubrid SDK, 12:36.000 --> 12:38.000 and other open source tools. 12:38.000 --> 12:41.000 And we also participate in Unitary Hack, 12:41.000 --> 12:43.000 in which contributors can actually, you know, 12:43.000 --> 12:48.000 submit PRs to different issues that we've registered for the Unitary Hack. 12:48.000 --> 12:51.000 And currently, we also have part of the QOSF mentorship program, 12:51.000 --> 12:54.000 which is a quantum open source foundation, 12:54.000 --> 12:57.000 where there are different cohorts for different mentees 12:57.000 --> 13:00.000 to participate in and develop cool projects. 13:00.000 --> 13:01.000 So, yeah. 13:01.000 --> 13:03.000 And now, let's talk about PyCasm. 13:03.000 --> 13:07.000 So, PyCasm is a tool, which we have recently developed 13:07.000 --> 13:11.000 for, you know, open gasm program transformation and analysis. 13:11.000 --> 13:13.000 And this is also a PayPal installable. 13:13.000 --> 13:15.000 You can, you know, play around with it. 13:15.000 --> 13:18.000 You don't even require any kind of, you know, access from Cubrid 13:18.000 --> 13:20.000 to interface with it. 13:20.000 --> 13:22.000 So, let's think about motivations first. 13:22.000 --> 13:25.000 And for those of you who don't know, open gasm 13:25.000 --> 13:27.000 or open quantum assembly language, 13:27.000 --> 13:30.000 is one of the most popular IRs in quantum. 13:30.000 --> 13:32.000 And that the effort has been, you know, 13:32.000 --> 13:35.000 undergoing with IBM lot. 13:35.000 --> 13:38.000 And gasm version 3.x, which was released, you know, 13:38.000 --> 13:41.000 in recent years, has a very extensive grammar. 13:41.000 --> 13:44.000 So, it is almost like Python, if you see it. 13:44.000 --> 13:47.000 And there are tools with support, 13:47.000 --> 13:49.000 type check-in, and semantic analysis. 13:49.000 --> 13:51.000 But there is not a tool with support, 13:51.000 --> 13:53.000 comprehensive semantic analysis. 13:53.000 --> 13:56.000 So, for example, if you see here, 13:56.000 --> 13:58.000 this is an open gasm code segment. 13:58.000 --> 14:00.000 You can see there are functions involved. 14:00.000 --> 14:02.000 There are Cubrid declarations involved. 14:02.000 --> 14:03.000 There are loops involved. 14:03.000 --> 14:06.000 Then there are, you know, types involved. 14:06.000 --> 14:09.000 How do we actually make this open gasm program, 14:09.000 --> 14:11.000 runnable on a quantum device? 14:11.000 --> 14:13.000 Because those devices just support, you know, 14:13.000 --> 14:14.000 let's say the Clifford set. 14:14.000 --> 14:16.000 Or let's say the RZ plus Cx set. 14:16.000 --> 14:17.000 So, something like that. 14:17.000 --> 14:19.000 Sorry, RZ plus Cx. 14:19.000 --> 14:21.000 So, this is the main motivation. 14:21.000 --> 14:25.000 And currently, we have extensive support for each of these features, 14:25.000 --> 14:28.000 which are, you know, present on this, and more. 14:28.000 --> 14:32.000 And a feature which I'd like to highlight is program 14:32.000 --> 14:34.000 unrolling and validation. 14:34.000 --> 14:37.000 So, by unrolling here, I mean, let's say, 14:37.000 --> 14:39.000 we have a very large program, 14:39.000 --> 14:42.000 and we want to decompose it down into sequential instructions, 14:42.000 --> 14:44.000 which a quantum computer can execute. 14:45.000 --> 14:46.000 That is what unrolling is. 14:46.000 --> 14:49.000 And we also have some support for transformation analysis, 14:49.000 --> 14:52.000 wherein you can, you know, plug in your quantum program, 14:52.000 --> 14:53.000 the open gasm program. 14:53.000 --> 14:55.000 Then, you know, start analyzing, like, 14:55.000 --> 14:57.000 how many number of Cubrids should we have, 14:57.000 --> 14:59.000 what's the depths of the program? 14:59.000 --> 15:02.000 Do we have barriers or measurements or so on and so forth? 15:04.000 --> 15:06.000 This is the complete directory, 15:06.000 --> 15:08.000 and just spit out errors if there are n. 15:08.000 --> 15:10.000 So, that was about pikasm. 15:11.000 --> 15:14.000 And these are the references. 15:14.000 --> 15:17.000 These are, you will have to access the slide 15:17.000 --> 15:18.000 because these are links. 15:18.000 --> 15:21.000 It didn't add the full URL fair. 15:21.000 --> 15:25.000 And these are the contact information. 15:25.000 --> 15:27.000 Thank you. 15:27.000 --> 15:37.000 Thank you. 15:37.000 --> 15:40.000 Any questions? 15:40.000 --> 15:47.000 Actually, actually, I have a Q and I'll see you next week. 15:47.000 --> 15:48.000 Yeah. 15:48.000 --> 15:49.000 Yeah. 15:49.000 --> 15:51.000 Yeah. 15:51.000 --> 16:00.000 So, initially, what we came from was a hub and spokes model. 16:00.000 --> 16:02.000 Oh, yeah, sorry. 16:02.000 --> 16:06.000 So, he's asked that the transpiler, 16:06.000 --> 16:09.000 why is the transpiler model going on? 16:09.000 --> 16:10.000 Yes. 16:10.000 --> 16:14.000 So, initially, what we came from was a hub and spokes model. 16:14.000 --> 16:16.000 Oh, yeah, sorry. 16:16.000 --> 16:19.000 So, he's asked that the transpiler, 16:19.000 --> 16:21.000 why is the transpiler model the way it is? 16:21.000 --> 16:24.000 And like, it might be that there's a lot of work 16:24.000 --> 16:26.000 which has been put into it and it can be 16:26.000 --> 16:28.000 probably simplified, right? 16:28.000 --> 16:29.000 From not wrong. 16:29.000 --> 16:31.000 So, initially, what we had was a hub and spokes model. 16:31.000 --> 16:34.000 Where the center there was chasm and every, you know, 16:34.000 --> 16:37.000 every provider went through chasm and then 16:37.000 --> 16:38.000 through the other package. 16:38.000 --> 16:40.000 Something like a bicycle wheel, right? 16:40.000 --> 16:41.000 Yes, folks. 16:41.000 --> 16:44.000 But what we found that our native converters 16:44.000 --> 16:47.000 couldn't actually match those speed of conversions, 16:47.000 --> 16:49.000 which was present in direct converter. 16:49.000 --> 16:53.000 So, for example, let's take the example of, let's say 16:53.000 --> 16:54.000 bracket to cascade, right? 16:54.000 --> 16:58.000 So, if there is a package which directly converts 16:58.000 --> 17:01.000 bracket to cascade and back and back, 17:01.000 --> 17:04.000 then we couldn't actually use that speed or, you know, 17:04.000 --> 17:06.000 their functionality. 17:06.000 --> 17:08.000 So, what we tried to do is that combine, you know, 17:08.000 --> 17:12.000 the best of both worlds and develop a graph-based model. 17:12.000 --> 17:15.000 And this is not complete because the edges also have weights. 17:15.000 --> 17:18.000 So, if the, you know, if the, if we can really not exactly 17:18.000 --> 17:21.000 what we do, is that we try to find out decomposers 17:21.000 --> 17:24.000 in the current package, decompose the program, 17:24.000 --> 17:26.000 and then try to convert, you know, 17:26.000 --> 17:29.000 one-to-one map from the source to target. 17:29.000 --> 17:31.000 And that occurs loss. 17:31.000 --> 17:33.000 So, that means the edges are actually more weighted 17:33.000 --> 17:34.000 if we do not have direct converter. 17:34.000 --> 17:36.000 So, something like that. 17:36.000 --> 17:37.000 Thank you. 17:37.000 --> 17:40.000 Any other questions? 17:40.000 --> 17:43.000 Any other questions? 17:43.000 --> 17:44.000 Any other questions? 17:44.000 --> 17:45.000 Any other questions? 17:45.000 --> 17:46.000 Any other questions? 17:46.000 --> 17:48.000 Any other questions? 17:48.000 --> 17:50.000 Any one more. 17:50.000 --> 17:52.000 Any one more question? 17:52.000 --> 17:53.000 Any one more thing? 17:53.000 --> 17:54.000 Any other questions? 17:54.000 --> 18:02.000 Any other questions? 18:02.000 --> 18:04.000 Any other questions? 18:04.000 --> 18:07.000 Any other questions? 18:07.000 --> 18:08.000 . 18:08.000 --> 18:09.000 . 18:09.000 --> 18:10.000 . 18:10.000 --> 18:11.000 . 18:11.000 --> 18:12.000 . 18:12.000 --> 18:13.000 . 18:13.000 --> 18:14.000 . 18:14.000 --> 18:15.000 . 18:15.000 --> 18:16.000 . 18:16.000 --> 18:17.000 . 18:17.000 --> 18:20.000 Yeah, you can use that because. 18:20.000 --> 18:21.000 . 18:21.000 --> 18:22.000 Yeah. 18:22.000 --> 18:23.000 . 18:23.000 --> 18:25.000 So as Andrew has said, can we directly use the 18:25.000 --> 18:26.000 . 18:26.000 --> 18:27.000 . 18:27.000 --> 18:28.000 . 18:28.000 --> 18:29.000 . 18:29.000 --> 18:30.000 . 18:30.000 --> 18:31.000 . 18:31.000 --> 18:33.000 . 18:33.000 --> 18:34.000 . 18:34.000 --> 18:35.000 . 18:35.000 --> 18:36.000 . 18:36.000 --> 18:37.000 . 18:37.000 --> 18:38.000 . 18:38.000 --> 18:39.000 . 18:39.000 --> 18:40.000 .. 18:40.000 --> 18:41.000 . 18:41.000 --> 18:42.000 . 18:42.000 --> 18:43.000 Yeah. 18:43.000 --> 18:44.000 . 18:44.000 --> 18:46.000 . 18:46.000 --> 18:47.000 . 18:47.000 --> 18:48.000 . 18:48.000 --> 18:50.000 . 18:50.000 --> 18:51.000 . 18:51.000 --> 18:52.000 . 18:52.000 --> 18:54.000 . 18:54.000 --> 18:55.000 . 18:55.000 --> 18:56.000 . 18:56.000 --> 18:58.000 . 18:58.000 --> 19:02.000 .