若想深入探究大模型核心参数的效果与作用,就务必先弄清大模型的工作流程,明确核心参数在流程各阶段的效能与功能,知晓其具体含义。
大模型运行时的工作原理可以概括为输入处理→特征提取→模型推理→结果生成四个核心阶段,整个过程融合了深度学习架构、自然语言处理技术以及分布式计算能力。
从用户输入到大模型输出,整个工作的处理流程如下:
输入文本 → 分词 → 嵌入 + 位置编码 → Transformer多层处理(自注意力 + FFN) → Logits → 采样 → Token生成 → 循环直至终止 → 后处理 → 最终输出
通过上述流程,大模型实现了从原始输入到智能输出的端到端处理,其核心优势在于Transformer架构对长距离依赖的捕捉能力,以及海量参数对复杂模式的记忆与泛化实际应用中还需结合业务场景优化采样策略与后处理逻辑。下面我将对市场成熟模型的具体工作过程以及相关概念进行介绍。
1.内容审查(部分模型适用)
用户输入文本首先经过敏感词过滤和合规性检查(如阿水AI大模型算法中的审查机制),确保生成内容符合伦理与法律规范。
2.分词(Tokenization)
输入文本被拆解为Token(如单词、子词或字符)。例如“Hello, AI!”可能被拆分为
['Hello', ',', 'AI', '!']
分词方法包括BPE、WordPiece等,依赖预训练的分词器实现。
3.文本预处理
包括统一大小写、去除停用词(如“的”“和”)、处理标点符号等,以降低噪声干扰
1.向量嵌入(Embedding)
每个Token通过嵌入层转换为高维向量(如768维),该向量包含语义和语法信息。例如“猫”和“狗”的向量在嵌入空间中距离较近,而“猫”和“计算机”的向量距离较远。
2.位置编码(Positional Encoding)
为每个Token添加位置信息,因为Transformer架构本身不具备顺序感知能力,需通过正弦函数或可学习参数为Token添加位置信息,确保模型理解词序(如“猫追狗”与“狗追猫”的区别)。
输入向量经过多层Transformer结构(如GPT-3有96层),每层包含两个核心模块:
1.自注意力机制(Self-Attention)
通过自注意力机制实现全局语义捕捉,彻底改变传统RNN/CNN的序列处理模式。该机制允许模型动态计算每个token与序列其他位置的关联权重,例如在"猫追老鼠"的语境中,能自动建立"追"与"猫""老鼠"的语义联系。相较于RNN的线性计算,这种并行处理能力使计算效率提升10倍以上。并行计算多组注意力权重,动态聚焦关键上下文。
公式:
Attention ( Q , K , V ) = softmax ( Q K T d k ) V \text{Attention}(Q,K,V) = \text{softmax}\left( \frac{QK^T}{\sqrt{d_k}} \right)V Attention(Q,K,V)=softmax(dkQKT)V
2.前馈神经网络(Feedforward Network)
通过线性变换和非线性激活(如ReLU)进一步提取特征,公式为:
公式:
FFN ( x ) = max ( 0 , x W 1 + b 1 ) W 2 + b 2 \text{FFN}(x) = \max(0, xW_1 + b_1)W_2 + b_2 FFN(x)=max(0,xW1+b1)W2+b2
输出转换与概率分布
模型最后一层将隐藏状态映射为词表大小的Logits向量,通过Softmax函数转换为概率分布,表示每个Token的生成可能性。
采样策略
贪心采样:选择最高概率的Token(易导致重复)
温度采样:调整概率分布的平滑度(温度值低则结果保守,高则更具创造性)
Top-p采样:在累积概率前p%的候选中随机选择(平衡多样性与相关性)
自回归生成
将新生成的Token重新输入模型,循环预测后续内容,直到达到终止条件(如输出结束符
或达到最大长度限制)。
解码与文本拼接
将生成的Token序列还原为自然语言文本,例如将
['J', '.', 'K', '.', '罗琳']
拼接为“J.K.罗琳”。
结果优化
去除冗余空格、修正标点格式,部分模型结合语法检查或人工审核确保可读性。
让我们先看一个vllm部署qwen3-32b模型的命令示例:
CUDA_VISIBLE_DEVICES=0,1 python -m vllm.entrypoints.openai.api_server \
--model /home/models/Qwen/Qwen3-32B \ #指定模型的下载路径
--served-model-name qwen3-32b \ #指定模型启动的名称,后续的api请求就使用该model—name
--dtype auto \ #表示让 vLLM 自动推断模型权重和计算时使用的数据类型
--trust-remote-code \ #表示允许加载并执行模型作者提供的自定义代码,为了支持那些未完全集成到官方库中的自定义模型
--gpu-memory-utilization 0.95 \ # 提升显存利用率
--tensor-parallel-size 2 \ # 保持双卡并行
--max-model-len 4096 \ # 限制最大序列长度
--block-size 16 \ # 优化缓存块大小
--max-num-seqs 16 \ # 提升并发吞吐
--enforce-eager \ #强制使用 PyTorch 的急切执行模式(Eager Execution),并禁用内核融合优化(如 CUDA Graphs)。其目的是在特定场景下牺牲部分性能以换取更高的兼容性或调试便利性。
--enable-chunked-prefill \ # 启用分块预填充
--enable-prefix-caching # 激活前缀缓存
--host 0.0.0.0 --port 7180 #该组参数用于配置网络服务的监听地址和端口。
接下来我们看看这些参数是如何影响模型工作的:
1.由日志:
INFO 05-13 08:52:24 [loader.py:458] Loading weights took 5.87 seconds
INFO 05-13 08:52:24 [gpu_model_runner.py:1347] Model loading took 15.2683 GiB and 6.128082 seconds
看出模型参数加载占用 15.27 GiB 显存,在 FP16 精度下,每个参数占用 2 字节,因此模型加载时的显存占用为 8B×2 字节 / 参数 ≈ 16GB。
2.由日志:
INFO 05-13 08:54:01 [kv_cache_utils.py:634] GPU KV cache size: 112,720 tokens
INFO 05-13 08:54:01 [kv_cache_utils.py:637] Maximum concurrency for 32,768 tokens per request: 3.44x
看出:KV缓存(键值缓存)的显存占用112,720 tokens。最大支持并发数 ≈3.44。其中kv显存是根据--gpu-memory-utilization
指定模型占用显存分配比例,减去模型加载资源后自动预分配的。
KV缓存显存占用=2×层数×KV头数×头维度×Token数×(数据类型位数/8)
以日志中的数值为例,假设模型参数如下(以Qwen3-8B为例):
计算步骤:
单Token显存占用:2×32×8×128×816=131,072字节≈128KB
总显存占用:112,720 tokens×128KB=14,428,160KB≈13.76GB
单请求Block需求
单请求Block数=⌈max_model_len/block_size⌉
例如,若 max_model_len=32,768
,block_size=16
,则每个请求需 2048
个Block(32,768 / 16)。
最终并发数计算
最大并发数=(总Block数/单请求Block数)
例如,总Block数为7045(112,720 tokens / 16 tokens/Block),单请求需2048 Block,则并发数为 7045 / 2048 ≈ 3.44x
。
以下是vLLM参数的详细解释
block_size
gpu_memory_utilization
max_num_seqs
max_model_len
max_model_length=8192
时,输入 4096 Token 则输出最多 4096 Token)5.max_tokens
*控制范围*:模型单次生成的***输出内容****最大 Token 数量6,7 -
*作用机制*:仅限制生成文本长度,与输入无关(如设置 max_tokens=100
时,输出内容最多包含 100 Token) -
*典型应用*:
-限制回答篇幅(如要求生成100字摘要)
- 避免生成过长冗余内容(如设定 `max_tokens=500` 控制故事续写长度)
tensor_parallel_size
配合。--cpu_offload_gb=4
。best_of>1
时需设置)。outlines
或xgrammar
)。auto
。fcfs
(先到先服务)或priority
(优先级)。fcfs
。--limit_mm_per_prompt image5
。min_pixels=256 * 28 * 28
)。awq
/gptq
),减少显存占用。max_num_seqs
和gpu_memory_utilization
,启用enable_chunked_prefill
。block_size
和max_model_len
,启用CPU卸载。max_num_batched_tokens
,使用优先级调度。从下列图片中可以看到就算是qwen3同系列同参数规模下(235B)的模型也有不同的版本和命名方式,初次接触不免让人感到疑惑。下面让我来详细介绍一下大模型的命名背后的意义。
以Qwen3-235B-A22B-GPTQ-Int4为例:
Qwen3-235B-A22B-GPTQ-Int4
可拆解为五个核心部分:
[厂商前缀]-[参数量]-[激活参数]-[训练框架]-[量化精度]
↓ ↓ ↓ ↓ ↓
Qwen3 235B A22B GPTQ Int4
重点了解训练框架和量化精度对模型的影响:
以下是关于大模型中训练框架与量化精度对模型性能影响的深度解析,结合Qwen系列模型和行业实践:
精度 | 权重存储量 | 235B模型显存需求 | 适用硬件 |
---|---|---|---|
FP16 | 16-bit | 235B×2B=470GB | 多卡集群(如8xA100) |
Int8 | 8-bit | 235B×1B=235GB | 2-4卡中端GPU |
Int4 | 4-bit | 235B×0.5B=117.5GB | 单卡+CPU卸载 |
精度 | 生成速度(tokens/sec) | 延迟降低 | 适用场景 |
---|---|---|---|
FP16 | 120(基准) | - | 高精度需求 |
Int8 | 180-200 | 1.5x | 实时对话系统 |
Int4 | 220-260 | 2x+ | 批量数据处理 |
模型 | FP16准确率 | Int4准确率 | 下降幅度 |
---|---|---|---|
Qwen1.5-110B | 82.3% | 80.1% | 2.2% |
LLaMA-2-70B | 68.9% | 66.5% | 2.4% |
Mistral-8x7B | 72.1% | 70.8% | 1.3% |
任务类型 | 推荐量化方案 | 原因 |
---|---|---|
数学推理 | FP16/FP8 | 数值精度敏感 |
长文本生成 | GPTQ-Int4 + CPU卸载 | 显存压力大,需高效管理 |
多轮对话 | AWQ-Int4 | 动态范围保留更优 |
代码生成 | GPTQ-Int8 | 语法结构敏感,需平衡精度 |
根据场景选择技术组合:
是否需要训练新模型?
├── 是 → 使用PyTorch训练
└── 否 → 进入部署优化阶段
├── 目标设备是手机/边缘端? → PyTorch静态量化
├── 需要极致推理速度? → GPTQ-Int4 + Triton推理
└── 显存极度紧张? → AWQ-Int4 + vLLM
采样参数主要作用于大语言模型的解码阶段(生成阶段),即在模型计算出下一个词元的概率分布后,通过调整概率分布形态或采样范围来控制生成结果的随机性与多样性。
作用:控制生成文本的随机性和创造性。温度值越高,模型输出的概率分布越平滑,生成结果更随机、多样化;温度值越低,概率分布越尖锐,生成结果更保守、连贯
enable_thinking=True
):建议设为 0.6,在保证逻辑性的前提下允许一定创造力,适合需要推理的复杂任务(如数学题)。enable_thinking=False
):设为 0.7,略微增加随机性,适用于常规对话或需要多样性的场景(如创意写作)。原理:温度值通过缩放模型输出的对数概率分布,改变词元选择的置信度。
作用:动态选择累积概率超过阈值 p 的最小词元集合,平衡多样性与连贯性。例如,TopP=0.95 表示仅从概率最高的前95%词元中采样。
原理:TopP通过排除低概率词元减少无关输出的干扰,同时保留合理的多样性。例如,若候选词的概率分布为0.5、0.3、0.1,TopP=0.9时将选择前三个词元(累积概率0.9)。
作用:固定选择概率最高的前 K 个词元作为候选池,限制生成范围。TopK=20 表示每次仅从最可能的20个词中随机选择。
与TopP区别:TopK是静态截断,TopP是动态调整。两者可结合使用,例如TopK=20且TopP=0.95时,若前20个词元的累积概率已超过0.95,则实际候选池可能更小。
作用:过滤掉概率低于动态阈值(pscaled=pbase×pmax)的词元,防止低质量输出。设为 0 时关闭该功能。
原理:MinP根据当前最高概率词元动态调整阈值。例如,若最高概率为0.5且 pbase=0.1,则仅保留概率≥0.05的词元,避免极低概率词被选中。
作用:惩罚已生成词元的重复出现,鼓励多样性。取值范围 0-2,值越高,重复惩罚越强。
参数组合 | 适用场景 | 效果特点 |
---|---|---|
低T + 低top_p | 技术文档生成、代码补全 | 高确定性,输出与训练数据高度一致 |
高T + 高top_p | 创意写作、故事续写 | 多样性优先,可能包含非常规表达 |
中T + 动态k/p | 多轮对话、问答系统 | 平衡质量与多样性,避免重复回答 |
作用:惩罚已生成词元的重复出现,鼓励多样性。取值范围 0-2,值越高,重复惩罚越强。
参数组合 | 适用场景 | 效果特点 |
---|---|---|
低T + 低top_p | 技术文档生成、代码补全 | 高确定性,输出与训练数据高度一致 |
高T + 高top_p | 创意写作、故事续写 | 多样性优先,可能包含非常规表达 |
中T + 动态k/p | 多轮对话、问答系统 | 平衡质量与多样性,避免重复回答 |