DQN (Deep Q-Network) 是一种经典的深度强化学习算法,适用于离散动作空间中的决策问题。
本模型为 DQN-LunarLander-v2,在 OpenAI Gym 的 LunarLander-v2 环境中训练,用于控制月球着陆器安全降落到指定区域。
| 属性 | 值 |
|---|---|
| 算法 | DQN (Deep Q-Network) |
| 策略网络 | MlpPolicy (多层感知机) |
| 隐藏层 | [256, 256] |
| 观测空间 | Box(8,) - 8 维连续空间 |
| 动作空间 | Discrete(4) - 4 个离散动作 |
| 学习率 | 0.00063 |
| 折扣因子 | 0.99 |
| 经验回放缓冲区 | 50,000 |
| 目标网络更新间隔 | 250 |
| 依赖项 | 版本要求 | 说明 |
|---|---|---|
| 操作系统 | CentOS 7.6+ / Ubuntu 18.04+ | 支持主流 Linux 发行版 |
| CANN | 5.0.RC2+ | 华为昇腾计算架构 |
| Python | 3.10 / 3.12 | 推荐 3.10+ |
| PyTorch | 2.0.0+ | 推荐 2.10 |
| torch_npu | 与 PyTorch 版本匹配 | 昇腾 PyTorch 扩展 |
| stable-baselines3 | 2.0.0+ | 强化学习模型加载 |
| gymnasium | 最新版 | 环境模拟器 |
| numpy | 最新版 | 数值计算 |
# 1) 激活已预装 torch / torch_npu 的 conda 环境
conda activate pt2100
# 2) 安装模型依赖(使用华为云源)
pip install --index-url https://repo.huaweicloud.com/repository/pypi/simple \
stable-baselines3>=2.0.0 gymnasium numpy
# 3) 验证环境
python -c "
import torch, torch_npu
print('torch:', torch.__version__)
print('torch_npu:', torch_npu.__version__)
print('NPU 可用:', torch.npu.is_available())
"# 进入适配目录
cd /workspace/agent1/dqn-LunarLander-v2-ascend
# 确认上游权重存在
ls -la /workspace/agent2/sb3/dqn-LunarLander-v2/
# 期望输出:config.yml dqn-LunarLander-v2.zip ...# 检查 NPU 设备状态
npu-smi info
# 验证 torch_npu 安装
python -c "import torch; import torch_npu; print('NPU 可用:', torch.npu.is_available())"# 基本用法:默认参数
python inference.py --device npu:0
# 查看 NPU 显存使用
python inference.py --device npu:0 --show_npu_memory
# 指定其他 NPU 卡
python inference.py --device npu:1conda activate pt2100
cd /workspace/agent1/dqn-LunarLander-v2-ascend
python inference.py --device npu:0实际输出:
[W822 13:02:04.834691030 FunctionLoader.cpp:48] Warning: LD_PRELOAD detected...
[W822 13:02:10.560103320 NPUCachingAllocator.cpp:201] Warning: The current CANN and Soc versions require processing for 32 padding size, with memory allocation. (function operator())
============================================================
DQN-LunarLander-v2 昇腾 NPU 推理
============================================================
[Device] npu:0
[Model Path] /workspace/agent2/sb3/dqn-LunarLander-v2
[Creating] Q-Network architecture...
[Loading] Policy weights from zip...
Files in zip: ['data', 'pytorch_variables.pth', 'policy.pth', 'policy.optimizer.pth', '_stable_baselines3_version', 'system_info.txt']
Extracting policy.pth from zip...
Loading policy weights into Q-Network...
Policy weights loaded
[Model Loaded] Allocated: 0.00 GB, Reserved: 0.00 GB
[npu-smi info]
+------------------------------------------------------------------------------------------------+
| npu-smi 25.5.2 Version: 25.5.2 |
+---------------------------+---------------+----------------------------------------------------+
| NPU Name | Health | Power(W) Temp(C) Hugepages-Usage(page)|
| Chip | Bus-Id | AICore(%) Memory-Usage(MB) HBM-Usage(MB) |
+===========================+===============+====================================================+
| 0 910B2 | OK | 102.5 40 0 / 0 |
| 0 | 0000:C1:00.0 | 0 0 / 0 3487 / 65536 |
+===========================+===============+====================================================+
+---------------------------+---------------+----------------------------------------------------+
| NPU Chip | Process id | Process name | Process memory(MB) |
+===========================+===============+====================================================+
| 0 0 | 1309615 | python | 118 |
+===========================+===============+====================================================+
[Creating] Dummy observation (LunarLander-v2 obs space: Box(8,))...
Observation shape: (8,)
Observation values: [-0.9724137 -1.256936 -0.14656144 -0.14891031]...
[Running Inference]...
[npu-smi info]
+------------------------------------------------------------------------------------------------+
| npu-smi 25.5.2 Version: 25.5.2 |
+---------------------------+---------------+----------------------------------------------------+
| NPU Name | Health | Power(W) Temp(C) Hugepages-Usage(page)|
| Chip | Bus-Id | AICore(%) Memory-Usage(MB) HBM-Usage(MB) |
+===========================+===============+====================================================+
| 0 910B2 | OK | 103.7 41 0 / 0 |
| 0 | 0000:C1:00.0 | 0 0 / 0 3487 / 65536 |
+===========================+===============+====================================================+
+---------------------------+---------------+----------------------------------------------------+
| NPU Chip | Process id | Process name | Process memory(MB) |
+===========================+===============+====================================================+
| 0 0 | 1309615 | python | 118 |
+===========================+===============+====================================================+
[Results]
Q-values shape: torch.Size([1, 4])
Q-values: [91.25, 88.39, 84.81, 98.20]
Selected action: 3
Action Q-value: 98.2046
[Memory After Inference] Allocated: 0.00 GB, Reserved: 0.00 GB
[Done]✅ 验证要点:
解决方案:
source /usr/local/Ascend/ascend-toolkit/latest/set_env.sh)npu-smi info 检查设备状态解释:LunarLander-v2 的观测空间为 Box(8,),包含 8 个连续值:
解释:LunarLander-v2 共有 4 个离散动作:
dqn-LunarLander-v2-ascend/
├── inference.py # 推理脚本(torch_npu 推理)
├── README.md # 本文档
├── requirements.txt # 依赖列表
└── assets/ # 资源占位目录上游权重目录(只读,未被修改):
/workspace/agent2/sb3/dqn-LunarLander-v2/
├── config.yml # DQN 超参数配置
├── dqn-LunarLander-v2.zip # 模型压缩包
├── dqn-LunarLander-v2/ # 解压后的模型目录
│ ├── policy.pth # 策略网络权重
│ └── policy.optimizer.pth # 优化器状态
└── README.md # 原始文档# DQN-LunarLander-v2 昇腾 NPU 推理环境依赖
# 核心依赖(必须)
torch>=2.0.0
torch_npu
stable-baselines3>=2.0.0
numpy
gymnasium使用方式:
# 激活环境
conda activate pt2100
# 安装依赖(华为云源)
pip install --index-url https://repo.huaweicloud.com/repository/pypi/simple -r requirements.txt