 All right, so we're close to break time and our next speaker is right here with the next section is going to be focused on product recommendation ecosystem on Kubernetes using Aga workflow and this is going to be taken by Osinachi and Osinachi is a software engineer and technical writer building within the African tech ecosystem. Osinachi enjoys building solutions on web three and also extending the web, extending the web using WebAssembly when Osinachi isn't coding he enjoys reading books. Good to have you here, Osinachi. Okay, yeah thank you, thank you Anika, to everyone. So I'll just get started immediately, right? Yes, yes you can. Can you try sharing your screen? Let's see if it works. Okay, right. One minute. We'll be going on a very short break while Osinachi figures out the permission issues. Hey, Osinachi, are you ready to go? So, are you good to go? Thanks, my friend. All right. Yes, you can see that now. I'm doing some background music. Okay. Okay, I think you're good to go. We are ready. All right. So, hi everyone. Today I'm talking about product recommendation system on Kubernetes using Agu workflows, right? And yeah, that's the bit about me. I love working with cloud native tools that pertain to data engineering and AI, right? So, let's get to product recommendation. And you're probably ahead of it, maybe when you're using a website and you're scrolling infinitely and you keep seeing things being recommended to you, videos, maybe TikTok, you keep seeing a new video being shown on your screen, right? So there's an algorithm working at the back to make this happen, right? So it's we have recommender systems in a lot of places. I think most products, most modern products have one form of recommendation system on another because of the sheer amount of data present in these products and generated by users with these big companies that have these products want to make the, want to make the most money, right? So they would want to recommend the product that user would likely buy or user will likely watch something that the user will want, personalizing experiences basically, right? So say you're like on Konga, Konga is like a market. It's like an e-commerce platform that is present in Africa, I guess. So, and you want to purchase, say, a modern or a MiFi, right? So if you scroll to the download, see similar products, right? So there are different algorithms that are used to achieve this product recommendation. We could do it strictly based on visual similarity. Like you look at this one, if you look at this one, it's kind of similar to the one shown at the first two products recommended, right? So if we use strictly based on our recommendation strictly on visual similarity, might not get the best results, right? But usually they use a combination of algorithms or a combination of methods to achieve product recommendation. But we won't be focusing on the recommendation in this talk, right? So this talk is more about the pipeline that makes product recommendation possible, right? So why Kubernetes, why not just do this product recommendation on a virtual machine somewhere? So training on 7 is hard at scale, right? Training on 7 machine learning models is hard at scale. I think that's the whole point of Kubernetes, to be able to auto-scale your containers or auto-scale your containers basically when you need more compute, right? So if you are running a large e-commerce business and say you are improving your product recommendation model every day, you want to keep running the model maybe every day by 6 p.m., I know. And some days you might have more data coming into your app and other days you have less, so you want Kubernetes to control all of this. Yeah, so what's this algo workflows thing? So algo workflows is Kubernetes native pipeline orchestration. So what's that? So it's all about pipelines, right? So we see pipelines a lot when we deal with real world applications and deployments and stuff like that. So even the normal way we develop applications is using a kind of CICD way, even if you're not fully using CICD or GitOps, right? So if you commit some code, the code goes through several processes of building and testing until it's ready to reserve to customers or the end users, right? So it's a similar thing for machine learning pipelines. So your data, you want to get your data from just data to a machine learning model that can be used in real world applications. And it's all structured in a pipeline format. It starts from you preparing your data, no matter where they die store, realize the database or the file storage, training a machine learning model on that data, testing the model, packaging it, deploying it, and serving it up to who it's like a very similar pipeline to how you do it code, but in this case, machine learning models. So normally, when you're developing the machine learning model, right, if you've worked with machine learning, if you've worked with data scientists, you'd see them using Chimta notebooks or similar notebooks. There are notebooks on a colab, cargo, notebooks everywhere, basically. So these notebooks will help them develop to their data cleaning and the whole thing that they do for making data out of the riggy and making their model fits the data. Now we're talking about them moving away from these notebooks and moving to containers, but it's kind of still, it's just similar. But in this case, they work with their notebooks and commit their notebook into, say, a Github repo and we run a pipeline that can take their code, containerize it, and put it in a pipeline, right? So let me go back a bit. So AguWalkluse, it helps you think in terms of containers. You can use AguWalkluse for quite a number of things, not just machine learning pipelines. We use it for data processing, CICD, and a few other things. So for machine learning pipelines, you'd like pre-process your data first, extract features, depending on the machine learning process you're using here, right? So you don't like all the steps that you do in like the normal machine learning flow. You want to break it down into containers, right, and connect those containers together. And if you do connect them together, you'd be able to I know you'd be able to get your machine learning model already from start to end, right? So this is how you normally use AguWalkluse. You'd like, you deploy the AguWalkluse on Kubernetes. It's like a custom resource. It's like, it's a custom resource, right? You deploy it on Kubernetes, and you write your workflow in Yamil. You can also write it in Python, then compile it down to Yamil. Then you submit your work with Kubernetes, and Kubernetes starts the workflow. So we're going to see that in a bit. So like, let's go back to our product recommendation. I mentioned the steps earlier, but let's just show you very simple, very simple model here, right? So we, this is something called a, it's just a pipeline, right? Some people call it DAG. Some people call it DAG, directed acyclic graph. It's basically a graph. But this one is straight. Sometimes it branches up. So we have the stats, then we have some pre-processing, and we have training, then we have maybe other things like testing that goes on in the register step. All right, so let me just do a bit of the demo. I'm going to stop presenting this. Am I still audible? Am I still live? So here I have a pipeline in Yamil that contains a workflow, an example workflow. So I'm going to just quickly explain this. So agro workflows, like I said earlier, it's, you write it in Yamil. So it consists of something called templates. And these templates are like functions, right? So the main thing in agro workflows is templates. And the templates are like functions. And these functions are those steps in your pipeline. So we have a pre-process. We have, first we have a product recommender function. It's like the entry point. And it's defined here. Then we have a pre-process step, a training step, a register step. So let's go to the entry point. In the entry point, we have something called a DAG. The DAG is like directed acyclic graph. So it's basically just the pipeline. And this DAG has tasks. And we have sheet tasks, the pre-process, the train and the register. So I guess the main thing, then other things are just like helping this one. So this task, the code, or the instructions for it as the template is defined here. And for the training, we also have the template here and the register here. So I'm just going to go into ecubaneses cluster that I set up on Azure. I'm going to SSH into a ZMI setup. And I'll start Minikubes. So while Minikubes is starting, so AguWalkluse also has a dashboard. It has a dashboard. I'm going to open it up in a bit. Just Minikubes load up in a few seconds. Minikubes have started. So I've really deployed AguWalkluse on this ecubaneses environment. That's this Minikubes cluster. I'm just going to get the code. I deployed it on a new space Agu. So we don't have it running. We don't have the server running yet. It's actually restarting. So I think in a few minutes, it's going to start fully. Just have to check. So when it does that, we can submit our workflow to it and to run our workflow and we do all the processing. So I'm just going to go back to the code and explain the bit more. So when I said we do everything in terms of containers, it means you're going to define your processes in containers. So I have here, I have here the Jupyter Notebook that I did that try to go help from my friend. So we did the machine learning, the whole data processing and model fitting here. So what I did was to copy the code from here and transfer it through these folders. So these folders contain the files that will be packaged into containers. So each of the folder has its own Dockerfile. So you set up an automated pipeline that will build the containers. That will build containers for each of the folders or each of the steps. So you build the containers and push it to your registry, whatever registry you want to push it to or whatever registry you're using. And when you do push it, the workflow template here is going to pull it. So here I push them to Docker, push them to Docker Hub. So that's why you have this image here. You're going to pull these images from Docker Hub and run the containers. Just check with a minute if I started. Yeah, so it has started running now. So I'm just going to go here and I'm going to SSH into the server or connect the server to my local. Yeah, I meant to, I meant to, I meant to put forward it. And I put forward it. So for some weird reason, all your runs on HTTPS. So this workflow I submitted earlier, but normally when you submit a workflow, you just maybe copy and paste the user automated process. So let me open the end of this here. I'm going to SSH into this folder. So if we copy this code and like create a workflow, so let's say nano products.com.yaml, then we submit it just with the help of submit on the namespace as we can watch, we can watch how the workflow runs. Let's copy it from here. So it's running now. Now we're running it in watch mode. Basically to run the first process and run the other process. So we're going to check the dashboard. It's running the first pooling the images, pre-processing the data, then running the training model, running the training container. After that one is trained, it's going to run the register container or code as you call it. Any minute now it's going to consist. So I think actually connect the front end interface. But I found something very similar done by AEG. And so the idea is like we have these products. And when we do click on a product, it's it's run through the model, through the train model. This is our pipeline was basically for training. This is like set up a pipeline for inference. When you click on the model, it's it's wrong. It sends the image through, it sends the image through the trained model, then gives you recommendations and you like display the recommendations. So that's like the basic idea of running such a pipeline on Kubernetes. And I go up to it. It's like, it's like a bare basic. It's like the bare basic pipeline. It's like a very bare pipeline, need your own Kubernetes. There's something even like a built on Aguaflows basically. And that's Qflow. So Qflow is easier, like more of an end to end way of running machine learning pipelines or machine learning processes on Kubernetes. But it's still built on Aguaflows. So having no Aguaflows can be like it was, right? You can apply the knowledge using in say, machine learning pipelines to do CI, CD or Kubernetes. So that's it basically. So that's my talk. I guess we'll have go for questions now. Awesome. Thank you so much for that session. If you have any questions, you can drop it in the chat. And well, I believe it's actually take your answers. All right. It seems like we don't have any questions for now. In the meantime, think of any questions you can always refer back to the social media handle. Please drop it in the YouTube channel. So we can always reach out to you. You can always refer to a Sinachi social media handle and ask your questions on there. And you can always refer back to this recording. If you're just jumping in. I think this is the last session before break. Who's excited? Yes. So thank you so much to Sinachi for that awesome session. It was good to have you here.