探索和表征大型语言模型在嵌入式系统开发和调试中的应用

这篇论文的标题是《Exploring and Characterizing Large Language Models for Embedded System Development and Debugging》,作者是来自华盛顿大学的研究团队。论文主要探讨了大型语言模型(LLMs)在嵌入式系统开发和调试方面的应用潜力。以下是对论文主要内容的详细整理:

1. 引言 (Introduction)

  • 论文指出,尽管LLMs在代码生成方面取得了显著进展,但它们在嵌入式系统开发中的能力尚未得到充分研究。
  • 嵌入式系统开发需要跨领域的硬件和软件知识,具有复杂性和不确定性。

2. 相关工作 (Related Work)

  • 论文回顾了LLMs在不同领域的应用,包括健康、医学、教育、金融等,并讨论了LLMs在代码生成和嵌入式系统领域的应用情况。

3. 物理测试平台 (Physical Testbenches)

  • 为了评估LLMs在硬件在回路(Hardware-In-the-Loop, HIL)嵌入式系统开发任务中的性能,作者实现了一个端到端的物理验证和自动化测试流程。
  • 通过传感器-执行器对进行物理评估,比较了GPT-3.5、PaLM 2和GPT-4三个模型在450次实验中的表现。


Prompt: Write me a program for the Arduino Uno that interfaces with an LSM6DSO over I2C using only the Wire library. In my hardware implementation, the SDO/SA0 pin of the LSM6DSO is connected to GND (ground).
Print the acceleration readings in gs every 100ms over Serial at baud rate 9600. Example serial output: A_X = -0.426 \ n A_Y = -0.023 \ n A_Z = 0.913 \ n

4. LLMs在嵌入式系统开发中的能力 (Capabilities of LLMs for Embedded Systems)

  • 论文详细分析了LLMs在理解硬件规格、生成代码、提供硬件调试建议等方面的能力。
  • 通过实验,发现GPT-4在某些情况下能够生成完全正确的程序,但在处理复杂任务时,即使是最先进的模型也存在局限性。


Prompt: We are trying to design a battery-operated environmental sensor built around a nRF52832 and an HDC2010 that transmits temperature measurements using Bluetooth advertising packets to a receiver. We will use this data to monitor the change in ambient temperature inside a building over a month. This code already reads the sensor and transmits data correctly. Please suggest the specific parts of this code we could modify to
maximize battery life: **program**

5. LLMs在嵌入式系统开发中的局限性 (Limitations of LLMs for Embedded Systems Development)

  • 论文讨论了LLMs在任务理解、生成错误信息(hallucinations)、未经提示的行为(unprompted behavior)、版本和库错误等方面的局限性。

6. 基于AI的嵌入式开发工作流程 (AI Based Embedded Development Workflow)

  • 作者提出了一个集成LLMs到嵌入式系统开发的建议工作流程,包括提供详细的提示、调试编译错误、程序和行为观察、描述不正确的行为等步骤。

6.1 提供详细的提示 (Providing Detailed Prompts)

  • 强调了为LLMs提供充分上下文的提示工程的重要性,这有助于生成有用的代码。
  • 提示应包括硬件和软件的相关细节,如示例代码片段、特定库和芯片版本。
  • 对比了好坏两种提示方式,好的提示提供了完整的任务范围和期望的实现细节。

Bad prompt: "Make the LED blink and print hello world."
Better prompt: "I have an Arduino Uno with an LED attached to Pin 13. I want to print the message "Hello World" to serial at baud rate 9600 and blink the LED on and off every second. First explain how to approach the task and then provide a program to accomplish it."

6.2 调试编译错误 (Debugging Compilation Errors)

  • 验证生成代码的第一步是尝试编译它,编译错误可以用来捕捉常见的错误。
  • 讨论了LLMs在接收到编译错误信息时能够自动纠正错误的能力。

Prompt: "When I try to compile this code, I get the following error: ***copied error here***"

6.3 程序和行为观察 (Program and Behavior Observation)

  • 在代码编译和上传无误后,下一步是测试代码本身的行为。
  • 对于简单任务,可以通过视觉验证,但对于更复杂的嵌入式系统,可能需要人工参与进行综合测试和验证。

6.4 描述不正确的行为 (Describing Incorrect Behavior)

  • 提供了关于如何向LLMs描述系统行为不正确的指导,特别是当需要修复代码时。
  • 通过提供系统行为与预期不符的详细描述,可以提高LLMs识别错误来源的能力。

