当前位置:首页 > 报告详情

陈英豪-LLM 辅助翻译 C 代码到 Rust 代码.pdf

上传人: 张** 编号:159342 2024-04-05 11页 391.93KB

1、目录设计思路评测指标及效果展示遇到的问题与未来计划LLM 辅助翻译 C 代码到 Rust 代码陈英豪清华大学2024 年 3 月 30 日陈英豪清华大学报告标题1/11目录设计思路评测指标及效果展示遇到的问题与未来计划目录1设计思路2评测指标及效果展示3遇到的问题与未来计划陈英豪清华大学报告标题2/11目录设计思路评测指标及效果展示遇到的问题与未来计划模型组成部分Commenter 对原始的 C 代码给出逐行注释Translator 进行翻译AddMainFunction 判断代码中是否有主函数,如果没有,则对代码中所有函数,类,宏定义给出示例使用,组成一个主函数加入代码中陈英豪清华大学报告标

2、题3/11目录设计思路评测指标及效果展示遇到的问题与未来计划模型组成部分Enhancer 在不借助编译报错信息的条件下对翻译出来的代码进行改进,检查代码中有无违背 Rust 特性之处,以及任何模型认为可以改进的地方Runner 编译代码,给出报错信息CompilerMessageAnalyzer 分析报错信息中有无 error,如果没有,则终止整个过程,否则将代码和报错信息交给 CorrectorCorrector 根据报错信息修改代码。陈英豪清华大学报告标题4/11目录设计思路评测指标及效果展示遇到的问题与未来计划流程图图 1:陈英豪清华大学报告标题5/11目录设计思路评测指标及效果展示遇到

3、的问题与未来计划评测指标passk:对每一个测试问题重复测试 t 次,每次生成 k 份代码,只要有一份代码通过测试,则本次算通过测试。t 次的平均通过率即为 passk 的值。(需要 t k 份代码)Openai 在 HumanEval 中提出了一种对 passk 的无偏估计。只需要生成 n 份(n k)代码,统计其中通过测试的份数 c,用下式计算 passkpassk=Eproblems1(nck)(nk)(1)passk 的值越高,说明模型的性能越好。陈英豪清华大学报告标题6/11目录设计思路评测指标及效果展示遇到的问题与未来计划我们的结果我们在 HumanEval-X 数据集中进行了测试

4、,设置 n=5,最终pass1 的值为 40.00%目前还没有找到相同任务的结果,但有以下类似任务的结果,同样在 HumanEval-X 数据集中测得:表 1:其它代码翻译任务的 pass1 值模型名称目标语言PythonJavaJavascriptGoInCoder-6.7B34.37%34.04%37.05%25.54%CodeGen-Multi-16B33.83%43.20%54.51%27.94%CodeGeeX-13B27.18%22.56%30.23%8.64%CodeGeeX-13B-FT62.79%71.68%50.83%16.71%陈英豪清华大学报告标题7/11目录设计思路评

5、测指标及效果展示遇到的问题与未来计划效果展示图 2:陈英豪清华大学报告标题8/11目录设计思路评测指标及效果展示遇到的问题与未来计划遇到的问题推理时间过长。对于一段 32 行的涉及 C+继承的代码,模型花费了超过 5 分钟才得出答案代码在引用库时,会出现路径错误。代码需要一些外部知识来对 Rust 语言有更好的了解输入的代码很长时,效果会下降陈英豪清华大学报告标题9/11目录设计思路评测指标及效果展示遇到的问题与未来计划未来计划完成的工作基于 Rust 官方文档构建向量数据库,实现 RAG,为模型提供 Rust 语言的外部知识提供与用户交互的能力,让模型给出结果后,能接收用户的反馈,并进一步改进结果改进流程。让模型一次生成多份代码,筛选一份作为最终结果。同时还需要增加一个模块,用于生成测试用例,让模型尝试自己验证代码的正确性。对于过长输入,尝试进行切分。比如以函数和类为单位进行切分,让模型分段处理陈英豪清华大学报告标题10/11目录设计思路评测指标及效果展示遇到的问题与未来计划Thanks for your attention!Q&A陈英豪清华大学报告标题11/11

word格式文档无特别注明外均可编辑修改,预览文件经过压缩,下载原文更清晰!
三个皮匠报告文库所有资源均是客户上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作商用。
本文介绍了由清华大学陈英豪开发的LLM辅助的C代码到Rust代码的翻译工具。该工具包含以下模型组成部分: 1. Commenter:对原始C代码逐行给出注释。 2. Translator:进行代码翻译。 3. Enhancer:对翻译出的Rust代码进行改进,确保符合Rust语言特性。 4. Runner:编译代码并给出报错信息。 5. CompilerMessageAnalyzer:分析报错信息,若无error,则终止过程;否则,代码和报错信息交给Corrector。 6. Corrector:根据报错信息修改代码。 文章提出了评测指标pass@k,即对每个测试问题重复测试t次,每次生成k份代码,只要一份通过测试,则算通过。文中提到,在HumanEval-X数据集上测试,设置n=5,pass@1的值为40%。与其他代码翻译任务相比,该工具在Rust目标语言上表现较好。 关键数据: - pass@1值:40% - HumanEval-X数据集上的其他代码翻译任务pass@1值对比: - InCoder-6.7B:34.37% - CodeGen-Multi-16B:33.83% - CodeGeeX-13B:27.18% - CodeGeeX-13B-FT:62.79% 遇到的问题包括推理时间过长、路径错误、需要外部知识改进Rust代码理解,以及长输入效果下降。未来计划包括构建Rust语言的外部知识向量数据库、提供与用户交互的能力、改进流程、生成测试用例和增加验证代码正确性的模块。
"LLM辅助翻译C代码到Rust代码的效果如何?" "如何解决Rust代码翻译中的路径错误问题?" "Rust代码翻译模型未来计划有哪些改进?"
客服
商务合作
小程序
服务号
折叠