一、大模型部署概述
大家好,我是你们这堂课的老朋友。今天咱们聊聊大模型部署这件事儿。说实话,我入行那会儿,模型部署还是个相对小众的领域,大家更多关注的是怎么把模型训得更准。但这两年,风向完全变了——模型再强,落不了地也是白搭。
我个人习惯把大模型部署比作「把大象装进冰箱」。听起来简单,做起来全是坑。今天这第一讲,我们先理清楚三个核心问题:大模型是怎么发展过来的?主流架构长什么样?部署时到底在跟什么过不去?
1.1 大模型发展简史:从「小作坊」到「大工厂」
大模型的发展,说白了就是一场「暴力美学」的胜利。我简单梳理了几个关键节点:
- 2017年,Transformer诞生——Google那篇《Attention is All You Need》彻底改变了NLP的格局。嗯,当时我还在做LSTM,看到这篇论文的第一反应是:这玩意儿能行?后来事实证明,我格局小了。
- 2018年,GPT-1和BERT——OpenAI和Google几乎同时发力。GPT-1只有1.17亿参数,放在今天连个「小模型」都算不上。但它的「自回归」思路,为后来的GPT系列埋下了种子。
- 2020年,GPT-3——1750亿参数,直接把模型规模拉到了一个新高度。我记得当时看到这个数字,第一反应是「这得多少张卡才能跑起来?」
- 2022-2023年,LLaMA、ChatGLM、GPT-4——开源社区开始发力,Meta的LLaMA系列让中小团队也能玩得起大模型。国内这边,ChatGLM系列在中文场景下表现相当亮眼。
为什么会这样?其实核心就一句话:参数越多,能力越强。但代价也很明显——部署难度指数级上升。
我的经验之谈:别被「大模型」三个字吓住。我见过不少团队一上来就想部署千亿参数模型,结果卡在显存上动弹不得。其实很多时候,百亿级别的模型配合好的微调策略,效果已经足够用了。
1.2 主流大模型架构:GPT、LLaMA、ChatGLM
现在市面上大模型多如牛毛,但万变不离其宗。我挑三个最具代表性的架构聊聊:
GPT系列:自回归的王者
GPT的核心思路很简单:根据前面的词,预测下一个词。这种「自回归」架构的好处是生成流畅、逻辑连贯。但缺点也很明显——推理是串行的,一个字一个字往外蹦,延迟很难压下去。
我在项目中遇到过一个问题:用GPT-3.5做实时对话,用户等得直拍桌子。后来我们用了「投机采样」和「KV Cache」优化,才把首字延迟从2秒降到了300毫秒。这个后面会详细讲。
LLaMA系列:开源界的「卷王」
Meta的LLaMA系列,说白了就是「用更少的参数干更多的活」。它用了很多trick,比如SwiGLU激活函数、旋转位置编码(RoPE)。我个人最喜欢的是它的分组查询注意力(GQA),这玩意儿在推理时能省不少显存。
避坑指南:我曾经在部署LLaMA-2-70B时,直接用了默认的FP16精度,结果显存直接爆了。后来改成INT8量化,显存占用降了将近一半,效果损失几乎可以忽略。记住:部署不是训练,精度可以适当妥协。
ChatGLM系列:中文场景的「本土选手」
清华系出品的ChatGLM,在中文理解上确实有两把刷子。它的架构基于Prefix LM,说白了就是「双向注意力+自回归」的混合体。这种设计让它在理解任务(比如文本分类)和生成任务上都能有不错的表现。
我建议做中文应用的同学,可以优先考虑ChatGLM系列。它的分词器对中文更友好,部署时也少了很多「乱码」的烦恼。
1.3 部署面临的挑战:显存、延迟、吞吐量
好,前面聊了历史和架构,现在说说最实际的问题——部署到底难在哪?我总结了三座大山:
| 挑战 | 核心问题 | 我的经验 |
|---|---|---|
| 显存 | 模型参数、KV Cache、中间激活值,哪个都吃显存 | 一张A100(80G)勉强跑LLaMA-13B,70B模型至少需要4张 |
| 延迟 | 自回归生成是串行的,首字延迟和生成速度都是瓶颈 | 我用过「连续批处理」,吞吐量提升了3倍以上 |
| 吞吐量 | 并发高了,显存和计算资源都吃紧 | 动态批处理+模型量化,是性价比最高的方案 |
显存:永远不够用
你想想看,一个70B的模型,光参数就要140GB(FP16)。再加上KV Cache、中间激活值,一张A100(80G)根本塞不下。我见过最夸张的一次,一个团队用8张A100跑GPT-3,结果显存还是爆了——因为没做显存优化。
怎么破?常用的手段有:模型量化(INT8/INT4)、张量并行、流水线并行。这些后面会专门讲。
延迟:用户等不起
大模型生成一个字就要几十毫秒,一段话下来,用户早跑了。我做过一个测试:LLaMA-2-7B在单卡上生成100个token,平均延迟是1.2秒。如果换成70B模型,直接飙到8秒以上。
优化方向有两个:一是减少计算量(比如用Flash Attention),二是让生成过程更「聪明」(比如投机采样)。
吞吐量:并发高了就崩
单用户还好,一旦并发上来,显存和计算资源立刻捉襟见肘。我记得有一次线上服务,突然来了个流量高峰,QPS从10飙到100,结果服务直接挂了——因为显存不够分配新的KV Cache。
解决方案?动态批处理、显存池化、请求排队。这些实战技巧,后面都会手把手教大家。
重要提醒:部署大模型不是「一把梭」。我见过太多团队,一上来就追求「最大模型、最高精度」,结果部署成本高得离谱,业务根本撑不住。记住一句话:合适的才是最好的。先搞清楚你的业务场景,再决定用多大模型、做什么优化。
好了,第一讲就到这里。这一章我们理清了三个核心问题:大模型怎么来的、主流架构长什么样、部署到底难在哪。下一章,我们会深入聊聊「模型量化」——这可是部署优化的第一板斧。
我是你们的工程师朋友,咱们下节课见。