从设计到研发全链路 AI 工程化体系 | 新程序员

f3120440dc9ca97bce0387d81caa964c.gif

【导读】将大模型技术产品化和工程化已成为业界各大公司在研发 AI 大模型之后的重点发力方向。这一转变促使 AI 工程化从概念验证迈向实际应用,展现出广阔的应用前景。本文将从设计与研发领域出发,深度分享 360 在工程化流程中的独特实践经验以及对未来 AI 工程化发展方向的独到见解。

本文出自 2024 全球软件研发技术大会中的演讲,同时收录于《新程序员 008》。《新程序员 008》聚焦于大模型对软件开发的全面支撑,囊括 Daniel Jackson 和 Daniel Povey 等研发专家的真知灼见与“AGI 技术 50 人”栏目的深度访谈内容,欢迎大家点击订阅年卡。

作者 | 杨龙辉

责编 | 屠敏

出品丨新程序员编辑部

1cb7d1a9843cd1ced265a905a8896d44.png

在大语言模型迅速发展的背景下,AI 工具和产品不断涌现,如广泛用于代码编写的 ChatGPT、GitHub Copilot,可以文生图的 Midjourney、轻松在本地运行大模型的 Ollama,以及 360 的智脑、文心一言和通义千问等国产 AI 工具,几乎覆盖了我们日常设计、编码、办公、协作、聊天、音频、视频等方方面面。只要是涉及人机交互的场景,基本上都能找到一个具有 AI 功能的工具。

从工程化角度来看,AI 工具在产品交付过程中,从需求分析到产品设计、开发再到上线运营,可以在很大程度上辅助人类工程师,提高工作效率和质量。我们团队早期就开始使用各种 AI 工具来提升效能,不过,这些多样化的工具,种类繁多,也带来了一些困扰。

首先,从应用性上来看,不同人对工具的使用效果差异很大。有些人使用 ChatGPT 生成代码时非常高效,而有些人则需要花费更多时间调试。此外,某些工具的使用方式复杂,未必适合所有人。

其次,团队协作也是一个问题。使用第三方工具时,往往依赖于它们的平台能力,导致与公司现有系统的集成度不高。如果遇到问题,解决方式通常是通过口口相传,缺乏系统化的知识共享。推广和培训这些工具需要成本,团队成员学习使用这些工具有一定难度,最终导致团队在一致性、标准化交付流程上也会存在差异化。

因此,我们团队内部讨论了两种解决方案:

  • 第一种方案是开发 AI 工具。我们可以将外部的开源工具或插件(如 VS Code 中对接 GPT 的插件)集成到现有的软件中。经过研究,我们发现这种方式灵活性高、建设周期短、能够快速实现工具的统一和提升应用性。然而,缺点是集成度较低,只能在某些环节上起作用,无法进行上下游的深度集成,也容易形成数据孤岛。要想解决数据孤岛问题需要做更多的数据分析和整合,工具可能会演变成一个产品。

  • 第二种方案是直接开发 AI 产品。我们思考是否要在软件开发的各个节点上使用领域模型,基于领域模型,再进一步构建 AI 服务,与工程化进行深度融合。这种方式不仅为平台提供 AI 能力,还能在模型之间实现互操作。例如,模型可以根据自然语言需求自动生成页面设计和代码,最终只需人工确认后上线。这种方式的优点集成度高、应用性强、数据可以在统一的工程服务中进行共享和二次调优。缺点是此方法建设成本高,需要在工作流程中构建领域模型。

两种方案各有利弊,究竟该如何抉择?当时的我们思考了一点,即这两种方式究竟哪一种可以实现工程效率最大化,因为工程的本质就是既提供了团队的规范,又能使团队的效能和产品质量达到最大化。基于这一点,我们选择了朝着 AI 产品化的方向发展,可以让整个工程化的链路能够迎来二次革新。

