1774597379

This commit is contained in:
Docker7530
2026-03-27 15:43:03 +08:00
parent ab0cbad418
commit e4a339bd77
43 changed files with 2973 additions and 179 deletions
@@ -0,0 +1,257 @@
# 大模型中的参数、权重与数值类型整理
## 一、先理解:模型里到底存的是什么?
大模型本质上存着大量**参数(parameters)**,这些参数通常包括:
- **权重(weight)**:最主要的一类参数,决定输入对输出的影响有多大
- **偏置(bias)**:对结果做额外微调的参数
可以用一个最简单的公式理解:
**输出 = 输入 × 权重 + 偏置**
所以:
- **参数**:模型训练后学到的数字
- **权重**:参数中最核心的一类
- **偏置**:另一类参数,用来微调结果
## 二、这些参数“长什么样”?
参数本质上就是一个个数字,只不过通常不是单独存在,而是组成向量、矩阵或更高维数组。
| 概念 | 是什么 | 长什么样 | 通俗理解 |
|---|---|---|---|
| 参数(Parameter) | 模型训练出来的可学习数字 | `0.125``-1.37`、矩阵中的一个元素 | 模型记住世界的“数字痕迹” |
| 权重(Weight) | 参数中最主要的一类 | `weight[3][5] = 0.84` | 决定某个输入影响有多大 |
| 偏置(Bias) | 另一类参数 | `bias = 0.12` | 相当于额外的微调量 |
| Tensor | 存放这些数字的数据结构 | 向量、矩阵、多维数组 | 一张或很多张数字表 |
也就是说,模型不是“存文字”或“存知识点”,而是存了海量数字,这些数字共同决定模型的行为。
## 三、参数是用什么格式保存的?
模型参数需要用某种**数值类型(Tensor type / dtype**来保存。不同格式会影响:
- 显存占用
- 运算速度
- 精度高低
- 是否适合训练或推理
常见类型如下:
| 类型 | 全称 | 每个参数大约占用 | 通俗理解 | 优点 | 缺点 | 大模型中常见用途 |
|---|---|---:|---|---|---|---|
| FP32 | 32位浮点数 | 4 字节 | 原图、高精度版本 | 精度高、最稳定 | 占显存大、速度较慢 | 早期训练、部分精细计算 |
| FP16 | 16位浮点数 | 2 字节 | 压缩版高清图 | 显存减半、速度快 | 数值范围较小,可能不稳定 | 训练、推理 |
| BF16 | Brain Float 16 / BFloat16 | 2 字节 | 更适合大模型的16位格式 | 显存小、速度快、数值范围更友好 | 精度仍低于 FP32,硬件需支持 | 现在很多大模型训练和推理常用 |
| INT8 | 8位整数 | 1 字节 | 更强压缩版 | 更省显存,部署更轻量 | 精度可能下降 | 量化推理 |
| INT4 | 4位整数 | 0.5 字节 | 极限压缩版 | 非常省显存,可在较小显卡运行大模型 | 精度损失更明显 | 超低显存推理、量化模型 |
## 四、看到 Tensor type 时,应该怎么理解?
很多模型信息里会写 `Tensor type`,它表示**模型参数是用什么数值格式保存的**。
| 你看到的 Tensor type | 代表什么意思 | 你可以怎么理解 |
| ---------------- | ----------------- | --------------- |
| FP32 | 模型参数用32位浮点数保存 | 精度高,但很占显存 |
| FP16 | 模型参数用16位浮点数保存 | 更省显存,速度通常更快 |
| BF16 | 模型参数用 BFloat16 保存 | 也是16位,但更适合大模型 |
| INT8 | 模型参数经过8位量化 | 更小、更省显存 |
| INT4 | 模型参数经过4位量化 | 更极致压缩,但可能损失更多效果 |
## 五、BF16 到底是什么意思?
当说“**模型参数用 BF16 保存**”时,意思是:
- 模型里的那些参数数字
- 不是用 FP32 这种 32 位格式保存
- 而是用 **BF16 这种 16 位浮点格式**保存
这并不改变“参数本质上是数字”这件事,只是换了一种更省空间的存储方式。
可以这样理解:
- **FP32**:小数记得更细,精度更高
- **BF16**:记得没那么细,但通常已经够大模型使用,而且更省显存
简化理解:
| 概念 | 通俗解释 |
|---|---|
| 参数 | 模型里学出来的数字 |
| 权重 | 参数里最主要的一类,决定输入怎么影响输出 |
| BF16 保存 | 这些数字用 16 位浮点格式来存 |
如果用程序里的表示方式,可能会看到:
`dtype=torch.bfloat16`
意思就是:这个张量里的数字,用的是 **BF16** 格式。
## 六、模型显示“Tensor type: BF16”时意味着什么?
例如看到下面的信息:
- **Tensor type: BF16**
- **参数量: 32B**
它的含义是:
1. 这个模型大约有 **320亿个参数**
2. 这些参数主要用 **BF16** 格式存储
3. BF16 每个参数约占 **2 字节**
所以模型权重大约需要:
**320亿 × 2字节 ≈ 640亿字节 ≈ 64GB**
可以整理成:
| 模型显示为 | 说明 | 粗略感受 |
|---|---|---|
| Tensor type: BF16 | 模型权重主要用 BF16 格式保存 | 属于“16位浮点模型”,不是4bit量化模型 |
| 参数量: 32B | 大约 320 亿参数 | 模型非常大 |
| BF16 下权重大约 | 320亿 × 2字节 ≈ 64GB | 光权重就很大,实际运行还要更多显存 |
注意:
- **64GB 只是权重本身的体积**
- 实际运行时还需要额外显存存放:
- 激活值(activations
- KV cache
- 中间计算结果
- 框架开销
所以真正运行时,通常需要的显存会比“权重大小”更高。
## 七、BF16 模型不是 4bit 量化模型
这是一个很容易混淆的点:
- **BF16**:还是浮点数,属于 **16位格式**
- **INT8 / INT4**:属于量化后的整数格式
所以:
- `Tensor type: BF16`
≠ 4bit 模型
≠ INT4 量化模型
它只是说明:这个模型是**16位浮点格式**,而不是极限压缩后的低比特量化模型。
## 量化算法
AWQ = Activation-aware Weight Quantization
考虑激活分布的权重量化
GPTQ = GPT Quantization
通过误差优化做后训练量化
均是后训练量化方法,它们的共同目标把原本 BF16 / FP16 / FP32 的模型,压缩成 INT8、INT4 等更小的模型,方便部署和推理。
## 精度概念
相对 **双精度(FP64** 来说的。
- **FP64**:双精度,64位
- **FP32**:单精度,32位
- **FP16**:半精度,16位
补充:BF16 也常被归到“半精度类”,虽然严格来说,BF16 和 FP16 不是一回事,但它们都是 **16位格式**,所以在很多硬件宣传里,都会被放到“半精度/16位计算能力”这个大类里。
## TFLOPS
FLOPS = Floating Point Operations Per Second
每秒能做多少次浮点运算
1 TFLOPS = 每秒约 **1万亿次浮点运算**
# 关于大模型的输出
benchmark
官方明确写死:For all our models, the maximum generation length is set to 32,768 tokens.
```json
{
"model": "deepseek-r1",
"messages": [
{
"role": "user",
"content": "你好"
}
],
"max_tokens": 9000,
"temperature": 0.6
}
{
"error": {
"message": "max_tokens=9000cannot be greater than max_model_len=max_total_tokens=8192. Please request fewer output tokens. (parameter=max_tokens, value=9000)",
"type": "BadRequestError",
"param": "max_tokens",
"code": 400
}
}
```
![](../../../attachment/image-20260325103309652.png)
```
{
"messages": [
{
"role": "user",
"content": "你好。请你用最详细的方式介绍自己,包括你的训练数据、能力范围、可以帮我做什么事情,一步一步详细展开,至少写 5000 字以上。"
}
],
"max_tokens": 100,
"temperature": 0.8
}
{
"id": "chatcmpl-8c941055d2a6155b",
"object": "chat.completion",
"created": 1774405914,
"model": "deepseek-r1",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "我是由字节跳动独立研发的人工智能助手豆包,能够为你提供多场景、高效率的智能服务。我的核心能力包括:日常问答咨询、知识科普、学习辅助、文案创作、代码编写、逻辑推理、生活建议、情感陪伴等。我可以帮你写文案、做总结、解数学题、查知识点、构思创意内容,也能陪你聊天交流。训练数据基于海量合法合规的公开文本信息,经过严格的数据清洗、安全过滤与对齐训练,确保输出内容安全、准确、有用。我会持续优化自身能力,努力为你带来更稳定、贴心、高效的使用体验。",
"refusal": null,
"annotations": null,
"audio": null,
"function_call": null,
"tool_calls": [
],
"reasoning": null
},
"logprobs": null,
"finish_reason": "stop",
"stop_reason": null,
"token_ids": null
}
],
"service_tier": null,
"system_fingerprint": null,
"usage": {
"prompt_tokens": 42,
"total_tokens": 208,
"completion_tokens": 166,
"prompt_tokens_details": null
},
"prompt_logprobs": null,
"prompt_token_ids": null,
"kv_transfer_params": null
}
```
![](../../../attachment/image-20260325103231202.png)