本文档介绍了DeepSeek-V3的文本生成能力和流程。它解释了如何使用生成接口,包括交互模式和批量模式,并详细介绍了底层的生成算法。有关文本生成前使用的权重转换信息,请参阅权重转换,有关加速生成过程的内核优化,请参阅优化内核。
DeepSeek-V3的文本生成系统提供了一个灵活的接口,用于使用模型生成文本。该系统同时支持交互式聊天会话和多提示批量处理。它包括基于温度的采样,用于控制输出的多样性,以及跨多个GPU的分布式推理,以提高性能。
来源: inference/generate.py80-158
DeepSeek-V3中的文本生成过程遵循标准的自回归方法,并进行了一些优化以实现高效推理。
来源: inference/generate.py30-78 inference/generate.py14-27
文本生成系统的核心是generate()函数,该函数处理自回归生成过程。此函数接收分词后的提示,并根据模型的预测生成新的标记。
| 参数 | 类型 | 描述 |
|---|---|---|
| model | Transformer | DeepSeek-V3 Transformer模型 |
| prompt_tokens | List[List[int]] | 分词后的提示列表 |
| max_new_tokens | int | 要生成的最大 token 数 |
| eos_id | int | 用于停止生成的序列结束标记ID |
| temperature | 浮点数 | 采样温度(越高=越随机) |
生成过程遵循以下步骤:
来源: inference/generate.py30-78
sample()函数实现了基于温度的采样,以控制生成输出的随机性。
温度越高,输出就越多样化,但也可能越不聚焦。较低的温度值会产生更确定、更聚焦的输出。当温度设置为0时,该函数只选择概率最高的标记(贪婪解码)。
来源: inference/generate.py14-27
DeepSeek-V3支持两种主要的文本生成使用模式:
交互模式提供了一个类似聊天的界面,用户可以在其中与模型进行持续的对话。
交互模式会维护对话历史,从而能够根据之前的交流提供上下文感知的响应。
批量模式处理输入文件中的多个提示。
此模式对于在没有用户交互的情况下高效处理多个查询非常有用。
来源: inference/generate.py121-155
DeepSeek-V3支持使用PyTorch的分布式通信包在多个GPU上进行分布式文本生成。该实现
这使得在多GPU系统上能够进行高效推理,让模型能够处理更长的提示并更快地生成响应。
来源: inference/generate.py100-107 inference/generate.py124-134 inference/generate.py157-158
文本生成系统提供了一个命令行界面,包含以下参数:
| 参数 | 类型 | 默认 | 描述 |
|---|---|---|---|
| --ckpt-path | str | 必需 | 模型检查点目录的路径 |
| --config | str | 必需 | 模型配置文件路径 |
| --input-file | str | "" | 包含批量处理提示的文件 |
| --interactive | 标志 | 否 | 启用交互模式 |
| --max-new-tokens | int | 200 | 要生成的新标记的最大数量 |
| --temperature | 浮点数 | 0.2 | 采样的温度 |
至少需要指定--input-file或--interactive中的一个才能运行生成器。
来源: inference/generate.py161-185
在生成响应时,系统会使用分词器的聊天模板来格式化提示。这会将原始文本转换为模型在聊天交互中期望的特定格式。
聊天模板会添加适当的系统提示、角色标记和模型理解对话上下文所需的格式。
来源: inference/generate.py140-141 inference/generate.py149
要启动与DeepSeek-V3的交互式聊天会话
这将启动一个提示,您可以在其中输入文本,模型将做出回应。对话历史会被保留,从而能够进行上下文交互。
要处理包含多个提示的文件
系统将为文件中的每个提示生成响应并显示结果。