CodeFuse开源这半年

2023 年可以称得上是大模型元年,在过去的这一年里,大模型领域飞速发展,新的大模型纷纷涌现,基于大模型的新产品也吸引着大家的眼球,未来,这个领域又会给大家带来多少惊喜?

蚂蚁也推出了自己的百灵代码大模型 CodeFuse,经历近半年内部打磨后,在 9 月正式对外开源。下面就让我们来看一下,在过去的半年里,CodeFuse 在开源方面取得了哪些进展?

一、让研发变得更简单

在大模型落地到多个场景的过程中,代码自动生成,成为技术实现的必要环节。在这一趋势下,蚂蚁集团基于百灵大模型,推出了蚂蚁百灵研发助手,帮助开发者自动生成代码、注释、测试用例等,提高研发效率。


CodeFuse 源于蚂蚁自身的开发场景及代码库沉淀,基于海量高质量代码数据和代码领域特色词表,和多任务微调技术 MFT,在蚂蚁一万多内部研发人员的日常编码、测试、运维等场景中,经过反复验证与迭代。当前,CodeFuse 从研发效能、DevOps 衍生到了企业IT智能化场景智能体的探索。同时,基于 CodeFuse,蚂蚁集团打造了代码大模型的完整工具链,包括:模型服务、风险防护、数据质量、平台工程。


2023 年中,CodeFuse 及其必要的工具链,面向技术社区开源开放,帮助社区开发人员在此之上作研究、评价和二次开发和训练。


目前,CodeFuse 在蚂蚁各部门落地支持 40 多种编程语言,10 多个主流 IDE 平台。整体采纳率30%,代码通过 AI 占比 20%。比如,CodeFuse 在蚂蚁数字科技的 SOFAStack 云原生应用智能商业产品线全面融合,涵盖设计、研发、测试、运维等领域,形成从领域建模到智能运维端到端 Copilot 产品解决方案,提升了企业级应用的交付效率和质量,加速行业数字化降本增效。

二、丰富的开源内容

CodeFuse 的使命是开发专门设计用于支持整个软件开发生命周期的大型代码语言模型(Code LLMs),当前内容涵盖代码、运维、分析、测试、推理、评价六大方向。截止 2023.12.31,CodeFuse 已累计开源了 11 个代码仓库、4 个数据集、11 个大模型参数文件,总计关注/点赞数超过3000、下载量超过 2.4 万,并有 1 篇论文已被接收,2 篇预影印在 Arxiv 上。

1、代码 - MFTCoder 系列:

国际首个高精度、高效率、多任务、多模型支持、多训练算法,大模型代码能力微调框架;多任务微调的技术细节已在 Arxiv 公布,可参考MFTCoder论文,以及此前发布的文章

预训练语言模型可以在大量的文本数据上学习通用的语言模式和结构。通过运用无监督学习技术,模型可以基于前面的词序列来预测句子中的下一个词。然而,仅仅进行预训练并不能在特定的自然语言处理任务上取得高性能。因此,需要在特定任务的小型数据集上对预训练模型进行微调,以学习任务特定的特征并提高性能。微调过程使用监督学习技术将预训练模型适应到特定的任务上。将训练过程分为预训练和微调两个阶段,可以使自然语言处理模型充分发挥无监督学习和有监督学习的优势。

但是,需要注意的是,当模型的参数量巨大时,为每一个下游任务独立进行微调并部署将需要大量的资源。然而,是否存在一种方法可以让一个模型同时支持所有的下游任务呢?答案是肯定的,多任务微调(multitask fine-tuning,MFT)为解决这个问题提供了一种有效的途径。

多任务微调不仅能够节省资源,还能够带来其他优势。通过联合训练,模型可以学习到多个任务之间的特征和规律。相比于针对每一个任务单独进行微调,多任务微调能够更好地完成各种任务。同时,由于学习到的特征和规律是相互联系的,模型的泛化能力也会得到提高。这意味着,即使在面对未见过的任务时,模型也能够表现出色,因为它已经学习到了许多相关任务的特征和规律。

