大模型时代程序员的正确姿势
过去的一年中,最炙手可热的是以扩散模型和大语言模型为代表的 AIGC 技术的普及。在可预见的未来,这种热度仍将持续下去。无论主观上是否愿意,AIGC 已经在重构我们的工作流程,重构人与人、人与机器、机器与机器的关系。上一次类似的技术变革还是上个世纪 90 年代末,互联网走向普通大众的时代。
本文探讨了 AIGC 技术对软件开发流程的重构,分析了程序员转型 AI 所需的技能树,指出除数学基础外更需关注工程实践与模型原理。内容涵盖从传统 NLP 到大语言模型的演进历程,详细讨论了提示词工程、检索增强生成(RAG)、模型微调及评估等关键技术点,并列举了开发者在引入大模型时面临的核心问题与应对策略,旨在帮助技术人员建立理性认知,设计高效智能应用。

过去的一年中,最炙手可热的是以扩散模型和大语言模型为代表的 AIGC 技术的普及。在可预见的未来,这种热度仍将持续下去。无论主观上是否愿意,AIGC 已经在重构我们的工作流程,重构人与人、人与机器、机器与机器的关系。上一次类似的技术变革还是上个世纪 90 年代末,互联网走向普通大众的时代。
正如互联网时代网络增进了人与人之间的联系,释放出了巨大的生产力。在 AIGC 的时代,计算机的能力得到了极大的增强,人与机器、机器与机器之间的协作构成了新的工具杠杆。加之开源软件的广泛应用使得个体、小团队重新获得了竞争优势,在 AIGC 的时代又出现了小团队拥有巨量用户的示例。
如果说二十五年前的互联网革命个体进入门槛是编程的能力,AIGC 时代则在编程能力之外还增加了对熟练开发或应用 AI 的能力。
提起程序员转型到 AI,很多人的直觉是:搞 AI 啊,那数学得好吧,从高等数学、集合论、概率论、测度论、线性代数、泛函分析、凸优化整起。对于非数学专业和多数工科背景的人这个要求足以劝退。
但是在实践中,除了做 AI 编译器、优化器搞模型训练,绝大多数工作并不需要这些数学知识。以 Resnet 为例,设计这一网络架构只需要信息论的相关的知识就足够了,正如我们开汽车并不需要了解如何最优化发动机、电动机的工况。
我在二十年前开始学习统计自然语言处理时,也面临今天想转型到 AI 的同学一样的情况。当时全文检索系统风头正劲,准确的中文切分器能够让检索系统在构建索引的速度、索引大小与检索质量上获得一个较好的平衡。当时的主流是隐式马尔科夫的切分方案,基于 CRF 的字标注方法刚刚提出。CRF 方法的优化器采用拟牛顿法需要计算 Hessian 矩阵的近似,这个近似会占用大量内存我从工程上优化了其物理内存占用,但是完成这个工作并不需要了解拟牛顿法的数学细节,而提升 CRF 方法分词器的效果需要引入更多、更全面的特征,这一工作也不需要特别高深的数学知识。
定量的理性认知固然很好,但是很多场景下,宏观的感性认知已经足以指导我们日常的决策。
从分词算法的研究我们可以发现,引入当前数据集无关的外部领域知识可以提升系统的综合性能(f-score),但是如何更好的构造关联到字的特征向量成为新的问题。基于神经网络的语言模型可以将稀疏高维的特性向量压缩到稠密低维的特征向量,并进而 Word2vec 发现可以对计算出的词向量执行语义计算,而 GPT、BERT 等预训练大语言模型更是把英文单词都切分成了多个 token,交由神经网络本身在前 8 层 Transformer Block 进行还原。要完成这些工作,仍然不需要特别高深的数学知识,依赖的是巧妙的任务设计和对概率论的初步了解。
由于预训练语言模型非常消耗算力,以微软 UniLM 为例,24 层的模型在 2019 年已经需要 8 卡 V100 并行计算近一个月。因此,在 2019 年 Google 提出了 T5 模型,虽然较现在的 LLM 能力稍弱,但是提出了可以基于前缀文本区分任务,进而在统一的框架内对语言模型进行预训练。例如当进行翻译任务时在需要处理的文本前面附加 translate English to German:,当需要进行文本情感分析时附加 sentiment:。类似的思路表现为现在的大语言模型普遍都有 SFT 或指令对齐阶段。OpenAI 发现可以借助 Prefix 或者这里我们称它为 Prompt,可以激发模型未被设计、训练的新的能力。
到 ChatGPT 为代表的大语言模型出现,传统意义上 NLP 的所有问题都得到解决,日常大量的文本处理类的工作可以无脑的使用大语言模型。但是,拥有了堪称强大的自然语言处理工具的现下,我们要解决的现实问题远没有得到解决,这甚至不是结束的开始,充其量只是开始的结束。
以最新的论文《Top in Chinese Data Processing: English Code Models》为例,其提出对于特定的中文应用(eg. RAG,检索增强生成)语言模型中受限的中文知识反而有助于降低幻觉。这种现象的真实原因仍有待进一步研究,但是现有的部分中文大语言模型其 Tokenizer 部分是存在缺陷的,简单讲,中文历史上存在单字成词的传统,理论上在 Tokenizer 中除了单字和成语,不应该出现常见字的两字组合,更进一步的,如果字出现的频率不高,单字也可以不出现。
考虑到现实的算力限制,并不是每个程序员都有机会从头训练大语言模型,但是我们仍然需要对大语言模型的工作原理以及其工作方式的可能解释进行研究,因为创新往往需要通过观察事物并深入了解其原理后才能产生。
在程序员的视角看,大语言模型的出现给程序开发带来了下面若干新问题,以下是针对这些问题的技术分析与建议:
并非所有场景都需要 LLM。如果任务规则明确、确定性高且对延迟敏感,传统规则引擎或轻量级模型可能更优。LLM 适用于模糊意图理解、内容生成、复杂推理等场景。决策时需权衡成本、延迟与准确率。
API 接入适合快速验证、资源受限或无需数据隐私的场景。本地推理适合数据敏感、高并发低延迟需求或定制化模型部署。需评估显存容量、推理加速库(如 vLLM, TensorRT-LLM)及硬件成本。
包括上下文窗口限制、幻觉问题(Hallucination)、逻辑推理能力波动、知识截止时间等。设计系统时需通过外部知识库(RAG)补充事实,通过多步校验减少错误。
适用任务包括文本摘要、代码生成、对话系统、数据分析等。设计模式包括:
根据任务类型选择基座模型。通用任务选参数量大的模型;垂直领域考虑微调后的模型。关注模型对特定语言的支持、Token 效率及社区生态。
建立 Golden Dataset(金标准数据集),包含输入输出对。使用自动化脚本对比模型输出与预期结果。注意防止模型'偷看'过公开测试集,应定期更新测试集。
除准确率外,还需评估安全性、鲁棒性、延迟及成本。使用对抗样本测试模型的边界行为。监控生产环境中的 Bad Case 分布。
Prompt Engineering 是核心技能。常用技巧包括:
需关注 Token 计费、缓存策略(Cache KV)、流式输出体验、敏感词过滤及日志审计。建立监控告警机制,防止异常流量导致服务不可用。
大语言模型内置了大量的知识,这使得用户经常混淆其能力的来源,是来自预置知识、类比还是真实推理,以及更一般的这些知识如何增删改(CRUD)。大语言模型能够借助其参数量模拟多种不同的人格,并预测对应人格在不同环境下可能的反馈,这有助于我们在不违反医学伦理的情况进一步的探索人类的认知。
在大模型时代,Prompt 进行了广泛的研究,提出了 CoT, ToT 等一系列 Prompt 方法。从大语言模型的原理出发,科学的研究 Prompt 的制作才不至于沦为'玄学'、'咒语'。我们需要理解 Transformer 架构的注意力机制、Embedding 的语义空间分布以及 Loss 函数的优化路径。
此外,大模型辅助软件工程已成为趋势。结合深度学习中的正规化项,分析软件开发过程中的正规化方法。从需求到 OPM(Object-Process language),综述大语言模型与测试驱动开发的关系。Behavior-driven development (行为驱动开发),使用 Gherkin 描述软件规格,让模型辅助生成测试用例。
大语言模型的开发框架如 LangChain 和 Semantic Kernel 提供了标准化的组件。LangChain 支持链式调用、记忆管理及工具集成;Semantic Kernel 则强调 C#/.NET 生态下的语义函数与 Agent 构建。掌握这些框架能显著提升开发效率。
关于大模型的 Finetune,训练数据的格式与准备至关重要。需清洗数据、去重、格式化。训练过程中常见的显存优化方法包括 LoRA、QLoRA 等参数高效微调技术,使得在消费级显卡上微调成为可能。
大模型的监控与运维同样关键。多 API 推理后端整合、QLora 模型的推理部署、推理状态感知与风险控制都是生产环境的必备能力。
大语言模型的出现,固然带来了前所未有的挑战,但也为我们提供了一个深入了解我们自己、了解认知过程的机会。正如很多恐惧的根源是来自人类面对未知事物的本能,通过对大模型的探索,有助于我们发现并克服其局限,进而设计出更加智能、高效的应用。
最先掌握 AI 的人,将会比较晚掌握 AI 的人有竞争优势。这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。通过持续学习和实践,我们可以利用大模型技术更好地处理海量数据,提高数据分析和决策的准确性,实现大模型理论、掌握 GPU 算力、硬件、LangChain 开发框架和项目实战技能,学会 Fine-tuning 垂直训练大模型,一站式掌握大模型应用开发的核心能力。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online