LLM 格式及模块
注意: 部分内容来自AI生成,可能存在错误,如有发现,欢迎指正!
一、标准模型文件格式
大模型文件通常以以下格式存储:
- PyTorch 格式 (
.pth
, .pt
)
- 包含完整的模型架构(
state_dict
保存参数)或仅参数
- 支持动态计算图
- TensorFlow 格式 (
.pb
, SavedModel)
- HDF5 格式 (
.h5
, .hdf5
)
- ONNX 格式 (
.onnx
)
- GGUF/GGML 格式 (
.gguf
, .ggml
)
- 专为CPU推理优化的量化格式(Llama.cpp等使用)
二、模型内部核心模块
以Transformer架构为例,典型模块包括:
- 输入嵌入层 (Embedding Layer)
- 位置编码模块 (Positional Encoding)
- 编码器/解码器堆叠层
- 自注意力子层 (Self-Attention)
- 计算Query、Key、Value,生成上下文相关表示
- 前馈网络子层 (Feed-Forward Network, FFN)
- 残差连接与层归一化 (Residual + LayerNorm)
- 交叉注意力层 (Decoder特有)
- 输出层 (Output Projection)
三、从输入到输出的处理流程
以文本生成任务为例(如GPT类模型):
1. 输入处理阶段
- 分词 (Tokenization)
- 嵌入层 (Embedding Layer)
- Token → 向量表示(
[batch_size, seq_len, dim]
)
- 位置编码 (Positional Encoding)
2. 编码器处理阶段(仅Encoder或Encoder-Decoder架构)
- 多头自注意力计算
- 输入:嵌入向量 + 位置编码
- 输出:上下文感知的隐状态
- 前馈网络变换
- 残差连接与归一化
输出 = LayerNorm(输入 + 子层输出)
3. 解码器处理阶段(仅Decoder或Encoder-Decoder架构)
- 掩码自注意力
- 交叉注意力(Encoder-Decoder架构)
- 前馈网络与归一化
4. 输出生成阶段
- Logits计算
- 通过输出层将隐状态映射到词表空间(
[batch_size, seq_len, vocab_size]
)
- 概率分布生成
- 采样策略
- 贪婪搜索(Greedy Search)、束搜索(Beam Search)或温度采样(Temperature Sampling)
四、附加模块与优化技术
- 缓存机制 (KV Cache)
- 量化压缩模块
- 分布式训练模块
- 适配器模块 (Adapter)
五、典型架构差异
- 纯Encoder模型(如BERT):
仅保留编码器,适用于理解任务(分类、NER)
- 纯Decoder模型(如GPT):
仅保留解码器,适用于生成任务
- Encoder-Decoder模型(如T5):
两者结合,适用于翻译、摘要等任务
六、训练与推理差异
| 阶段 | 关键操作 |
|———-|—————————————|
| 训练 | 反向传播、梯度更新、Dropout激活 |
| 推理 | 禁用Dropout、使用KV缓存、内存优化 |
通过这一流程,模型将原始输入逐步转化为高层次的语义表示,最终生成结构化输出。
不同框架和模型的具体实现可能有所不同,但核心模块和流程遵循类似模式。