2、运维 - DevOps 系列:

业界首个开源的中文开发运维大模型,能够帮助工程师回答在 DevOps 生命周期中遇到的问题,并提供通过检索增强生成、工具学习和沙盒环境来构建软件开发全生命周期的 AI智能助手;详细介绍可以参看此前文章 DevOps-Eval、DevOps-Model、DevOps-Chatbot

我们希望用户逐渐从各处资料查询、独立分散平台操作的传统开发运维模式转变到大模型问答的智能化开发运维模式,改变人们的开发运维习惯。

核心差异技术、功能点:

  • 智能调度核心: 构建了体系链路完善的调度核心,支持多模式一键配置,简化操作流程。
  • 代码整库分析: 实现了仓库级的代码深入理解,以及项目文件级的代码编写与生成,提升了开发效率。
  • 文档分析增强: 融合了文档知识库与知识图谱,通过检索和推理增强,为文档分析提供了更深层次的支持。
  • 垂类专属知识: 为 DevOps 领域定制的专属知识库,支持垂类知识库的自助一键构建,便捷实用。
  • 垂类模型兼容: 针对 DevOps 领域的小型模型,保证了与DevOps相关平台的兼容性,促进了技术生态的整合。

依托于开源的 LLM 与 Embedding 模型,可实现基于开源模型的离线私有部署,此外,也支持 OpenAI API 的调用。

3、分析 - CodeFuse-Query:

基于查询的代码分析引擎,适合大规模、复杂的代码库分析场景。可参考论文 https://arxiv.org/abs/2401.01571;详细介绍可以参看此前文章

CodeFuse-Query 的特点和优势可以概括为以下几点:

  • 高度可扩展:CodeQuery 可以处理大规模的代码库,且能够适应不同的分析需求。这种高度的可扩展性使得 CodeQuery 可以在大型组织中发挥重要作用。
  • 以数据为中心:CodeQuery 将源代码和分析结果视作数据,这种以数据为中心的方法使其在处理大数据环境中的代码分析问题时具有独特优势。
  • 高度集成:CodeQuery 能够无缝地融入大型组织的各种系统中,包括数据仓库、数据计算设施、对象存储和灵活计算资源等。这种高度的集成性使得 CodeQuery 在大型组织中的使用变得更加方便和高效。
  • 支持多元化的需求:CodeQuery 不仅可以处理大规模的代码库,还可以应对各种复杂的分析需求,包括服务质量分析需求、跨编程语言分析需求、算法需求和性能需求等。

     

4、测试 - Test-Agent:

测试领域的“智能体”,打造创新的测试领域解决方案,构建24小时在线的测试助理服务;详细介绍可以参看此前文章 

大模型的号角已经吹响,测试领域大模型也在不断进化中,通过预训练过程中积累的丰富世界知识,在复杂交互环境中展现出了非凡的推理与决策能力。

尽管在测试领域中,基础模型取得了显著的成果,但仍然存在一些局限性,特定领域的测试任务通常需要专业化的工具或领域知识来解决。例如,基础模型可以通过预训练知识完成单次测试代码生成和测试文本生成等任务,但处理复杂的集成用例生成、特定领域用例生成和测试流程 pipeline 交互等问题时,需要更专业的工具和领域知识。

因此将专用工具与基础模型整合在一起,可以充分发挥它们各自的优势。专用工具可以解决模型时效性不足、增强专业知识、提高可解释性和鲁棒性的问题。而基础模型则具备类人的推理规划能力,可以理解复杂的数据和场景,并与现实世界进行交互。

5、推理 - ModelCache:

大模型语义缓存系统,通过缓存已生成的模型结果,降低类似请求的响应时间,提升用户体验;详细介绍可以参看此前文章。