Better prompt: "This code compiles and runs and the Arduino prints messages, but these messages have incorrect zero values for the A_X, A_Y, and A_Z acceleration channels instead of acceleration readings. The current output we are getting is: A_X = 0, A_Y = 0, A_Z = 0"

6.5 额外技巧 (Additional Tips)

  • 指出GPT在处理数字和计算时常常遇到困难,建议手动修复这些错误。
  • 强调了在当前状态下,应将GPT-4和其他模型视为辅助人类编程的工具,而不是一次性解决方案。
  • 如果用户知道如何修复错误,应手动进行修复,例如,如果模型提供的程序错误地闪烁了错误的引脚,手动更新引脚号会更有效。

1)保持上下文更新 (Keep the Context Up-to-date)

  • 在生成代码后,如果用户对代码进行了修改,应将新版本作为提示的一部分复制回去,以便在生成额外代码时为模型提供上下文。

2)明确变更 (Be Explicit About Changes)

  • 当请求模型更改特定部分的代码时,应明确指出需要更改的内容和保持不变的内容。

3)任务分解 (Break down tasks)

  • 建议将大型任务分解为模块化的小功能,单独开发,然后集成到一个完整的程序中。

4)重新开始 (Restarting)

  • 如果模型多次尝试修复问题失败,最好重新开始一个新的聊天。这有助于模型重新获得对原始目标的参考。

5) 明确变更 (Be Explicit About Changes)

  • 在请求模型进行更改时,应明确指出需要更改的内容,以避免模型进行未经请求的修改。

7. 用户研究 (User Study)

  • 通过15名不同经验水平的参与者进行的用户研究,评估了提出的工作流程指南,并调查了LLMs在硬件调试中的辅助能力。
  • 用户研究结果表明,LLMs能够显著提高用户在嵌入式系统开发中的生产力和成功率。

8. 讨论和结论 (Discussion and Conclusion)

  • 论文总结了LLMs在嵌入式系统开发中的潜力,并提出了未来工作的方向,包括改进提示工程、利用硬件在环测试平台、开发基于LLM的自主代理等。

附录 (Appendix)

  • 提供了一个虚构的环境传感器IC的寄存器映射表,用于展示GPT-4如何基于提供的寄存器表生成伪代码。

论文的核心贡献是开发了一个开源的硬件在环框架,用于系统地评估和理解LLMs在嵌入式系统开发和调试中的能力与局限,并提出了一个集成LLMs的软件开发工作流程。通过实验和用户研究,论文展示了LLMs在提高开发效率、降低入门门槛以及提供特定问题调试建议方面的潜力。同时,论文也强调了负责任地开发这些强大工具的重要性,以确保构建安全和可靠的嵌入式系统。

相关推荐
学习前端的小z3 分钟前
【AIGC】如何通过ChatGPT轻松制作个性化GPTs应用
人工智能·chatgpt·aigc
DisonTangor14 分钟前
苹果发布iOS 18.2首个公测版:Siri接入ChatGPT、iPhone 16拍照按钮有用了
ios·chatgpt·iphone
晨欣24 分钟前
Elasticsearch和Lucene之间是什么关系?(ChatGPT回答)
elasticsearch·chatgpt·lucene
埃菲尔铁塔_CV算法31 分钟前
人工智能图像算法:开启视觉新时代的钥匙
人工智能·算法
EasyCVR31 分钟前
EHOME视频平台EasyCVR视频融合平台使用OBS进行RTMP推流,WebRTC播放出现抖动、卡顿如何解决?
人工智能·算法·ffmpeg·音视频·webrtc·监控视频接入
打羽毛球吗️38 分钟前
机器学习中的两种主要思路:数据驱动与模型驱动
人工智能·机器学习
光芒再现dev41 分钟前
已解决,部署GPTSoVITS报错‘AsyncRequest‘ object has no attribute ‘_json_response_data‘
运维·python·gpt·语言模型·自然语言处理
好喜欢吃红柚子1 小时前
万字长文解读空间、通道注意力机制机制和超详细代码逐行分析(SE,CBAM,SGE,CA,ECA,TA)
人工智能·pytorch·python·计算机视觉·cnn
小馒头学python1 小时前
机器学习是什么?AIGC又是什么?机器学习与AIGC未来科技的双引擎
人工智能·python·机器学习
神奇夜光杯1 小时前
Python酷库之旅-第三方库Pandas(202)
开发语言·人工智能·python·excel·pandas·标准库及第三方库·学习与成长