一、模型分类

  • 多模态大模型:GPT-4、Claude 3、Gemini、Qwen-VL
  • 任务专用模型Whisper(仅语音转文本)、Stable Diffusion(仅图像生成)

按技术架构分:

  • Transformer 架构大模型
  • 混合专家模型(MoE)
  • 传统神经网络模型

按用途分:

  • 生成模型:找特征分布,如 大语言模型
  • 判别模型:找差异,基于神经网络

大模型选型依据:
  • 中文适配:针对中文语料优化,中文问答、多轮对话能力更优。
  • 成本:开源,部署成本低,量化后对显存要求低,适合企业内部部署。
  • 上下文窗口:支持 32k Token 长上下文,适合客服多轮对话 / 长文本查询(如订单详情)


二、本质

大模型并非 “理解” 语言 或 “拥有” 知识,而是通过Transformer 架构捕捉语言的统计规律(词与词的关联、上下文逻辑和顺序),通过大规模预训练将海量文本中的模式(语法、语义、常识)  “固化” 到模型参数中,再通过自回归生成对新输入做出 “符合模式的响应”。数据越多、参数越大、训练越充分,模型的语言理解和生成能力越强。

三、训练过程

1、预训练

让模型学习通用能力,学习语言的通用规律(语法、语义、常识),不针对具体任务。

海量无标注文本 通过 “自监督学习” 让模型学习预测规律,最常用的是因果语言建模—— 即 “给定前文,预测下一个词”。让模型逐渐掌握 “什么样的上下文 该接什么样的词”,进而学会 语法、语义、常识。

2、微调

让模式适配具体“专业型”任务。

用小规模有标注的数据(如 “问题 - 答案” 对、“原文 - 译文” 对),“修正” 预训练模型的参数,让模型学会 “根据任务要求输出结果”。

  • 全参数微调
  • 参数高效微调(PEFT):仅调整模型的部分参数(如 LoRA、Prefix Tuning),在保证效果的同时降低成本。提供Trainer类简化自定义数据集上的模型训练。

四、推理过程

用户输入(Prompt)→ token化 → 转换为词向量 → Transformer理解输入 → 逐词生成结果(自回归生成)

  • 模型无法直接处理文字,需要先将输入文本拆成 “Token”(模型的基本处理单位);
  • token转换为词向量;使用词嵌入算法(Embedding)将每个词转换为一个词向量;词向量的维度(512、1024、2048维)
  • 词向量会传入 Transformer 编码器、解码器,通过 “自注意力 + 前馈神经网络” 处理;编码器会接收一个向量作为输入。编码器首先将这些向量传递到 Self-Attention 层,然后传递到前馈网络,最后将输出传递到下一个编码器。
  • 模型的输出是 “逐词生成” 的,核心逻辑是 “用已生成的内容预测下一个词”;

为了让生成结果更 “可控”(如避免重复、符合逻辑),会引入采样策略(如 Top-K 采样、Top-P 采样)或调整 “温度(Temperature)”—— 温度越低,生成结果越确定(重复率可能高);温度越高,生成结果越随机(可能出现逻辑错误)。


大模型一般参数量都比较大(几十亿、几百亿)、计算资源要求高、内存占用大,因此在资源有限的服务器上难以部署,为解决这一矛盾,知识蒸馏(KD)量化(Quantization) 成为大模型高效化的核心技术。

五、知识蒸馏

(一)核心思想

利用一个性能优异的大模型(教师模型) ,将其蕴含的 “知识” 迁移到一个结构更精简的小模型(学生模型) 中,使小模型在参数规模和计算量大幅降低的同时,性能接近教师模型。

“知识”:不仅仅是教师模型最终的预测结果(硬标签),更重要的是其输出的概率分布(软标签)。软标签包含了丰富的“暗知识”,例如不同类别之间的相似性关系。

(二)核心原理:“温度软化” 与 “双损失训练”

1、教师模型预训练:先训练一个高性能的教师模型(如 BERT-Base)。

2、学生模型初始化:设计一个结构更小的学生模型(如层数减半、隐藏层维度降低的 BERT-Tiny)。

3、软化输出与蒸馏训练

  1. 引入温度参数(Temperature) ,对教师模型的 softmax 输出进行 “软化”
  2. 学生模型同时学习两个目标:
    • 软损失(Soft Loss):学生模型的软化输出与教师模型的软化输出的 KL 散度,学习教师的 “深层知识”。
    • 硬损失(Hard Loss):学生模型的原始输出与真实标签的交叉熵,保证基础任务性能。
  3. 总损失为两者的加权和。