当然,这其中也有挑战:

  • 成本问题:我认为对于小团队而言,直接使用开源工具或快速插件等AI工具即可,能够快速提高团队效率。但是,如果团队需要微调并部署一个大模型,还需要构建上层服务,那么首先要考虑团队是否具备相关专业能力。其次,微调模型需要依赖数据和机器成本,都是需要考量的因素。

  • 安全隐私:隐私问题是一个重要考量,使用第三方模型可能会有数据泄露风险,尤其是对于以安全为主的 360 来说,这是不可忽视的。

  • 能力限制:当前 AI 的泛化能力有限,对于未见过的数据,它往往会给出不准确的回答。其次是适配性问题,目前的 AI 在处理复杂任务时仍有局限性。

综合考虑这三个问题,可以发现 AI 在能力上有很大的改进空间。从 AI 的能力来看,它可以辅助人类完成一些工作,弥补人类在编码或设计上的不足,缩短交付周期。此外,AI 还可以处理重复性工作,提高工作效率和产品质量,辅助团队实现效能最大化,进而提升业务结果。

484e8d70d7e50d779d9835ae82cfab4c.png

360 工程化流程的演进

现在,我们在朝着产业化方向发力的同时,360 的工程化流程也在不断地演进。在内部,我们按照三个步骤推进(见图 1):首先建设统一的基础云服务平台实现自动化;其次基于流程自动采集数据构建数字化,因为在这个 AI 时代,数据至关重要;最后进入智能化阶段,建设领域专家模型赋能工程化。

f248362e1b6d94fd8590b799333e1ba7.png

图 1  效能云自动化与数字化建设

在自动化架构层面,当拿到产品需求后,我们会进行需求拆解,并自动分配给相应的设计和开发团队。设计师收到任务后,会创建对应的画板;研发人员则会创建相应的分支。通过任务这条主线,我们将工作流程串联起来。设计师完成视觉或交互设计后,可以提交给开发团队。开发团队通过视觉通信打开集成开发环境(IDE),进行编码、合并请求(MR)、提测。测试环节会自动创建提测单,进行冒烟测试、集成测试或验收测试。测试无误后,需求自动流转至上线,通过持续集成/持续部署(CI/CD)完成上线审批。需求完成后,我们会进行归档,并制作数据看板展示业务、性能和效能指标。

自动化架构的效能云基础服务包括数据、流程、权限、技术架构、规范和工具等。下一层则为需求池、代码库、设计工具、CI/CD、物料市场、审计流、安全、日志和监控等能力。最底层则是由 360 的三大平台提供支撑,分别是用于需求管理的极库云;用于管理设计物料如设计稿和设计工具的设计云;作为一站式研发平台的 FinerWork。

360 在数字化进程上从四个维度和三个视角展开,即从交付率、交付质量、交付成本和交付能力四个维度进行数据收集,立足于个人、团队和项目三个层面的视角。这一阶段的数据来源均是交付周期自动化采集。

数字化之后,进入智能化阶段。智能化分为两个方面:

  • 一是构建领域模型:在办公、设计、代码、测试等不同领域建设专家模型,专家模型会根据对应在设计侧或研发侧的一些场景进行 AI 的能力的提供。例如,设计侧可以利用文生图功能或对 Sketch、Figma 插件进行能力增强;开发侧则可以通过代码生成、AI IDE 增强等方式提供支持。这些功能依赖于 360 智脑大模型。

  • 二是基于领域模型构建 Agent 服务。在模型建立和服务能力就绪后,我们构建 AI Agent,使其能够自动完成简单的重复性任务。

此处,我们将从设计和开发两个方面寻找机会点和探索方向,因为在产品交付过程中,设计和开发阶段的需求弹性较大,因此成为提升交付速度的关键。

我们对设计与研发的过程进行了分析,绘制了流程图(见图 2),从中发现了两个关键痛点:设计团队从灵感迸发到具体化设计、优化完善的过程可能充满反复和不确定性——我们称这一阶段为“绝望的深渊”,因为它往往需要大量的尝试和修改,甚至没有产出;开发团队从工程初始化到实际编写业务逻辑的过程同样增速缓慢。

