Files
notes/resource/ai/大模型安装笔记/大模型中的参数、权重与数值类型整理.md
T
Docker7530 798019bbbf 1774707388
2026-03-28 22:16:30 +08:00

9.0 KiB
Raw Blame History

大模型中的参数、权重与数值类型整理

一、先理解:模型里到底存的是什么?

大模型本质上存着大量参数(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.

{
    "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
    }
}

{
    "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
}