当前大模型服务面临以下三个挑战:

  • 成本高:大模型参数量千亿级别,单实例就需要多张 A10 卡,规模化部署成本高昂。因此,当前大模型服务基本按照处理的 token 数量计费,导致用户侧使用成本也居高不下。
  • 速度慢:大型模型的推理速度也是一个关键问题。在许多实时应用中,如对话系统、业务助手,响应时间要求非常高,通常在毫秒级别。然而,大型模型的推理速度往往较慢,在秒级,导致无法实时返回结果,用户体验下降。
  • 稳定性无保障:由于单实例部署成本高昂,当前大模型服务接受到大流量请求时,通过限流的方式,防止服务不可用。

针对上述挑战,引入大模型缓存可以解决当前问题:通过引入 Cache 机制,缓存已计算的结果,当接收到类似请求,可以直接从缓存获取结果,避免重复计算,节约计算资源,显著提升响应时间,提升用户体验;同时,缓存可以起到分流的作用,降低透传到后端的请求量,降低后端压力,提升服务稳定性。因此,Cache 作为一种重要的大模型服务部署解决方案,在资源有限和对实时性要求较高的场景下,可以帮助企业和研究机构更好地应用大型语言模型,提升模型性能和效率。未来,随着大型模型在各个领域的广泛应用,Cache 的重要性将不断凸显。

6、评测 - CodeFuse-Evaluation:

在 HumanEval-x、MBPP 的基准上开发的编程领域多任务的评测基准, 可用于评估大模型在代码补全,自然语言生成代码,测试用例生成、跨语言代码翻译、中文指令生成代码等多类任务的性能;详细介绍可以参看此前文章。

目前对于大语言模型评估的按照生成的结果是否可定量衡量比如数学计算和文章生成分为客观评测和主观评测。客观评测:基于业界影响力较高评测基准对生成内容进行各维度评估;主观评测:组织多位有专业背景知识的专家进行相关维度评估。

按照评测执行方式可分为自动化评测,人工评测和模型评测三类。

模型训练完成后,基于评估基准跑出评分,这个过程可以完全工程化的执行因此成为自动化评测。人工评测特别是领域知识需要着急各领域专家进行测评,此种方式评估成本较高但是评估结果更具有说服力。模型(如PandaLM)评测模型即通过训练大模型学习到人类对不同生成文本的总体偏好,并作出基于习得的人类偏好的相对评价,这种评价方式相比人工更稳定、高效。

三、精彩的社区活动

我们深知,开源不只是开放代码,还包括在社区的分享与交流。在开源内容上干货满满,社区活动定也不落下风,让我们看看都有哪些吧!!

8 月,我们在 AI+ 软件研发数字峰会上进行了专场分享《基于 AIGC 的测试生成》;

9 月,外滩大会上正式对外宣布 CodeFuse 开源;

10 月,在 MLSummit 2023 上,对外分享了 CodeFuse 研发经验;

11 月初,在云栖大会上进行 CodeFuse 专题演讲;

11 月,和始智AI等联合举办了“代码大模型技术与应用发展”论坛;

12 月初,在 CCF 中国软件大会上,与参会者现场体验、互动交流;

12月末,在全球软件开发者大会QCon上经验分享《基于 CodeFuse 的下一代研发探索》。

四、获得业界认可

今年,CodeFuse 还获得了多个奖项,感谢业界的认可:

  • 荣获开源中国 2023 年度优秀开源技术团队

  • 入选极客公园 2023 大模型先锋案例 TOP10

五、2024新的期待


