[ PROMPT_NODE_27078 ]
vectorization
[ SKILL_DOCUMENTATION ]
# PufferLib 向量化指南
## 概述
PufferLib 的向量化系统实现了高性能并行环境模拟,通过受 EnvPool 启发的优化实现,达到了每秒数百万步的性能。该系统支持同步和异步向量化,且开销极小。
## 向量化架构
### 关键优化
1. **共享内存缓冲区**: 所有环境共享单一统一缓冲区(不同于 Gymnasium 的每个环境一个缓冲区)
2. **忙等待标志 (Busy-Wait Flags)**: 工作进程在未锁定的标志上进行忙等待,而不是使用管道/队列
3. **零拷贝批处理**: 连续的工作进程子集返回观测值而无需复制
4. **冗余环境**: 模拟的环境数量超过批次大小,以实现异步返回
5. **每个工作进程多个环境**: 优化轻量级环境的性能
### 性能特征
- **纯 Python 环境**: 100k-500k SPS
- **基于 C 的环境**: 100M+ SPS
- **结合训练**: 400k-4M 总 SPS
- **向量化开销**: 在最优配置下 <5%
## 创建向量化环境
### 基础向量化
python
import pufferlib
# 自动向量化
env = pufferlib.make('environment_name', num_envs=256)
# 显式配置
env = pufferlib.make(
'environment_name',
num_envs=256,
num_workers=8,
envs_per_worker=32
)
### 手动向量化
python
from pufferlib import PufferEnv
from pufferlib.vectorization import Serial, Multiprocessing
# 串行向量化 (单进程)
vec_env = Serial(
env_creator=lambda: MyEnvironment(),
num_envs=16
)
# 多进程向量化
vec_env = Multiprocessing(
env_creator=lambda: MyEnvironment(),
num_envs=256,
num_workers=8
)
## 向量化模式
### 串行向量化
最适合调试和轻量级环境:
python
from pufferlib.vectorization import Serial
vec_env = Serial(
env_creator=env_creator_fn,
num_envs=16
)
# 所有环境在主进程中运行
# 无多进程开销
# 使用标准工具更易于调试
**何时使用:**
- 开发和调试
- 非常快的环境 (每步 < 1μs)
- 少量环境 (< 32)
- 单线程性能分析
### 多进程向量化
最适合大多数生产用例:
python
from pufferlib.vectorization import Multiprocessing
vec_env = Multiprocessing(
env_creator=env_creator_fn,
num_envs=256,
num_workers=8,