
EDGE AI POD
Discover the cutting-edge world of energy-efficient machine learning, edge AI, hardware accelerators, software algorithms, and real-world use cases with this podcast feed from all things in the world's largest EDGE AI community.
These are shows like EDGE AI TALKS, EDGE AI BLUEPRINTS as well as EDGE AI FOUNDATION event talks on a range of research, product and business topics.
Join us to stay informed and inspired!
EDGE AI POD
Revolutionizing Software Development with GenAI-Powered Edge Solutions with Anirban Bhattacharjee of Wipro
What if AI could transform the landscape of software development, making traditional methods seem like relics of the past? Join us as we sit down with a visionary guest from Wipro Engineering to uncover how GenAI-based custom code systems are revolutionizing the future of AI PCs. We promise a deep dive into how these intelligent tools are not just enhancing productivity but are redefining the very essence of software creation. Discover why the shift from cloud-based to edge-based solutions is imperative for enterprise developers dealing with proprietary codebases, and explore the power of open-source models like Code Llama, integrated through advanced frameworks such as LanChain and Lama Index. This episode promises to unravel the intricacies of an innovative web-based application designed to boost performance and user efficiency.
Our conversation also shines a light on the tangible productivity gains brought by cutting-edge code assistance tools, effectively reducing weeks of work into days. We explore the vital role of hardware—like RAM and discrete GPUs—in maximizing these tools' potential. Discussions reveal varying levels of acceptance among developers, with younger professionals more readily embracing the shift. To bridge this gap, we recommend intensive training and boot camps as pathways to wider adoption. Furthermore, the potential of generative AI in deciphering and documenting legacy code is highlighted, offering a glimpse into how these advancements are reshaping the programming landscape. Engage with us to understand the profound impact of these innovations on the future of software development.
Learn more about the EDGE AI FOUNDATION - edgeaifoundation.org
Transcriber's Name. Reviewer's Name. Time to switch to Arnibal by Seng Yong. Thanks, arnibal, and I apologize to let you wait a little bit Then. Now it's your time. Your talk is Gen-I-based custom code system for AI PC and the floor is yours.
Speaker 2:Thank you, danilo. First of all, I would like to thank the TinyML Foundation for this wonderful session and happy to be part of this. Yeah, it's like so just a brief introduction. So basically I am working as a solution architect in the embedded software practice, part of Wipro engineering, and basically I come from an embedded and digital signal processing background and now very passionate about working in AI, ml related to embedded systems and to introduce to anybody who is not aware systems and to introduce to anybody who is not aware. So Wipro is a leading global information technology and services company and we from Wipro Engineering are part of the group which work on engineering services and research and development. For this work on the custom code assistant on AIPC, I would like to acknowledge a few of my team members, like Rupesh, deepak and Sagar, who are part of the Wipro engineering team, and also the Intel team who enabled us with their AI PC platform. We can go to the next slide.
Speaker 2:Basically, the problem, what we are seeing, is that today, with GenAI, there is a lot of opportunity and also hype, and there may be still certain doubts that how effective it is going to be, but in one area it is very clear that the things are changing very fast and that is the way that software development is going to happen changing very fast and that is the way that software development is going to happen. So already we see an adoption of lot of commercial general purpose code assistance, namely GitHub, copilot, codeium and many other tools which are increasingly being adopted. However, the approach that we are taking is that, though these general purpose code assistance would be good for some specific coding, but we see a need that many of the enterprises are sitting on a large code base of very proprietary code data, so they may not be very open to share it directly with many of these code assistants which basically leverage cloud-based and, at best, a hybrid approach. So what we are proposing here is a device-based solution, like a complete edge-based solution, which is deployed on an AI PC and it utilizes the basically facilities provided by the hardware and runs in a very optimized way. On that, maybe next slide, yeah.
Speaker 2:So in terms of the enterprise software developers, few of the challenges which are seen are that the technology changes are very rapid, so people have to quickly learn a new programming language and they are having very stringent productivity goals, like what took six months previously now needs to be done in three months. So how can this be done? So this can only be done using certain intelligent tools in terms of helping you in the coding, helping you in debugging or optimizing the code which you have written manually, and also in basically understanding the legacy code base, which doesn't have the required documentation or design documents available. Also, in meeting these challenges, there are certain expectations for any of these assistant tools, so these tools have to be very provide the results in very quick time with low latency. People still don't want to pay the recurring cloud billing costs for, say, thousands of their employees in a large enterprise, and the accuracy of these assistants are very important, because if the results are not accurate enough, then these won't be successful. Hence we see the need of a custom code assistant which can be tailored for every unique solution situation for our customers.
Speaker 2:Maybe you can go to the next link. Yeah, so this is the solution that we are building. It is a complete web-based application and it can take in the inputs in terms of the source code files or the folders, and also the developer can paste the code. In future, we are going to extend it to read like, say, github repositories and so on, and then we give an option to do whatever operation you want to do, like, for example, you have the code base and you want to add comments to that code base. You can do that. You want to create a summary of your code, you want to chat with your code and ask specific questions about specific functions? So all those kind of features are supported.
Speaker 2:How do we check how good this solution is? So some of the key metrics that we are measuring here is basically how correct the output is or how useful it is for the developer. Then what is the response time, or the throughput? So all the responses should be in the order of milliseconds, otherwise it defeats the purpose. How good does the tool understand the context and how user-friendly it is? And some of the key parameters like, in addition to performance, is like what is the performance per watt? Because increasingly the energy efficiency is also becoming very important.
Speaker 2:We can go to the next slide. So here we have shown a high level architectural diagram of our solution. So mainly we have an UI on an input module which also does the pre-processing, and the data set we have used is a completely proprietary code base, which was our own code base. Then we have the orchestration layer, where we use certain frameworks like LanChain or Lama Index and we use a mixed methodology, use retrieval, augmented generation, as well as we take some of the open source models like code llama, start button and code gemma. So we have taken these models and we tried fine-tuning them and then we did a benchmarking and then selected the one which gave us the most accurate results. One which gave us the most accurate results. Ultimately we again used because we are using the Intel platform, so they have a framework for optimized inference on their platform, which is called OpenVINO. So we converted the model into the OpenVINO format and optimized it on their platform format and optimized it on their platform. The other important part is the human feedback loop. So, based on the human feedback, we try to fine tune the model and improve the accuracy of the solution.
Speaker 2:Maybe you can go to the next slide. Yeah, so this gives a view of the Intel AI PC platform and what are the processing elements which are part of it. So it consists of the Core Ultra series of processors. The CPU itself has a deep learning boost accelerator which accelerates the AI tasks. Then we also use the integrated graphics, which is the Intel Arc graphics as well, they have discrete graphics. Also, mainly they have this Intel's neural processing unit. So these neural compute engines do the compute acceleration for all the ai tasks and, in order to compare, so the cpu is very good for low latency and fast response. The npu is good for overall efficiency, like it gives a decent throughput with good energy efficiency, and GPU is good for overall throughput. So, depending on the use case, we have orchestrated our workload on the right processor.
Speaker 2:You can go to the next slide. Yeah, so here we give a summary of some of the key features that we are adding. So one key use case we see is that a lot of the legacy code doesn't have proper design or documentation. So if you want to automatically add the comments, so it can be very easily done through this kind of tool For a new developer who is coming on board to the team and is not having much idea, so the code summarization can generate an accurate summary of the code. We can give instant code suggestions and auto-completions based on the current context when the developer is doing the coding. And also the tool can help in terms of error detection, debugging, identifying potential errors and so on. If we have a legacy code and we want to optimize the code, then the tool can give the proper suggestions regarding it.
Speaker 2:Some of the use cases we see from our customers are like reverse engineering, the artifacts, so like the code is present but no requirement document is available, so whether we can generate the requirement specifications from the legacy code. Another unique use case is like code conversion. So we have, say, c code and we want to migrate it to C++. Or we have a version of code in C++ 17. So we have to migrate it to C++. Or we have a version of code in C++ 17. So we have to migrate it to C++ 23. So doing it manually is quite cumbersome.
Speaker 2:So these kind of tools can really hasten the process and go to the next slide. Yeah, so what are the solution benefits of this Edge solution? Primarily, it helps us in saving the recording cloud costs because this is completely on the device and there is no need to connect to the cloud. It is a very secure solution because it runs on the local environment and ensures that there is no leakage of information, because the enterprise data is highly proprietary and confidential when once it is optimized to run on the underlying hardware platform. And it is very efficient, provided that the workloads are properly orchestrated between the CPU, gpu and the NPU. Due to the availability of the NPU, the overall power consumption can be greatly reduced. And the Intel OpenVINO framework helped us in optimizing the model which is ultimately deployed on the underlying platform.
Speaker 2:Coming to some of the business benefits, the developer productivity can be greatly improved because the time needed to understand the existing code base gets readily reduced. So in especially systems programming, we have lot of firmware code which are very uniquely written and, for example, the bios code. So for a new developer it's always very challenging and these kind of tools can greatly help them. It improves the code quality, ensuring that the code is syntactically correct and optimized, leading to fewer bugs and much better performance. These kind of tools can be readily integrated to the developer environments like VS Code and others environments like VS Code and others. It can continuously learn from user interaction to provide increasingly accurate and relevant suggestions which are also personalized. A lot of the enterprise companies have their own coding standards. If you want to ensure adherence to those standards, then these tools can easily integrate those standard documents and ensure that we can talk about the code to requirements which was discussed and also, as I talked earlier, so the faster ramp up happens for new engineers, we can go to the next slide.
Speaker 2:However, while implementing this solution, we saw that there are certain challenges, so many of the things which should work in theory, but when we actually implemented it, we saw that the accuracy is highly important and one technique doesn't work for every use case, because if the output itself is not accurate enough, then this tool can't be used. Then user acceptance has to happen, because developers may be apprehensive about using these tools, and so only when they are trained and once they get used to it, then they understand the possibilities and the limitations of this tool and they can use it effectively. Being a completely edge solution, and since we are running Gen-AI models, so there are certain minimum resource requirements. So the disk space, or the memory at least, has to be in the order of gigabytes, and only then this kind of solution is feasible. Yeah, so what we see is that the custom code assistant can really become a significant help in the field of software development. By leveraging AI technologies, it will enhance the coding quality and provide real-time support to the developers. So, whatever challenges are there, but the benefits far outweigh the challenges, making it a very promising solution.
Speaker 2:Next slide yeah, so here we have some pointers on the future work that we are planning. We are planning to support more programming languages. Currently we are targeting systems programming languages like C and C++. We want to improve the natural language processing engine so that it is able to understand the context and the background of the queries coming from the developers. We plan to integrate this more with more IDEs and version control systems, and another topic would be how we can add up to the developer's coding style and preferences for the future. Yeah, so that was all I had to share. Any questions I'm willing to take.
Speaker 1:Thank you so much, anirban. Yeah, you touched a really important topic about the code assistant and I think many of us on daily basis are sharing and using the code, are sharing the needs of the code assistant and using them for increasing the productivity. Now a question about that is can you share your experiences about measuring the productivity? What would be a meaningful procedure to objectively measure the impact of such a code assistant in everyday life of the embedded programmer, the C++ programmers?
Speaker 2:Yeah, I think that is a very important question, um, what you put.
Speaker 2:So I think we are still exploring, um how best to measure the productivity.
Speaker 2:Um, but to take an example, what I would say is that typically, like so, for example, we did some training on certain code assistance and basically what we thought is like we took some task, particular specific task, which maybe in a manual method, say, takes like two weeks, right, and then we challenged ourselves and saw that whether with the code assistant, we can do it in a reduced time frame, for example, that specific task, and if it is achieved, say the task of, say, two weeks, can be done within three to four days, then it's a real gain in the productivity.
Speaker 2:So now, how do we scale that for multiple engineers and all? So that would take a more detailed approach, but typically, like with certain training workshops on these coding assistants, you can at least get a feel that a particular task which could take two weeks now can be done in, say, three days or four days. So that is the productivity gain you get, and that is by having multiple developers using these code tools as part of a training or a workshop of a short duration. I think that is one way we are basically evaluating.
Speaker 1:Thank you, Arne. One question from Sandeep how much RAM is needed on the AIPC for the use cases presented?
Speaker 2:Yeah, so typically these kind of AIPCs have at least 16 GB to 32 GB RAM, depending on the configuration. So that is the configuration with which we have checked and what we saw also is that the GPU, the performance, is much better, definitely when we have a discrete GPU and the NPU is also performing quite well. With the CPU only, the performance really is quite poor because it goes to the order of even minutes for any simple response.
Speaker 1:Thank you so much. Another question from my side. I really like the topic because I'm a fan of the tools that really introduce automation and increase productivity. It's also part of my job, so I'm wondering in your experience, what could you say about the acceptance rate sense that, for example, do you see more young professionals eager to be assisted by such facility, less seasoned, experienced programmers, or what other mix you are experiencing?
Speaker 2:you are experiencing. Yeah, I think the young developers are more interested and more ready to adopt these kind of tools because they want the shortest way right, whereas, like for us, who are more coming from the, with the baggage of having done manual coding and programming, I think maybe there may be an initial reluctance till we can see the benefit of it. And I don't think there is a silver bullet that this kind of assistant tools can solve all your problems, but it can really improve your productivity definitely.
Speaker 1:And, in such a case, for the people that is, for any reason, more reluctant or delay, procrastinating such such an adoption, in your opinion, what a a company employing such people should do to move really, uh, move forward the adoption. So any, any, any procedure, any training, any special initiative you would envision to increase the steepness of the adoption rate?
Speaker 2:Yeah, I think like say, boot camp or like a very short intensive training session, say one day, two, two day sessions, they really help because, first of all, when a trainer comes and shows you the benefit or helps you and in my experience it need not be like if you are a c, c plus plus programmer, you may also do a workshop in say java. Okay, at least you see the benefit of the productivity gain that you are getting out of the tool right. Once you are convinced, then, being the expert programmer that you are, I think you will find your own ways to get productivity in your work and find the right set of tools as well. So what we have seen is that intensive training sessions of, say, one or two day duration they really work, like they first of all remove the inhibitions of the people and they see that, okay, this is at least working in, say, the java world and it should also be working in systems programming, for example. So that is something what I have seen has worked.
Speaker 1:Yeah, very good. And last question, before to move to the next speaker I think we have still a couple of minutes, anirbal. I think we have still a couple of minutes, anirban. You know, generating C code, c++ code, make it fast running on the target, can be also helped by profile-driven optimization. So I run the code, I get some profiling and then maybe the code could be improved, some kernels could be improved to make it faster or less memory demanding. You know these type of things. Is that part of, or could be a part of, the code assistant? Or maybe it's not required by the inner processes of generating the code?
Speaker 2:Yeah, I think. In my opinion, it is something which you can add as an additional feature, but this is not the real problem that the generative ai can solve. Uh, what we see from a generative ai perspective is like uh, you have a firmware code, okay like, which has been written, say, 15 years back. A new developer comes to the team, has no idea on that code, uh, has, doesn't have any documentation because it doesn't exist, right, in that case, this kind of tool can actually give you a good summary okay, help you in understanding the code much better. And these are the real use cases that can be solved. The optimization part, I would say, is more like an add-on, because there are already sophisticated tools which can do that.
Speaker 1:Thank you so much, anirban. Thank you so much for your time, your contribution, which was really much appreciated by me and by the TPC committee. Thanks again. If you have time and there are questions in the comment chat, please consider to target some of them. Otherwise, thanks so much again.
Speaker 2:Thank you.
Speaker 1:Danilo.
Speaker 2:Yeah, thank you.