2023年以来,大模型在代码领域落地不断深入。经过一年的实践,我们对相关的技术也有了更深层次的理解与认识。也看到了很多有趣的方向与落地实践。在 2024 新的一年里,我们还会继续深耕开源:

  • 更多创新功能发布,例如近期1月份将发布支持 MoE 的 MFTCoder v0.2; 2月份将发布支持前端设计到代码的训练框架和模型;
  • 更多的线下活动,会组织多次 CodeFuse 线下meetup,欢饮感兴趣的同行多多参与;也会积极参与国内和国际行业会议/论坛更多分享CodeFuse的实践经验;
  • 更多的社区参与和互动,会社区调研,让大家能够参与到项目中来;包括不限于发起社区一起捉虫、一起贡献新特性,推动相关体系的标准化,甚至组织相关比赛活动等。

非常欢迎大家能够跟我们一起交流探索,一起来定义下一代基于大模型的全生命周期研发解决方案。欢迎大家参与到我们社区中,一起探讨、交流。 2024,一起向未来!

CodeFuse官网:https://codefuse.alipay.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/324310.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

STM32F103标准外设库——寄存器 (二)

个人名片: 🦁作者简介:一名喜欢分享和记录学习的在校大学生 🐯个人主页:妄北y 🐧个人QQ:2061314755 🐻个人邮箱:2061314755qq.com 🦉个人WeChat:V…

9.1、加密技术原理详解

目录 一、加解密定义 二、加密技术分类 2.1、对称加密 2.2、非对称加密 三、对称加密算法 四、非对称加密算法 五、对称加密和非对称加密比较 六、对称加密和非对称加密结合 一、加解密定义 数据加密:对原来为明文的文件或数据按某种算法进行处理&#x…

项目解决方案:多个分厂的视频监控汇聚到总厂

目 录 1、概述 2、建设目标及需求 2.1 建设目标 2.2 需求描述 2.3 需求分析 3. 设计依据与设计原则 3.1 设计依据 3.2设计原则 1、先进性与适用性 2、经济性与实用性 3、可靠性与安全性 4、开放性 5、可扩充性 6、追求最优化的系统设备配置…

vue-ESlint代码规范及修复

1. 介绍 ESLint:是一个代码检查工具,用来检查你的代码是否符合指定的规则(你和你的团队可以自行约定一套规则)。 在创建项目时,我们使用的是 JavaScript Standard Style 代码风格的规则。 规范网址:https://standardjs.com/rules-zhcn.htm…

(2024,分数蒸馏抽样,Delta 降噪分数,LoRA)PALP:文本到图像模型的提示对齐个性化

PALP: Prompt Aligned Personalization of Text-to-Image Models 公和众和号:EDPJ(进 Q 交流群:922230617 或加 VX:CV_EDPJ 进 V 交流群) 目录 0. 摘要 4. 提示对齐方法 4.1 概述 4.2 个性化 4.3 提示对齐分数抽…

小迪安全第二天

文章目录 一、Web应用,架构搭建二、web应用环境架构类三、web应用安全漏洞分类总结 一、Web应用,架构搭建 #网站搭建前置知识 域名,子域名,dns,http/https,证书等 二、web应用环境架构类 理解不同web应用组成角色功能架构 开发…

【固态钽表面贴装电容】 MIL-PRF-55365 美军标

钽电解电容器是体积效率、电气参数稳定、高可靠性和长使用寿命是主要考虑因素的应用的首选。 钽/氧化钽/二氧化锰系统的稳定性和对高温的耐受性使固体钽消泡器成为当今表面贴装组装技术的合适选择。 钽不是纯净状态的。 相反,它通常存在于许多氧化物矿物中&#xf…

RAG常见七大坑

论文题目:《Seven Failure Points When Engineering a Retrieval Augmented Generation System》 论文地址:https://arxiv.org/pdf/2401.05856.pdf 这篇论文主要探讨了构建检索增强生成系统(Retrieval Augmented Generation, RAG)…

如何正确使用数据库的读写分离

本文已收录至我的个人网站:程序员波特,主要记录Java相关技术系列教程,共享电子书、Java学习路线、视频教程、简历模板和面试题等学习资源,让想要学习的你,不再迷茫。 背景 在应用系统发展的初期,我们并不知…

