本文基于
dist_infer_demo_v3.py,介绍如何在多进程环境下使用.generate()方法进行完整文本生成推理,并结合KV Cache加速性能,展示每个进程独立生成自然语言输出的实战方法。
📁 项目结构回顾
dist_infer_demo/
├── dist_infer_demo_v3.py # ✅ 本文主程序
├── launch_v3.sh # 启动脚本(torchrun)
├── gpt2_student_v2/ # 训练后小模型
🧠 本篇目标
- 使用
.generate()进行多 token 生成 - 启用
use_cache=True(KV Cache)加速解码 - 每个进程使用独立 prompt 并输出完整自然语言结果
- 支持 torchrun 多进程协同运行
1️⃣ 启动方式
bash launch_v3.sh
内容如下:
torchrun --nproc_per_node=4 dist_infer_demo_v3.py
2️⃣ KV Cache 背景知识
GPT 解码阶段若每轮都重新计算上下文,将极其低效。KV Cache 可以将历史 token 的注意力值缓存,从而 仅计算新 token 的上下文结果。
在 Transformers 中:
generate(..., use_cache=True)
自动启用缓存,默认开启。
3️⃣ 多进程主逻辑解读
分布式初始化
dist.init_process_group("gloo")
rank = dist.get_rank()
world_size = dist.get_world_size()
Prompt 分发
prompts = [
"你好,今天是",
"我喜欢的颜色是",
"Artificial intelligence is",
"GPT-2 is a"
]
prompt = prompts[rank % len(prompts)]
使用 generate 生成文本
inputs = tokenizer(prompt, return_tensors="pt").to(device)
with torch.no_grad():
outputs = model.generate(
**inputs,
max_length=30,
do_sample=True,
top_k=50,
top_p=0.95,
temperature=0.7,
use_cache=True,
pad_token_id=tokenizer.eos_token_id
)
参数说明:
| 参数 | 含义 |
|---|---|
max_length | 生成的最大 token 数 |
top_k | 从前 k 个概率最高词中采样 |
top_p | 累计概率达到 p 的词中采样 |
temperature | 控制生成的随机程度 |
use_cache | 启用 KV Cache 加速解码(默认启用) |
解码输出并打印结果
text = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(f"[Rank {rank}] 生成内容:{text}")
4️⃣ 输出示例
[Rank 0] 生成内容:你好,今天是晴朗的一天,我打算去散步。
[Rank 1] 生成内容:我喜欢的颜色是蓝色,因为它很平静。
[Rank 2] 生成内容:Artificial intelligence is changing the world of technology rapidly.
[Rank 3] 生成内容:GPT-2 is a powerful language model developed by OpenAI.
✅ 技术亮点总结
| 特性 | 说明 |
|---|---|
| 多进程独立生成 | 每个进程使用不同 prompt 各自生成文本 |
| KV Cache 加速 | 避免重复计算,显著提升 decode 效率 |
| generate 样式灵活 | 支持 sampling、多样性控制、max length 限制 |
| 分布式稳定性强 | 可平稳支持高并发模型服务(如 API 接口) |
📌 总结
- 本文展示了如何使用
.generate()实现 GPT-2 的完整多 token 文本生成 - 启用 KV Cache 后生成更快,性能优于传统 forward
- 多进程环境下每个进程独立生成内容,适合部署扩展对话服务或批量推理
🧭 本系列为 GPT-2 分布式推理项目第3篇(共三篇)
- 🧩 第1篇:用 torchrun 启动 GPT-2 多进程推理:分布式推理基础与 CPU/GPU 混合部署实战
- 🚀 第2篇:多进程 GPT-2 推理通信实战:all_gather_object 实现输出同步与统一收集
- 🌐 第3篇:支持生成文本的多进程 GPT-2 分布式推理:generate + KV Cache 实战解析
📌 YoanAILab 技术导航页
💡 项目源码 × 实战部署 × 转型经验,一页总览
👉 点击查看完整导航页
📚 包含内容:
- 🧠 GPT-2 项目源码(GitHub)
- ✍️ 优快云 技术专栏合集
- 💼 知乎转型日志
- 📖 公众号 YoanAILab 全文合集
99

被折叠的 条评论
为什么被折叠?



