<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Palaniappan R | UCSC OSPO</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/author/palaniappan-r/</link><atom:link href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/palaniappan-r/index.xml" rel="self" type="application/rss+xml"/><description>Palaniappan R</description><generator>Wowchemy (https://wowchemy.com)</generator><language>en-us</language><image><url>https://deploy-preview-1007--ucsc-ospo.netlify.app/author/palaniappan-r/avatar_hu3123a876971773debfb3c62564bd4352_241844_270x270_fill_q75_lanczos_center.jpeg</url><title>Palaniappan R</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/author/palaniappan-r/</link></image><item><title>ORAssistant - LLM Assistant for OpenROAD</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsd/openroad/20240827-palaniappan-r/</link><pubDate>Tue, 27 Aug 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsd/openroad/20240827-palaniappan-r/</guid><description>&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>Hello! I&amp;rsquo;m &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/palaniappan-r/">Palaniappan R&lt;/a>, an undergraduate student at BITS Pilani, India. Over the past few months, I&amp;rsquo;ve been working as a GSoC contributor on the &lt;a href="https://summerofcode.withgoogle.com/programs/2024/projects/DSo6kvA5" target="_blank" rel="noopener">LLM Assistant for OpenROAD - Model Architecture and Prototype&lt;/a> project, under the mentorship of &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/indira-iyer/">Indira Iyer&lt;/a> and &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/jack-luar/">Jack Luar&lt;/a>. &lt;/p>
&lt;p>The primary objective of my project is to improve the user experience within OpenROAD and OpenROAD-flow-scripts by utilizing Large Language Models(LLMs) to offer fast, relevant answers to FAQs and common issues. The ORAssistant chatbot aims to act as a first line of support, addressing basic queries in domains such as installation and command usage. Its goal is to resolve simple issues before they escalate to public forums, thereby reducing the number of support tickets on platforms like GitHub Issues.&lt;/p>
&lt;h2 id="architecture-overview">Architecture Overview&lt;/h2>
&lt;p>Retrieval-augmented-generation (RAG) is a technique that improves the q&amp;amp;a capabilities and reliability of LLMs by incorporating factual information from external sources. When a user submits a query, the RAG process begins by fetching relevant information from a knowledge base. The retrieved content, combined with the original query is the provided to the LLM to generate a relevant, informed response.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="RAG Architecture" srcset="
/report/osre24/ucsd/openroad/20240827-palaniappan-r/rag_arch_hu8e03f7a9c64923f7711e5a6dbcc7ac36_44482_df391271ecbbb458269da059ad7cf993.webp 400w,
/report/osre24/ucsd/openroad/20240827-palaniappan-r/rag_arch_hu8e03f7a9c64923f7711e5a6dbcc7ac36_44482_3c455fc32c6d18b57b31be5f86590e99.webp 760w,
/report/osre24/ucsd/openroad/20240827-palaniappan-r/rag_arch_hu8e03f7a9c64923f7711e5a6dbcc7ac36_44482_1200x1200_fit_q75_h2_lanczos_2.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsd/openroad/20240827-palaniappan-r/rag_arch_hu8e03f7a9c64923f7711e5a6dbcc7ac36_44482_df391271ecbbb458269da059ad7cf993.webp"
width="760"
height="410"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h2 id="the-knowledge-base">The Knowledge Base&lt;/h2>
&lt;p>ORAssistant is designed to answer queries about all the major tools in the OR flow. The knowledge base primarily consists of official documentation from OpenROAD, OpenROAD-flow-scripts, and their respective manpages. Instead of scraping these primary sources from their websites, the docs are built to the desired markdown format directly from the respective GitHub repositories, using specific commit hashes for reproducibility. The knowledge base also includes documentation from other essential applications in the EDA flow, such as Yosys and OpenSTA. Additionally, it includes scraped and annotated conversational data from discussions on the OpenROAD and OpenROAD-flow-scripts GitHub pages.&lt;/p>
&lt;p>The entire dataset building process has been automated, allowing for dynamic updates to accommodate any live changes.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Knowledge Base Building" srcset="
/report/osre24/ucsd/openroad/20240827-palaniappan-r/knowledge_base_hu389de4d06f6f5009d6f8a5e32337289b_95686_4f5d36607bb3f3a68d364c4b052d7564.webp 400w,
/report/osre24/ucsd/openroad/20240827-palaniappan-r/knowledge_base_hu389de4d06f6f5009d6f8a5e32337289b_95686_774ab20167d5029994bd3450cf9f9627.webp 760w,
/report/osre24/ucsd/openroad/20240827-palaniappan-r/knowledge_base_hu389de4d06f6f5009d6f8a5e32337289b_95686_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsd/openroad/20240827-palaniappan-r/knowledge_base_hu389de4d06f6f5009d6f8a5e32337289b_95686_4f5d36607bb3f3a68d364c4b052d7564.webp"
width="760"
height="424"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h2 id="the-tool-based-architecture">The Tool-Based Architecture&lt;/h2>
&lt;p>After experimenting with multiple RAG approaches, a tool-based setup proved to be the most effective solution. Data from various domains are embedded into vector databases, and hybrid search retriever functions are applied to these vector stores. These functions are organized as individual tools that can be called by the chatbot. To maintain context, each query is rephrased while considering the chat history. This ensures a more precise and context-rich query. Please refer to my previous &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsd/openroad/20240719-palaniappan-r/">blog post&lt;/a> for more information on the retrieval tools.&lt;/p>
&lt;p>As depicted in the flowchart, a preliminary LLM call analyzes the input query, rephrases it based on the chat history and picks the appropriate tools for the rephrased query. Subsequently, documents are retrieved using the tool and sent to the LLM, which produces a relevant, context-aware response.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Tool Based Architecture" srcset="
/report/osre24/ucsd/openroad/20240827-palaniappan-r/tool_arch_hua38e30b25f21f78f6a933005dd192c89_51518_75dcf9730e30df6c2af5b2e12a33089e.webp 400w,
/report/osre24/ucsd/openroad/20240827-palaniappan-r/tool_arch_hua38e30b25f21f78f6a933005dd192c89_51518_7e257ae5876d4a2639c310e21b80ae97.webp 760w,
/report/osre24/ucsd/openroad/20240827-palaniappan-r/tool_arch_hua38e30b25f21f78f6a933005dd192c89_51518_1200x1200_fit_q75_h2_lanczos_2.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsd/openroad/20240827-palaniappan-r/tool_arch_hua38e30b25f21f78f6a933005dd192c89_51518_75dcf9730e30df6c2af5b2e12a33089e.webp"
width="760"
height="546"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h2 id="using-orassistant">Using ORAssistant&lt;/h2>
&lt;p>ORAssistant is currently hosted at this &lt;a href="https://orassistant.netlify.app/" target="_blank" rel="noopener">link&lt;/a>.&lt;/p>
&lt;p>To set up out ORAssistant locally, find detailed instructions in the &lt;a href="">GitHub Repo&lt;/a>. Both cloud based LLM providers (Gemini, VertexAI) and local options (Ollama) are supported.&lt;/p>
&lt;p>Here&amp;rsquo;s an example of ORAssistant in action,
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Example 1" srcset="
/report/osre24/ucsd/openroad/20240827-palaniappan-r/example1_huc9b9a5dd27909efbfc0d6a5a5532244f_175139_07d9479d1764c9189c0bdd3947bc3a05.webp 400w,
/report/osre24/ucsd/openroad/20240827-palaniappan-r/example1_huc9b9a5dd27909efbfc0d6a5a5532244f_175139_ef65593aa1ba677fc24f91d973e5bfc7.webp 760w,
/report/osre24/ucsd/openroad/20240827-palaniappan-r/example1_huc9b9a5dd27909efbfc0d6a5a5532244f_175139_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsd/openroad/20240827-palaniappan-r/example1_huc9b9a5dd27909efbfc0d6a5a5532244f_175139_07d9479d1764c9189c0bdd3947bc3a05.webp"
width="760"
height="384"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h2 id="future-plans">Future Plans&lt;/h2>
&lt;p>To further enhance the usability of ORAssistant, there are plans to add support for flow script generation. This will become possible after adding a dedicated script generation tool into the current tool-based workflow. Support for more tools in the EDA flow, such as KLayout will also be added in the near future.&lt;/p>
&lt;p>Additionally, ORAssistant is planned to be integrated directly into OpenROAD&amp;rsquo;s CLI and GUI interfaces.&lt;/p>
&lt;p>As I near the end of my GSoC, I&amp;rsquo;d like to thank the GSoC Organizing Committee, UC OSPO and The OpenROAD Project for this incredible opportunity. I&amp;rsquo;m immensely grateful to &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/indira-iyer/">Indira Iyer&lt;/a> and &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/jack-luar/">Jack Luar&lt;/a> for their support and guidance throughout my GSoC journey. Thank You.&lt;/p></description></item><item><title>Architecture Updates - LLM Assistant for OpenROAD</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsd/openroad/20240719-palaniappan-r/</link><pubDate>Fri, 19 Jul 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsd/openroad/20240719-palaniappan-r/</guid><description>&lt;p>Hi again! I&amp;rsquo;m &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/palaniappan-r/">Palaniappan R&lt;/a>, a GSoC contributor working on the OpenROAD chat assistant project under the mentorship of &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/indira-iyer/">Indira Iyer&lt;/a> and &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/jack-luar/">Jack Luar&lt;/a>. My project aims to build an LLM-powered chat assistant designed to provide seamless access to existing online resources, thereby reducing support overhead. Over the past month, I&amp;rsquo;ve been collaborating with &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/aviral-kaintura/">Aviral Kaintura&lt;/a>, on data engineering to deliver on our common project goal of an OpenROAD assistant and an open-EDA dataset that promotes further research and collaboration.&lt;/p>
&lt;h3 id="progress">Progress&lt;/h3>
&lt;p>The retrieval architecture is at the heart of any retrieval-augmented generation (RAG) setup. Our current setup employs a hybrid-search technique, combining a traditional keyword search method with more advanced vector search methods. As illustrated in the diagram, we combine a simple semantic search, a Maximal Marginal Relevance (MMR) search and a text-based BM25 ranking technique to build our hybrid retriever.&lt;/p>
&lt;div class="mermaid">flowchart LR
id0([Query]) --> id1
id1([Vectorstore]) --- id2([Semantic Retriever])
id1([Vectorstore]) --- id3([MMR Retriever])
id1([Vectorstore]) --- id4([BM25 Retriever])
id2([Semantic Retriever]) -- Retrieved Docs ---> id5([Reranking])
id3([MMR Retriever]) -- Retrieved Docs ---> id5([Reranking])
id4([BM25 Retriever]) -- Retrieved Docs ---> id5([Reranking])
id5([Reranking]) ---> id6(top-n docs)
&lt;/div>
&lt;p>Upon receiving a query, relevant documents are sourced from each retriever, resulting in a broad set of results. We feed these results into a cross-encoder re-ranker model to get the &lt;code>top-n&lt;/code> documents with maximum relevance.&lt;/p>
&lt;p>After building the retriever, we utilized the LangGraph framework to develop a stateful, multi-agent workflow tailored to our use case. This allows flexibility in servicing a diverse set of user questions in an efficient and accurate manner, given the sparse nature of our dataset.&lt;/p>
&lt;p>Our current dataset can be broadly classified into the following categories:&lt;/p>
&lt;ul>
&lt;li>OpenROAD Documentation&lt;/li>
&lt;li>OpenROAD-flow-scripts Documentation&lt;/li>
&lt;li>OpenSTA Documentation&lt;/li>
&lt;li>OpenROAD Manpages&lt;/li>
&lt;/ul>
&lt;p>These data sources are embedded into separate FAISS vector databases using open-source embeddings models (we&amp;rsquo;ve been working on fine-tuning an embeddings model for better retrieval accuracy). The hybrid search retrievers are then applied to these vector databases, creating internal tools that can be queried by our LLM as needed. Each tool has access to different data sources in various domains. For instance, the &lt;code>retrieve_cmds&lt;/code> tool selectively has access to information detailing the multiple commands in the OpenROAD framework, while the &lt;code>retrieve_install&lt;/code> deals with installation-related documentation. As depicted in the flowchart, a routing LLM call classifies the input query and forwards it to the appropriate retriever tool. Relevant documents are then sent back to the LLM for response generation.&lt;/p>
&lt;div class="mermaid">graph TD
__start__ --> router_agent
router_agent -.-> retrieve_cmds
router_agent -.-> retrieve_general
router_agent -.-> retrieve_install
router_agent -.-> retrieve_opensta
retrieve_cmds --> generate
retrieve_general --> generate
retrieve_install --> generate
retrieve_opensta --> generate
generate --> __end__
&lt;/div>
&lt;p>Feel free to try out our chat assistant &lt;a href="https://orassistant.netlify.app/" target="_blank" rel="noopener">here&lt;/a>. Instructions to set up and run our chatbot can be found &lt;a href="https://github.com/The-OpenROAD-Project/ORAssistant" target="_blank" rel="noopener">here&lt;/a>.&lt;/p>
&lt;p>Here&amp;rsquo;s an example of our chatbot in action.
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Example" srcset="
/report/osre24/ucsd/openroad/20240719-palaniappan-r/img1_hu0b0a2035cec8d14387553facf446abed_79114_fdd1b5352a0557597dd03559dd46260b.webp 400w,
/report/osre24/ucsd/openroad/20240719-palaniappan-r/img1_hu0b0a2035cec8d14387553facf446abed_79114_2dc96697a7dd37f2c6e4dc350d2f33c6.webp 760w,
/report/osre24/ucsd/openroad/20240719-palaniappan-r/img1_hu0b0a2035cec8d14387553facf446abed_79114_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsd/openroad/20240719-palaniappan-r/img1_hu0b0a2035cec8d14387553facf446abed_79114_fdd1b5352a0557597dd03559dd46260b.webp"
width="735"
height="655"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h3 id="future-plans">Future Plans&lt;/h3>
&lt;p>In the upcoming weeks, we aim to enhance our dataset by incorporating actionable information filtered from GitHub issues and discussions. We’ll be adding support to keep track of the conversation history as well.&lt;/p>
&lt;p>Stay tuned for more updates!&lt;/p></description></item><item><title>LLM Assistant for OpenROAD - Model Architecture and Prototype</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsd/openroad/20240613-palaniappan-r/</link><pubDate>Thu, 13 Jun 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsd/openroad/20240613-palaniappan-r/</guid><description>&lt;p>Hi there! &lt;/p>
&lt;p>I’m &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/palaniappan-r/">Palaniappan R&lt;/a>, currently an undergraduate student at the Birla Institute of Technology &amp;amp; Science, Pilani, India.&lt;/p>
&lt;p>I&amp;rsquo;ll be working on the &lt;a href="https://summerofcode.withgoogle.com/programs/2024/projects/DSo6kvA5" target="_blank" rel="noopener">LLM Assistant for OpenROAD - Model Architecture and Prototype&lt;/a> project, under the mentorship of &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/indira-iyer/">Indira Iyer&lt;/a> and &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/jack-luar/">Jack Luar&lt;/a>. &lt;/p>
&lt;p>My project aims to develop the architecture for a chat assistant built for OpenROAD and its native flow, designed to assist beginners and experienced users by giving easy access to existing resources, offering troubleshooting assistance, and providing fast and accurate responses to common questions. I plan to do this by leveraging state-of-the-art retrieval and fine-tuning techniques.&lt;/p>
&lt;p>As part of this project, I will be working alongside another &lt;a href="https://summerofcode.withgoogle.com/programs/2024/projects/J8uAFNCu" target="_blank" rel="noopener">project&lt;/a> to build and test on a valid dataset for training and deployment. We will also be collaborating with other research teams at NYU and ASU, working on similar projects related to OpenROAD chat assistants and flow generation using Generative AI. Our primary objective is to minimize support overhead, improve user experience by reducing response times, and provide access to updated information about OpenROAD.&lt;/p>
&lt;p>Upon completion, my project will offer a viable chat assistant architecture as part of OpenROAD that benefits both the users and tool developers of OpenROAD.&lt;/p>
&lt;p>An &lt;a href="https://github.com/The-OpenROAD-Project/ORAssistant" target="_blank" rel="noopener">early prototype&lt;/a> developed along with a human evaluation framework shows promising results.
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Architecture" srcset="
/report/osre24/ucsd/openroad/20240613-palaniappan-r/img2_hud6fda06af55d21d584ae88c38f077b08_207913_30376cbd7d90ae65683883a4dd83751d.webp 400w,
/report/osre24/ucsd/openroad/20240613-palaniappan-r/img2_hud6fda06af55d21d584ae88c38f077b08_207913_f98f5137b9b17acfa41102f49130d427.webp 760w,
/report/osre24/ucsd/openroad/20240613-palaniappan-r/img2_hud6fda06af55d21d584ae88c38f077b08_207913_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsd/openroad/20240613-palaniappan-r/img2_hud6fda06af55d21d584ae88c38f077b08_207913_30376cbd7d90ae65683883a4dd83751d.webp"
width="760"
height="157"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>Here are some responses generated by the prototype,
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Examples" srcset="
/report/osre24/ucsd/openroad/20240613-palaniappan-r/img1_hu1368e4ffa06e7513186f849074288e92_2440307_418c15850b5c6c2573a9082ca1a5a9dc.webp 400w,
/report/osre24/ucsd/openroad/20240613-palaniappan-r/img1_hu1368e4ffa06e7513186f849074288e92_2440307_18f9f9a9254bedf140c7ec005c7cc5b9.webp 760w,
/report/osre24/ucsd/openroad/20240613-palaniappan-r/img1_hu1368e4ffa06e7513186f849074288e92_2440307_1200x1200_fit_q75_h2_lanczos.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsd/openroad/20240613-palaniappan-r/img1_hu1368e4ffa06e7513186f849074288e92_2440307_418c15850b5c6c2573a9082ca1a5a9dc.webp"
width="760"
height="671"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>I&amp;rsquo;m excited about the potential of ORAssistant as part of the OpenROAD tool suite to accelerate innovation in EDA and chip design by utilizing open-source tools along with Generative AI.&lt;/p>
&lt;p>Stay tuned for more updates!&lt;/p></description></item></channel></rss>