QT图表-折线图、曲线图

时间记录:2024/1/15 一、使用步骤 1.添加图表模块 .pro项目管理文件中添加charts模块 QChart类:图表类 QChartView类:图表显示类 2.ui文件中添加QChartView组件 (1)选择一个QGrapicsView组件将其拖拽到ui界面上合适位…

C语言从入门到实战——结构体与位段

结构体与位段 前言一、结构体类型的声明1.1 结构体1.1.1 结构的声明1.1.2 结构体变量的创建和初始化 1.2 结构的特殊声明1.3 结构的自引用 二、 结构体内存对齐2.1 对齐规则2.2 为什么存在内存对齐2.3 修改默认对齐数 三、结构体传参四、 结构体实现位段4.1 什么是位段4.2 位段…

vue前端开发自学,插槽练习,同时渲染父子组件的数据信息

vue前端开发自学,插槽练习,同时渲染父子组件的数据信息! 如果想在slot插槽出口里面,同时渲染出来,来自父组件的数据,和子组件自身的数据呢。又有点绕口了。vue官方给的解决办法是。需要借助于,父组件的自定义属性。 …

边缘计算的挑战和机遇(结合RDH-EI)

边缘计算的挑战和机遇 边缘计算面临着数据安全与隐私保护、网络稳定性等挑战,但同时也带来了更强的实时性和本地处理能力,为企业降低了成本和压力,提高了数据处理效率。因此,边缘计算既带来了挑战也带来了机遇,需要我…

【电子通识】各国电源插头标准和电压标准

在使用仪器时,通常会在使用之前去看下规格书。比如安装指南、快速使用指南等等来提取我们需要的信息。 一般大型的仪器供应商会卖往不同的国家,所以都会配置多种电源线。如下所示规格书中对仪器的电源线种类进行了说明。其中有中国、美国、加拿大、日本…

CentOS将磁盘剩余空间分配到已有分区

CentOS将磁盘剩余空间分配到已有分区 引growpartresize2fs 引 手里有台云服务,之前磁盘只有60G,在执行SQL语句时报错No space left on device. 通过df -h查看磁盘占用情况,确实所剩无几了 通过云服务后端控制台升级了下配置,将…

16 命令行模式

命令行模式 将行为的执行与与行为的调用通过命令分离,行为的的调用者不需要知道具体是哪个类执行的,他们之间通过命令连接。 demo的目录结构 命令的执行者(接口) package behavioralpattern.commandpattern.actuator;import ja…

宁夏银行关键系统基于OceanBase的创新实践

宁夏银行成立于 1998 年,是宁夏第一家“宁”字号地方商业银行,西部地区第一家以省级行政区命名的地方商业银行。2016 年,被中国人民银行评为宁夏地区系统性重要银行。目前,全行设分支机构 97 家,其中总行营业部 1 家&a…

vulnhub靶场之DC-9

一.环境搭建 1.靶场描述 DC-9 is another purposely built vulnerable lab with the intent of gaining experience in the world of penetration testing. The ultimate goal of this challenge is to get root and to read the one and only flag. Linux skills and famili…

编码技巧:如何在Golang中高效解析和生成XML

编码技巧:如何在Golang中高效解析和生成XML 引言Golang中的XML基础解析XML文件生成XML文件错误处理和调试高级技巧和最佳实践总结 引言 在当今数据驱动的编程世界中,有效地处理各种数据格式是每个开发人员必备的技能之一。其中,XML&#xff…

【MATLAB】CEEMD+FFT+HHT组合算法

代码原理 CEEMD(集合经验模态分解)FFT(快速傅里叶变换)HHT(希尔伯特-黄变换)组合算法也是一种常见的信号处理和分析方法。这种组合算法结合了CEEMD、FFT和HHT三个步骤,可以处理非线性和非平稳信…