536d0e94c748a43a49d67c24ba621c32.png

图 2  设计与研发过程分析

针对这两个核心场景的痛点,我们在模型构建时特别关注,通过建立领域模型赋能平台,向设计和开发平台提供 AI 能力。例如,通过文生图功能帮助设计师快速生成初步设计稿,从而显著提高设计效率;通过代码生成、代码审查和代码聊天等功能,协助开发人员进行代码设计和编写,提升开发效率。

6bfccc8620bb072d93d217450cc4568f.png

360AI 在工程化中的实践

基于行业痛点和应用场景,我们将领域模型与业务相结合,构建了设计侧物料平台和研发侧工程平台。

设计侧物料平台

在设计物料平台方面,我们内部开发了一款名为“缤果 AI”的产品,该产品支持多端应用,包括 Web 端、Figma、Sketch 以及 Photoshop 端。这款产品集成了设计广场、AI 小工具和图片创作等功能。为了支撑这些功能,我们构建了一套产品架构(见图 3),涵盖了从模型到应用场景的解决方案。

4388c425dd5fff8b8192e240bfa5ebfd.png

图 3  缤果 AI 产品架构

在模型层面,我们依赖于 Stable Diffusion,基于此模型,我们进行了大量的微调工作以创建多个基础模型。随后,我们利用 LoRA 技术进一步微调风格模型。最终,我们将基础模型与风格模型结合,形成融合模型,用于特定场景,这些模型通过 Stable Diffusion 提供的 AI 能力集成到产品中,进而构建服务层,提供文生图、图生图、图片反推、延展以及线稿上色等功能,从而支持营销电商、定制化以及其他通用场景。此外,“缤果 AI”增强了设计工具 Figma、Sketch 以及 Photoshop 的功能。

在模型微调的过程中,我们总结出了一套被称为“631”的方法论:数据占 6 分,参数占 3 分,剩下的 1 分为“玄学”。之所以提及“玄学”,是因为在实际操作中,即使数据和参数都准备妥当,也可能得不到预期的结果,需要反复调试才能达到满意的效果。

微调过程包括数据准备、数据标注、参数调优、模型训练和结果测试。缤果 AI产品中,我们主要是对基础、风格模型做数据采集。具体而言,我们使用 Dreambooth 来训练基础模型,而 LoRA 则用于训练风格模型。

在数据准备完成后,我们会进行数据标注,使用封装的 Factory 库,利用 WebUI 能力先自动打标,然后导入到第三方工具,再进行人工筛选二次打标确认。没问题后,我们对模型进行参数调优,其中训练轮次和学期率是最重要的两个参数。接下来是模型训练阶段,我们会监控损失函数(loss)的变化趋势,一般认为损失值接近 0.08 时,模型训练结果较为理想,但最终仍需以实际测试结果为准。

基于“缤果 AI”,我们尝试将其应用于营销图片场景,还与智能硬件如 360 手表联动,通过使用“缤果 AI”替换底图,可以大幅缩短交付周期并提高效率。

研发侧工程平台

在研发工程方面,基于一站式的研发平台 FinerWork(见图 4),我们为研发提供了三大场景 AI 能力加持:聊天、代码和工具。产品架构底层依赖于 360 智脑模型,微调出代码聊天、代码补全、代码审查等领域模型。这部分的模型微调方法与设计侧物料平台相同,因此不再赘述。

7a00a741c5143d2a781b10055977ff3d.png

图 4  FinerWork AI 产品架构

接下来,我们将着重关注 CodeChat 模型数据方案中的 npm 私有源文档数据采集与处理(见图 5)。这一过程分为数据采集、构建 Prompt、数据标注三个阶段。数据采集主要来源于工程平台的自动流程,以及代码工程中的流水线安装错误日志、IDE 安装、运行错误上报、私有包服务数据。

从关键数据中我们去提取一些标注,比如一些 OS 版本、语义化版本号、主版本文档功能等。有了这些信息之后,构建指令供大模型进行分析,分析结果经过人工审核确认后,用于扩充数据集,确保数据集的质量。完成数据准备后,开始进行模型训练和结果测试。

