AI智能总结
Gene:喜马拉雅 AI智能编程助手探索与演进 吴阕喜马拉雅DevOps&SRE负责人 讲师简介 “喜马拉雅-DevOps&SRE-负责人SECON讲师 www.top100summit.com 吴阕(Acone) 喜马拉雅DevOps&SRE负责人 多年Infra架构经验: 资深微服务网关、中间件系统架构与研发CI/CD、效能平台架构经验 如今,allinAIInfra,专注喜马拉雅AIAgent基建与业务创新 ” www.top100summit.com 目录 01AI在软件开发中的应用与挑战 02喜马拉雅在AIGC研发提效的探索 03智能研发推进演进路线 04未来展望 www.top100summit.com AI在软件开发中的应用与挑战 案例背景 2023年初,ChatGPT为首的大语言模型需求井喷,上下文迅速切换。 www.top100summit.com 能不能过去用的我G们 研 GPT每天都在公司担任 发、大数据、运维专家 PT帮助我们的技术团队现在提的我效们? www.top100summit.com 案例背景 模型种类越来越多如何分类\选型?如何衡量? 模型参数越来越大部署成本如何? 性能怎么样? 生态 能二次开发?成本如何? www.top100summit.com 百度comate 阿里通义灵码 蚂蚁codefuse 华为CodeArts GithubCopilotLabs 支持语言 支持40+语言主流语言都支持 支持30+语言主流语言都支持 支持40+语言主流语言都支持 主流语言都支持 全语言训练 云端大模型 ERNIE大模型 通义大模型 混合大模型 盘古大模型 GPT-4 本地小模型 不支持 支持行级补全 不支持 不支持 不支持 智能问答 支持非流式 支持流式 不支持 支持流式 支持流式 代码搜索 不支持 支持 不支持 不支持 不支持 亮点功能 注释阅读解释单测 注释阅读解释单测方法补全 注释阅读解释单测 注释阅读解释单测 阅读解释语言翻译代码刷子 模型评估 urbo 闭源:CodexGPT3.5/4/T 开源:PaLM una、CodeL Lama) LLama(Vic 成本: A100*4~8 www.top100summit.com 问题与挑战 •模型存在“幻觉”,容易一本正经胡说八道。 www.top100summit.com 问题与挑战 •提示直接决定回复质量,经常容易“说正确的废话 www.top100summit.com 小结 模型幻觉无意义的废话 无法支持内部知识与增量知识模型没有记忆 最大token有限制 …… 模型 代码元素之间存在的长依赖问题响应时间要求 代码质量抽奖,缺少质量控制需要专业的Prompt 工程 www.top100summit.com 喜马拉雅在AIGC研发提效的探索 破题思路 www.top100summit.com 传统研发痛点: 低效、重复、精力分散、质量不稳定 编码 •重复代码重复写:半数以上非核心业务代码 •代码质量参差不齐:缺陷、安全问题事后发现 •学习成本高:学习至少一周,才能写第一行代码 测试 •写测试用例成本高:1天写代码,2天写测试用例 •测试覆盖率低:测试用例覆盖不全业务逻辑 •软件质量不高:长期下来导致软件质量走下坡路 Gene:从骨子里重新定义研发流程 破题思路 www.top100summit.com 01PromptEngeeringCoT 场景提示词 RAG 02向量检索 传统搜推 03微调&推理加速int8、int4 float16、bfloat16推理框架 上下文选举04 AST Jaccard算法 联邦查询05RAG Context Refine06ReAct agent化 www.top100summit.com 智能研发推进演进路线 推理加速 www.top100summit.com 模型版本 CodeLLama-34B 推理速度 Token/s GPU 单卡A10 单卡A100 单卡4090 量化 int4 int8 fp16 int4 int8 fp16 int4 int8 fp16 输入/输出 16/8 32.3 OOM OOM 59.53 46.51 26.18 36.24 22.53 OOM 长度(batch_size=1) 64/32 29.82 OOM OOM 60.06 41.32 24.53 34.21 21.19 OOM 256/128 27.3 OOM OOM 52.17 39.62 23.89 33.98 20.31 OOM 9 1024/512 20.0 OOM OOM 51.15 33.35 21.3 32.84 20.15 OOM 7 *int4量化 精度丢失速度提升内存减少 vllm推理加速框架,单卡10并发 www.top100summit.com PromptEngneering 精准的上下文+专业的Prompt=满意的答案 Task Context 思考为什么GPT会算对?算错? ExampleFormat www.top100summit.com Search&Rec •KG关联分析 •向量检索 •ElasticSearch •MetaDataFilter LLM推理能力 •zero/fewshot •CoTprompting •Instruct-tuning RAG www.top100summit.com RAG LLM提炼问题 并行召回 结果并集 www.top100summit.com AbstractSynatxTree •token 8~16K •召回性能 60~75% •召回深度0~7%85~100%second-half www.top100summit.com AbstractSynatxTree Context只选举抽象语法树中依赖相关性更高的 •import依赖 •方法依赖 •变量依赖 •声明 •异常 •Spring框架增强 AbstractSynatxTree 单元测试效果提升 AST 编译通过率:91.85% 单测通过率:41.34% PromptEngeering 编译通过率:60.98% 单测通过率:28.3% www.top100summit.com 未优化编译通过率:34.12% 单测通过率:14.71% CodeSnippet www.top100summit.com 语义向量近似度 •推理关联性差 •链路及RT拉长 •较差的词元和词组的搜索能力 •精确匹配场景还需要传统搜索加持 Github的做法——Jaccard算法 •离线运算 •速度快 •topK召回准确率提升20%~30% www.top100summit.com 联邦查询 各场景功能采纳率提升7%~11% 召回准确率80%->97%以上 Refine 单元测试 为下面的<源代码>生成单元测试,你可选的技术为Junit5, Mockito.调试 你编写代码时遵循以下准则: 1.清晰明确的目标:测试一个特定的功能或代码单元,不要试图一次测试太多功能。 2.独立性:每个单元测试应该是独立的,不依赖于其他测试或外部资源。 3.边界条件覆盖:确保单元测试覆盖各种边界条件和异常情况。 4.... 为下面的<源代码>生成单元测试,你可选的技术为Junit5,Mockito. 你编写代码时遵循以下准则: 1.你本次的测试目标是注册功能的表单校验功能 2.源代码中的UserMapper应该使用@Mock注入而不是依赖真实的数据库访问对象 3.请按照以下边界条件输出测试方法: -当userName="gene"时返回"用户名至少6个字符" -当pwd="HelloWorld!"时返回"密码必须包含大写字母、数字和特殊字符!#$%^&*" www.top100summit.com 成果展示 采纳率 代码生成当量 对话框架接入commit www.top100summit.com www.top100summit.com 未来展望 www.top100summit.com 案例启示 AIAgentisallyouneed www.top100summit.com AIAgent 通B评用I审智A智能g能体en体t www.top100summit.com 案例复盘与总结 人和AI在软件工程中分别扮演什么角色? 结对编程:思想不会被取代,依然是人在“写代码”“珍妮机”替代手工业:AI不会颠覆人,但会替代工具人 机遇与挑战:会用AI的程序员一定会取代不会用AI的程序员 共勉 喜马拉雅技术团队:Xima-TC微信扫码关注官方微信号 微信官方公众号:壹佰案例关注查看更多年度实践案例