(三)常用蒸馏的方法
方法类型 代表方法 核心思路
输出层蒸馏 Hinton 经典 KD 仅利用教师软化后的输出分布,适用于简单分类任务。
中间层蒸馏 FitNets 让学生模型的中间层特征映射 “模仿” 教师模型,通过 L2 损失对齐特征。
注意力蒸馏 Attention Distillation 对齐教师与学生的注意力权重(如 BERT 的自注意力矩阵),保留语义关联能力。
对比蒸馏 Contrastive KD 将教师模型的特征作为 “正样本”,其他样本作为 “负样本”,增强学生的特征区分度。
任务适配蒸馏 TinyBERT 针对 NLP 任务(如问答、文本分类),分 “预训练蒸馏” 和 “任务蒸馏” 两阶段优化。

缺点:依赖教师模型;训练复杂;主要减少参数数量,对单参数存储开销优化弱,压缩有限。

六、量化

(一)核心思想

将模型中高精度的数值(如 FP32、FP16)转换为低精度数值(如 INT8、INT4),通过减少每个参数的比特数,损失少量精度 降低模型存储占用和计算开销。确定一个缩放因子(scale)零点(zero point),将FP32的数值范围线性映射到INT8等低精度的数值范围。

高精度量化(FP16、TF32),低精度量化(INT8),极低精度量化(INT4、INT2)

(二)量化方法
训练后量化(PTQ)
  • 流程:在FP32模型训练完成后,只需少量校准数据(无需标签)来观察各层激活值的分布范围,从而确定最佳的S和Z参数,然后直接再对权重和激活值进行量化,无需重新训练。
  • 关键步骤:校准(Calibration)—— 用少量验证集数据统计权重 / 激活值的分布(如 Min-Max、KL 散度),确定量化范围,减少精度损失。
量化感知训练(QAT):

在模型训练(或微调)的前向传播中模拟量化误差(加入“伪量化”节点),但在反向传播中仍然使用高精度权重更新。让模型“提前适应”量化会带来的误差。

(三)如何减少量化误差?

量化的核心挑战是精度损失,需通过以下策略缓解:

  • 范围校准:用 Min-Max(适合权重)或 KL 散度(适合激活值)确定量化范围,避免数值溢出或欠拟合。
  • 分层量化:不同层对量化的敏感度不同(如 Transformer 的 FFN 层比注意力层更耐量化),对敏感层用更高位宽(如 INT8),非敏感层用低位宽(如 INT4)。
  • 混合精度量化:权重用 INT8,激活值用 FP16,平衡精度与效率(如 MobileNetV2 的量化方案)。
  • 零点偏移(Zero Point):通过非对称量化引入零点偏移,更好适配激活值的非对称分布(如 ReLU 输出的非负分布)。

(四)缺点
  • 精度损失:低精度表示会引入舍入误差,可能导致模型性能下降。

  • 溢出风险:如果激活值分布中有极端 outlier,低精度范围可能无法表示,导致严重误差。


    七、模型推理

    (一)vLLM

    专注于大模型推理加速的开源引擎,通过先进的调度算法和 CUDA 优化,大幅提升 LLM 的吞吐量。优化了大模型内存碎片化、吞吐量受限阻塞 的问题。

    核心优势:

    1、PagedAttention (分页注意力)机制:将每个序列的 KV Cache 分割成固定大小的 “块”(Block),每个块包含固定数量的 token;用 “页表” 记录块与序列的映射关系,页表可快速定位每个序列的完整 KV 数据,实现灵活的内存管理,让内存分配更紧凑。解决 KV 缓存(Key-Value Cache)的碎片化问题,内存利用率提升 2-4 倍,支持更长文本生成。

    2、支持 连续批处理:不再等待整个批次完成后再处理新请求,而是动态插入新请求到空闲 “slot” 中,大幅减少请求等待时间(尤其对短序列)。并行处理不同长度的请求,吞吐量比 Hugging Face 原生实现高 10-20 倍。

    3、支持 Prefix Caching:缓存对话历史的 KV 数据,避免重复计算。

    from vllm import LLM, SamplingParams
    
    # 多卡并行,通过 `tensor_parallel_size` 参数分配多张 GPU
    llm = LLM(model="deepseek-moe-16b-chat", tensor_parallel_size=2)  
    
    # 批量问题
    prompts = ["Hello, my name is", "What is the meaning of life?"]
    # 设置采样参数
    sampling_params = SamplingParams(temperature=0.8, top_p=0.95)
    # 批量推理
    outputs = llm.generate(prompts, sampling_params)

    (二)KV Cache

    是优化LLM推理速度的关键技术,核心是 缓存已计算的Key 和 Value避免重复计算

    • 在自回归生成中,生成第 t 个token时,需要计算它与前 t-1 个token的注意力,
    • 若不缓存,每次生成新 token,都需要重新计算 所有历史token的 K 和 V ,复杂度O(t平方);
    • 而 KV Cache 会存储前 t-1 个token的 K 和 V,生成第 t 个token时,仅需计算 第 t 个token的Q,再与缓存的K/V计算注意力,复杂度降至O(t);

    代价是内存占用增加(存历史KV),长序列下 需要权衡缓存大小和性能。

    Logo

    有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

    更多推荐