34999b9bcca223b45f02e5033e64f411.png

图 5  CodeChat 模型数据方案

微调后的 CodeChat 能够提供代码解析功能,并允许用户一键打开 IDE。应用场景包括流水线错误分析、IDE 内解决问题、APM 性能分析以及线上问题分析等。

AI IDE 也是研发侧工程平台的另一个重要组成部分,我们通过 AI IDE 做场景融合,最初使用 CodeServer,但后来选择了 OpenSumi。选择 OpenSumi 的原因在于其开放的 AI 能力、高度定制化的特性以及兼容 VS Code 插件市场的优势。基于 OpenSumi,我们提升了 AI 能力与 IDE 的集成度,实现了多种场景优化,如 AI Code、Inline Chat、智能终端、APM 性能分析、代码审查(Code Review)和即时通讯(IM)等。

e13199586c7941586a56f4c01480d543.png

AI 工程化未来畅想

面向 AI 工程化未来,我们从三个维度进行了深入思考:

  • 基于大语言模型微调,产出特定领域模型;

  • 基于领域模型进一步构建 Agent,增强复杂任务处理能力,让其能承担设计和研发中的重复性任务;

  • 拥有 Agent 后,下一步可以实现多智能体系统(Multi-Agent)。

我认为 Multi-Agent 非常适合工程化,因为工程化的 SOP(标准操作程序)交付流程是固定的,从一个节点到另一个节点都是固定的,所以它可以对这些节点进行编排、共享、自主分工和协作。这也使得 Multi-Agent 能实现端到端的智能交付(见图 6),即从用户需求的产生到最终产品的交付,全过程实现自动化和智能化。当然,这一过程中依赖一个 Multi-Agent 运行时系统,该系统包含三个部分:

  • 消息中心(Shared Message Pool):用于所有智能体消息共享、发布和订阅;

  • 工具库(Tools):底层依赖各种 API、企业私有库、外部设置、外部搜索等工具来支持多智能体的运行;

  • Agent Detail:包含记忆模块、任务拆解和执行任务等。

举例说明,当用户提出开发一个 To Do List 的需求时,PM Agent 会将消息发送给 Engineer Agent。Engineer Agent 收到消息后,会通过内部记忆模块查看是否有类似的项目代码,并进行任务拆解和执行。任务执行完成后,消息会返回消息中心,通知 QA Agent 进行自动化测试。 

5343cec3240660999deeb3714e874b6f.png

图 6  Multi-Agent 实现端到端智能交付

整个过程非常流畅,而且每个 Agent 都可以有不同的演变,例如 Engineer Agent 可以进一步细分为专门负责写 React 工程的 React Agent,或者 User Proxy。同时,随着 Agent 模型的改进,未来工程化的各个节点可以实现从人类为主、Agent 为辅的参与模式逐步过渡到 Agent 为主导的过程,即实现从用户提出需求到 Agent 逐步完成所有开发和交付。

b0f2b4ff24e86e7b33cb5e4cb89f1a99.gif

大模型刷新一切,让我们有着诸多的迷茫,AI 这股热潮究竟会推着我们走向何方?面对时不时一夜变天,焦虑感油然而生,开发者怎么能够更快、更系统地拥抱大模型?《新程序员 007》以「大模型时代,开发者的成长指南」为核心,希望拨开层层迷雾,让开发者定下心地看到及拥抱未来。

读过本书的开发者这样感慨道:“让我惊喜的是,中国还有这种高质量、贴近开发者的杂志,我感到非常激动。最吸引我的是里面有很多人对 AI 的看法和经验和一些采访的内容,这些内容既真实又有价值。”

能学习到新知识、产生共鸣,解答久困于心的困惑,这是《新程序员》的核心价值。欢迎扫描下方二维码订阅纸书和电子书。

a4e4820e8462fccc66f35e6d3ffff08b.png

  • 16
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值