2301_76761127/ug-cppo-finai-2025-npu
模型介绍
文件和版本
Pull Requests
讨论
分析

graceesthi/ug-cppo-finai-2025 昇腾 NPU 适配

阶段三模型 | 强化学习金融交易智能体(UG-CPPO:不确定性门控 CVaR-PPO,FinAI Contest 2025)| 昇腾 910B NPU 推理验证

模型简介

UG-CPPO v3 是面向美股 10 标的组合交易的风险敏感强化学习智能体(Stable-Baselines3 PPO, ActorCriticPolicy MLP 81→64→64,Tanh 激活)。仓库含 30 个训练 checkpoint (ppo / cppo / ug_cppo × seeds 42-51),观测为 81 维 FinRL 风格交易状态 (现金 + 10 股价 + 10 持仓 + 60 技术指标),输出 10 维连续调仓动作([-1,1],10 只股票)。

  • 原仓: https://huggingface.co/graceesthi/ug-cppo-finai-2025
  • 架构: SB3 ActorCriticPolicy(MlpPolicy [64,64])| 参数: 19.5K
  • 验证 checkpoint: ug_cppo_seed47.zip(论文 Rachev 比率最优 1.0104)

适配要点

问题修复
环境无 stable_baselines3直接解析 SB3 zip(zipfile 读 data + policy.pth),手工重建 Actor-Critic MLP,零 SB3 依赖
重建正确性安装 SB3 2.8.0 交叉验证:手工重建 vs PPO.predict(deterministic=True) 动作最大误差 0.0
无 gymnasium 交易环境自合成 81 维 FinRL 风格观测(归一化现金/股价/持仓/技术指标,随机游走行情),64 步回测前向
原始量纲使 tanh 饱和观测各分量按训练环境惯例归一化到 O(1)(现金/1e6、股价除首日价、指标缩放),否则策略输出塌缩为常量
NPU 推理bf16 精度加载至昇腾 910B4 单卡,确定性动作 = clip(高斯均值, -1, 1)

运行

pip install -r requirements.txt
python3 inference.py                                    # 默认 ug_cppo_seed47.zip,seed=2026,64 步
python3 inference.py --ckpt cppo_seed42.zip --seed 7 --steps 32

权重目录由 MODEL_PATH 环境变量指定,默认 ~/models/graceesthi/ug-cppo-finai-2025。

验证结果

  • 设备: 昇腾 910B4 NPU 单卡 npu:0,精度 bf16
  • 任务: 合成行情 64 步回测(81 维观测 → 10 维调仓动作),seed=2026
  • 峰值显存: 0.06 MiB(torch.npu.max_memory_allocated;19.5K 参数微型策略网络,npu-smi HBM 2876→2944 MB 含运行时上下文)
  • 回测耗时: 0.057s / 64 步(平均 0.89 ms/步)
  • 输出: 买信号 338 次 / 卖信号 283 次,平均换手 1.53,价值估计 V(s) 均值 +0.0787; 逐标的调仓摘要(AAPL/MSFT 卖出,NVDA/META/GOOGL 买入等)随行情逐步变化
  • 日志输出: [验收] NPU 推理运行成功 ✓

交付件

inference.py            # NPU 推理脚本(手工 SB3 zip 加载器 + 合成行情回测,MODEL_PATH 可指定权重目录)
requirements.txt
README.md
meta.json               # 适配工作流记录
assets/
  agent_workflow.png    # 适配流程
  npu_device_call.png   # npu-smi 设备调用
  model_result.png      # 推理日志与验收标记