AI 编程想要再进一步,大模型要解决哪些关键问题?

导读 论智能化编程的起源,可以追溯到集成开发环境(IDE )的辅助提示功能。只不过,传统 IDE 的智能化辅助功能比较简单,一般是基于开发人员的输入和已有项目代码,即时预测待补全代码中的类名、方法名和代码片段等,并提供建议列表。

而现在所说的智能化编程,在深度学习技术的影响下,跟以前已经大不一样,甚至已经有本质的区别。

华为云 Dev AI Lab Leader、智能化研发算法技术专家马宇驰认为:“GitHub Copilot 问世的 2021 年,是真正的智能化编程出现的元年。在此之前的代码补全,也就相当于输入法的联想功能。”

AI 编程想要再进一步,大模型要解决哪些关键问题?AI 编程想要再进一步,大模型要解决哪些关键问题?

华为云 Dev AI Lab Leader、智能化研发算法技术专家 马宇驰

GitHub Copilot 由 GitHub 和 OpenAI 开发,其底层技术采用了 Codex 模型 —— 该模型经过了百亿级代码(包括 GitHub 上的公共存储库)的训练。GitHub Copilot 的特别之处在于,它不仅仅是一个代码自动补全工具。与大多数代码辅助工具相比,它可以理解更多上下文。无论是文档、注释、函数名,还是代码本身,GitHub Copilot 都会基于开发者提供的上下文来合成匹配的代码。开发者可通过 GitHub Copilot 在编辑器中获取有关整行代码或完整函数的建议。

Copilot 的进化速度非常惊人。2021 年 6 月,Copilot 刚发布时,其做题准确率是 28.8%,当时业界最高也只能达到 11%。今年 3 月,接入了 GPT-4 的 Copilot X 做题准确率已经达到了 67%。

“不基于大模型的 AI 编程助手,其编程能力非常差。在我们看来,它甚至不属于智能化的范畴。” 马宇驰表示。Copilot 的横空出世给了马宇驰及其团队不少启发。于是在 2021 年底,华为将研发工具 CodeArts 与盘古大模型相结合,开发了智能编程助手 CodeArts Snap。

据了解, CodeArts Snap 训练了 760 亿行精选代码,8500 万开源代码仓,1300 余万篇技术文档,具备智能生成、智能问答、智能协同三大核心功能,可以实现一句对话让代码生成、一次点击即可自动注释和生成测试用例,一条指令即可智能部署。

当前 CodeArts Snap 已经积累了不少用户,并且收获了诸多反馈。马宇驰表示,未来,CodeArts Snap 将持续演进,不断提升智能化编程能力。他曾提到,在当前阶段而言,从模型优化和工程优化的角度来看,“基于大模型的代码生成” 还面临八大关键技术挑战。这也是 CodeArts Snap 未来演进的方向。

一是中文友好的代码生成。目前诸多大模型的预训练语料数据都是以英文为主,中文语料占比仅为 3% 至 5%。在 IDE 中采用对话式交互时,中文的表现要远远逊色于英文。如何在语料有限的情况下,在保障模型性能的条件下,增强中文语义的理解能力,满足利用中文 / 英文描述同等的代码生成能力,是当前一大关注点。

二是 Prompt 优化与交互式 Input 改进。大模型一大特性就是,在交互时描述越精准, Prompt 写得越好,生成的内容质量就越好。如何在用户意图表达不那么明确的情况下,也能判断用户输入的任务描述完整性和合理性,并通过交互明确意图,提高代码生成准确率很是关键。

三是集成学习探索。当前大模型动辄就是百亿级、千亿级、万亿级参数,要把如此大规模的数据 “吃下去”,推断成本非常高。因此,能否结合预训练模型,在满足推断准确率的情况下,利用参数量更小的模型达到更大规模模型的推断效果,达到提升推断效率的目的呢?

四是体验评估与优化。构建客观且贴近真实工程的评估指标 / 手段,能够更好地帮助行业良性发展。

五是模型在线学习。用户的数据反馈对于模型能力的提升非常有帮助。在保护用户隐私的前提下,基于用户的显式和隐式反馈对在线的大模型进行微调,实现在线模型实时更新,都是业内要探讨的问题。

六是低成本 SFT。如何实现各种研发场景的训练 / 验证数据集快速低成本建设,以及模型的训练及自动验证部署也很关键。

七是后处理。后处理对于提升模型在实际应用场景的效果非常关键。根据项目上下文,检查和修复所生成代码的编译运行错误;结合单元测试,修复生成程序中的逻辑性错误。虽然解决的都是小问题、小错误,但是能让整个代码的生成质量更上一层楼。尤其是未来,将会有更多大模型将同步生成代码和生成测试,两两匹配,在闭环中提升代码整体质量。在这种情况下,后处理对于大模型整体能力的提升非常有帮助。

八是模型轻量化。模型轻量化的重要性毋庸置疑,它关系着成本、效率、性能和用户体验。在保证精度不过多下降的前提下,采用轻量化模型支撑端测算力实现模型推断,也很值得关注。

猜你喜欢

转载自blog.csdn.net/llawliet0001/article/details/132127846