日期: 2025-11-24 类型: 架构改进
本次开发完成两个核心改进:配置管理统一化和流式HDF5写入机制,解决内存爆炸问题并提升代码一致性。
修改文件: config/config.py, config/agent.config.yaml
改动内容:
use_autowzry_lite: bool = True 配置参数原因:明确控制autowzry库来源,便于开发和部署环境切换。
修改文件: environment/compatibility.py
改动内容:
原因:避免在配置加载前导入,确保根据配置选择正确的库。
修改文件: scripts/train.py, scripts/battle.py, scripts/collect_from_device.py
改动内容:
原因:解决训练和对战时action space不匹配的问题,保持配置一致性。
原有实现问题:
新增文件内容: data/data_manager.py
新增类:
class StreamingRecorder:
"""流式HDF5记录器 - 边记录边写入磁盘,避免内存爆炸"""
def __init__(filepath):
# 初始化HDF5文件,设置recording_mode='streaming'
def append_frame(frame_data: Dict[str, Any]):
# 立即写入一帧到HDF5(支持任意字段)
# 内存占用仅为单帧大小
def finalize() -> str:
# 完成记录,添加finished_at时间戳
def get_frame_count() -> int:
# 获取已记录的帧数
特点:
修改文件: data/data_manager.py
改动内容:
效果:
修改文件: scripts/battle.py
新增参数:
--record-interval: 录制间隔(秒),例如1.0表示每秒录制一帧--output: 输出HDF5文件路径改动内容:
用途:
示例:
# 离线测试并录制
python scripts/battle.py --model checkpoints/model.pth --video moive/1.mp4 --interval 1.0 --record-interval 1.0 --output battle_test.hdf5
# 在线对战并录制
python scripts/battle.py --model checkpoints/model.pth --interval 1.0 --record-interval 1.0 --output battle_online.hdf5
修改文件: core/trainer.py
改动内容:
torch.cuda.amp.GradScaler()改为torch.amp.GradScaler('cuda')修改文件: environment/compatibility.py
改动内容:
list.index(max(move))改为np.argmax(move_array)修改文件: config/agent.config.yaml
更新内容:
use_autowzry_lite: trueenabled_states: [in_battle, dead, alive, kill, assist]enabled_actions: ['move'](默认只启用move)本次改进从根本上解决了内存爆炸问题,将所有采集场景统一为流式写入,显著提升系统稳定性。同时完善了配置管理,修复了脚本参数不一致导致的action space错误。battle.py新增的录制功能为模型分析和调试提供了强大工具。