引言:
2023年被广泛认为是大模型技术的元年,大模型技术快速发展,并得到了广泛关注。以ChatGPT的爆火为标志,大语言模型开始进入公众视野,引发了各行各业对该技术的探索。2024年则是大模型的应用年,从金融、媒体、教育到制造业等多个领域,各类大模型应用展现出巨大的潜力和价值,成为推动各行各业数字化转型的重要力量。在软件工程领域,大模型赋能开发人员已展现出一定效果,主要聚焦于代码补全、代码生成等开发效能方面的赋能提升,而在赋能开发安全能力方面的成功案例极少。同时,安全人员的短缺以及大量初中级开发人员安全能力的不足,使得开发安全领域急需引入新的解决方案,大模型为解决这些问题提供了可能,通过大模型推动开发安全智能化,对于提升企业应用安全水平具有重要意义。
一、垂域模型训练
为了构建性能优秀的开发安全垂域大模型,我们精心挑选了合适的原生基座模型,进行系统的训练、微调和优化,打造出智乘大模型,经过微调和优化的智乘大模型在开发安全与研发效能领域展现出远超原生基座模型的性能表现,训练过程大致如下:
① 基座模型选择
我们持续关注业界各类大模型的最新进展并对各种优秀模型进行评估和应用,建立了完整的评估体系,对各类模型的基础性能进行全面对比,作为选择基座模型的重要参考。同时,除了模型的基础性能外,还特别考量了以下三个关键要素:首先,基座模型必须支持本地私有化部署,能满足用户后续的个性化需求;其次,模型参数量适中,避免资源浪费,确保较好的性价比;最后,模型处理代码数据时表现出色,并且具备高度的稳定性和可靠性。
② 大模型开发安全知识微调训练
为了有效地将开发及安全领域知识融入基座模型中,我们对其进行了针对性的微调训练,在训练数据准备阶段,我们主要搜集了与开发、安全领域相关的各类资源,包括书籍、知识库、学术论文、社区文章、项目代码库及其文档资料、编码规范、漏洞库(包括组件安全数据、CVE/CWE/CNVD等公开漏洞数据),以及基于我们多年攻防护网和漏洞挖掘的经验积累的领域知识库并对数据进行清洗和规范化处理,以保证其质量。在训练过程中,我们采用了基于QLora的训练方法,它通过引入高精度权重和可学习的低秩适配器,能够在降低微调成本、提高微调效率的同时,保持模型的准确性。在训练完成后,为保障微调实际效果,我们对模型进行了系统的评估,评估测试集主要由两个部分构成:第一部分是通用测试集,用以评估模型在多样化场景下的泛化能力。第二部分是开发安全领域定制测试集,基于我们对开发安全实际需求的深入理解而自主构建,它聚焦于评估模型在处理与软件开发安全性相关的各种任务时的专业能力。
③ 有监督微调训练(SFT)
有监督微调训练是提升模型生成效果的关键步骤,在此过程中,我们使用带有明确标签的数据集来训练模型,使其能够更好地满足实际应用的需求,有监督微调的数据集由输入文本和相应的输出标签组成,数据集的构建主要依赖于人工标注以及利用其他大模型智能生成,构建的数据包括代码分析数据集、漏洞分析数据集以及安全知识数据集等,同时,为了防止模型在微调过程中减弱其通用能力,我们在有监督数据集中也纳入了小部分通用能力数据,预防可能出现的灾难性遗忘。
二、推理与部署优化
我们针对大模型的推理和部署也进行了多项重要优化,借助Continuous Batch、Blocked K/V Cache等特性,显著提高了推理的效率,确保大模型能够在各种应用场景下实现快速、准确的响应。在模型部署方面,我们结合使用模型轻量化、模型量化相关技术达到更好的优化效果,通过模型压缩、剪枝等模型轻量化技术,在确保模型性能不受影响的前提下,减小了模型的体积和复杂度,使其更易于部署和集成到各种设备和平台并利用权重量化和k/v量化,进一步降低模型的存储和计算需求,提高显存利用率和并发能力,而且经过量化处理的模型在回复效果上依然与原始模型保持一致,这些优化措施缩减了模型的大小,加速了推理过程,使得智乘大模型在实际应用中更具效率和实用性。
三、基于大量实践优化的prompt工程
Prompt工程是大模型应用的重要一环,对于提升模型性能至关重要,经过精心设计的Prompt能帮助模型更精准地捕捉用户意图,从而提供更为精确且个性化的响应,但Prompt优化依赖于经验积累,是长期且复杂的过程,需不断地试验与调优,多年来我们专注于开发安全领域,积累了深厚的领域知识,这为持续优化Prompt提供了坚实的基础,基于以上经验积累我们对Prompt进行了大量优化,确保其高效准确。同时,我们采用了模板化方法进行Prompt设计,以现实快速调整和适应不同任务的需求,首先,我们明确Prompt的核心功能和目标,设计通用框架,该框架包括基本结构、参数设置以及调整范围等关键组成部分,然后,根据具体任务需求,对通用模板进行定制化调整,这种模板化的设计显著提高了开发效率,便于迭代优化,以应对不同任务场景,持续提升模型的性能和效果。
四、RAG技术助力大模型能力拓展
RAG检索增强生成技术,通过整合外部知识库,实现大模型内在知识与外部数据的完美融合,克服大模型在处理特定领域问题时的局限,通过RAG,智乘大模型能实时从外部知识库中吸取新信息,显著提升应对专业场景的能力,在具体项目中,我们运用RAG技术将客户内部知识库挂载于大模型,使模型生成的结果更加符合客户项目的实际情况和业务的真实场景,取得了较好的实践效果。在实现过程中,我们采用了包括向量数据库和语义搜索技术在内的多种技术手段,并解决了一系列技术难题和挑战,如数据源的有效处理、数据切分、检索效果优化、检索结果控制、复杂查询处理、可解释性与鲁棒性问题等,通过不断优化和完善RAG的应用,使其在项目中发挥出更大的价值。
五、智能编码Agent
在开发者日常工作中,开发助手类工具已成为重要的生产力工具,显著提升研发人员编码效率,智乘大模型Agent以插件的形式嵌入IDE,无缝对接IDE环境。同时,Agent具有感知工程环境信息的能力,为大模型的输出提供完整的上下文支持。同时,它能实时监听开发者的编码活动,并据此动态调整服务内容,以满足开发者的需求,总体而言,智乘大模型Agent为开发者提供了强大的辅助支持,极大地提升了编程效率,其主要功能涵盖代码补全、代码生成、编码规范审计、代码安全审计等方面。
跨IDE和编译器上下文信息获取技术是智乘大模型Agent的核心技术之一。通常不同IDE/编辑器在编程语言解析能力上存在明显差异,这不仅影响代码补全、调试等功能的准确性,也在一定程度上制约了Agent在不同IDE之间的通用性和兼容性。为解决这一问题,我们创新性实现了跨IDE和编译器上下文信息获取技术。该技术不再依赖IDE或编译器的内置解析能力,而是自带了一套完整的语法、依赖解析机制,这套机制通过静态程序分析技术能够准确理解代码的语法结构和依赖关系,从而生成高质量的上下文信息。
此外,智乘大模型Agent具备调用外部工具的能力,通过集成SAST、SCA等工具,为用户提供了代码安全审计和编码规范审计等功能,在开发者编写代码的过程中,Agent能够实时检查代码的安全性,并提醒开发者可能存在的安全风险,同时,它还可以根据预设的编码规范对代码进行审计,确保代码符合团队的编码规范,提高代码的质量。
六、实践效果
以智乘AI大模型作为基座支撑,并融合我们过往多年来在开发安全领域丰富的落地实践经验,以及SAST(静态应用程序安全测试)和SCA(软件成分分析)技术,打造了开发者安全智能助手。它可以极大的降低检测结果误报,实时生成缺陷成因解释,生成漏洞修复建议代码,根据上下文自动补全代码,通过智能交互式问答功能可快速解答各类与研发、安全相关的问题,在开发编码阶段,从安全、合规、质量、效能四个方面为开发者提供全方位赋能。
以某银行客户为例,开发者安全助手在该银行应用的业务系统数达到3000+,开发者用户数达到7000+,日均交互次数10万+,通过融合SAST、SCA与智乘AI大模型,漏洞检测准确率提升90%,千行代码漏洞率下降50%,开发者编码效率提升35%,漏洞修复成本降低40%,整体研发效能提升10%。