4 篇文章带有标签 “推理”

大模型(语言、视觉语言、语音)推理服务部署与测试

计算能力(CC)定义了每种 NVIDIA GPU 架构的硬件特性支持的指令。在下表中查找您的GPU的计算能力。

docker run -it --rm \
  --ipc=host \
  --net=host \
  --runtime=nvidia \
  --name=vllm-test \
  -v /models:/models \
  -v ~/.cache/huggingface:/root/.cache/huggingface \
  -v ~/.cache/modelscope:/root/.cache/modelscope \
  nvcr.io/nvidia/vllm:25.10-py3 \
  bash

默认情况下,如果模型未指向有效的本地目录,它将从 Hugging Face Hub 下载模型文件。要从 ModelScope 下载模型,请在运行命令之前进行如下设置:

export VLLM_USE_MODELSCOPE=true
vllm serve /models/Qwen/Qwen3-8B \
  --served-model-name qwen3 \
  --chat-template /models/Qwen/Qwen3-8B/qwen3_nonthinking.jinja

vLLM 推理引擎的核心优化技术及其工作流程

vLLM V1 引擎通过优化其核心引擎循环,将输入处理并行化,并引入了分段式 CUDA 图,从而实现了更灵活、动态的执行模型,显著降低了在线服务的延迟(TTFT 和 TPOT),同时保持了高吞吐量。其设计目标是确保 GPU 不闲置,通过 API 服务器和 EngineCore 之间的协作来高效调度和执行任务。为了进一步加速大型语言模型推理,vLLM V1 采用了多种优化技术:它通过分离式预填充分块预填充来优化首个 token 的生成延迟,并结合连续批处理分页注意力来提高 KV 缓存的内存效率和 GPU 利用率。此外,前缀缓存技术避免了重复计算相同提示的 KV 缓存,而级联推理则是一种内存带宽高效的共享前缀批处理解码技术,通过结合多查询注意力处理共享 KV 和单查询批处理解码处理独特 KV,特别适用于多用户共享长提示的场景,能显著提升性能。其他高级解码方法如推测性解码利用草稿模型加速生成,跳跃解码则适用于结构化输出场景。最后,量化技术是提升性能的关键手段,通过对权重、激活值和 KV 缓存使用低位精度(如 FP8、INT8),它能减少存储和内存占用,加速计算密集型和内存带宽密集型任务,并允许在固定硬件下处理更多 token,从而大幅提升吞吐量,同时保持模型准确性。

典型 LLM 推理优化

Flash Attention 的核心思想是将多个操作融合为一个 GPU 内核(kernel),并

提升 LLM 推理能力:CoT, ReAct, ToT

特性 CoT (Chain-of-Thought) ReAct (Reasoning and Acting) ToT (Tree-of-Thoughts)
中文名称 思维链 推理与行动 思维树
核心思想 引导模型生成中间推理步骤,模仿人类逐步思考。 结合内部推理与外部工具交互,获取并利用额外信息。 允许模型同时探索多个不同的推理路径,形成树状结构,并进行评估和选择。
工作方式 在提示中展示逐步推理的示例,引导模型按步骤思考并输出过程。 模型交替进行:
1. 思考 (Thought): 分析情况,规划行动。
2. 行动 (Action): 调用外部工具(如搜索)。
3. 观察 (Observation): 获取行动结果。
1. 生成多个想法: 每一步产生多个可能的思路。
2. 评估想法: 对各思路进行可行性 / 潜力评估。
3. 搜索策略: 使用如 BFS(广度优先搜索) 或 DFS(深度优先搜索) 探索思路树,可回溯。
主要优点 - 提高复杂推理能力
- 增强可解释性,理解模型思路
- 处理知识密集型任务(获取外部知识)
- 减少信息幻觉
- 动态适应环境反馈
- 解决更复杂、探索性强的问题
- 提高规划和决策能力
- 支持回溯,增强鲁棒性
简单比喻 让模型“多想几步”,把思考过程写出来。 让模型边“想”边“做”(例如上网查资料)。 让模型同时“想”多种可能性,像走迷宫一样尝试不同路径,并选择最优的。

LLM 推理在软件任务中扮演什么角色?

大型语言模型(LLM)的工作原理根植于模式匹配和对下一个词元的统计预测("随机鹦鹉")。从这种方法中产生的一个有些出人意料的能力是它们也能在一定程度上"推理"解决问题。有些模型的推理能力比其他模型更强,OpenAI的"o1"和"o3"模型是两个突出的推理模型,而DeepSeek的"R1"最近引起了很大轰动。但是当我们在编码任务中使用AI时,这种能力发挥什么作用呢?

剧透提醒:我还没有答案!但我有问题和想法。

我将从两个方面开始讨论,这两个方面在我的理解中是推理能力的限制,而且这些限制在编码环境中是相关的。然后我将分享我的想法,即推理在哪些编码任务中可能有用,在哪些任务中可能没用。

他们发现:

  1. 姓名和数字的变化会影响模型解决问题的性能。即使推理步骤完全相同(Sophie看她的侄子变成Anita看她的孙女,或者是12个毛绒玩具而不是8个),模型解决问题的性能也不一致,甚至比原始基准测试略有下降。
  1. 当问题的难度和规模增加时,性能进一步下降。
  1. 最后,他们发现在问题中添加无关信息对性能有很大的负面影响。

首先,这是一个很好的例子,说明为什么我们应该对LLM基准测试持保留态度。

在编码环境中,我发现最后一个发现特别有趣。