本项目实现了基于大语言模型(LLM)和多智能体深度确定性策略梯度(MADDPG)的云边端三层架构计算卸载决策系统。通过LLM专家知识指导和知识蒸馏技术,提升MADDPG智能体的决策能力。
- LLM+MADDPG混合架构: 结合LLM的推理能力和MADDPG的学习能力
- 知识蒸馏技术: Agent通过知识蒸馏学习LLM的决策模式
- 纯Agent模式: 训练后的Agent可在无LLM指导下独立决策
- 云边端三层架构: 支持10个端设备、5个边缘服务器、1个云服务器的异构环境
- 三元分割决策: 支持任务在本地、边缘、云端的灵活分配
- 统一路径管理: 标准化的目录结构和文件保存系统
LLM专家指导 → MADDPG决策 → 环境交互 → 经验存储 → 网络训练(含知识蒸馏)
纯Agent决策 → 环境交互 → 性能评估
注意: 测试阶段不再需要LLM指导,Agent通过知识蒸馏已经内化了LLM的决策能力。
LLM4RL/
├── algos/ # 算法实现
│ ├── maddpg_agent.py # MADDPG智能体(支持知识蒸馏)
│ ├── maddpg_actor_critic.py # Actor-Critic网络
│ ├── replay_buffer.py # 经验回放缓冲区
│ └── noise.py # 噪声模型
├── environment/ # 环境模型
│ ├── cloud_edge_env.py # 云边端环境
│ ├── device_models.py # 设备模型
│ └── task_generator.py # 任务生成器
├── llm_assistant/ # LLM助手模块
│ ├── llm_client.py # LLM客户端
│ ├── prompt_builder.py # 提示词构建
│ └── response_parser.py # 响应解析
├── experiments/ # 训练测试脚本
│ ├── train_llm_maddpg_complete.py # LLM+MADDPG训练
│ ├── test_llm_maddpg.py # 纯Agent模式测试
│ ├── train_maddpg.py # 纯MADDPG训练
│ ├── test_maddpg.py # 纯MADDPG测试
│ ├── train_llm.py # 纯LLM训练
│ └── test_llm.py # 纯LLM测试
├── utils/ # 工具函数
│ ├── path_manager.py # 统一路径管理器
│ ├── csv_saver.py # CSV数据保存
│ ├── config.py # 配置管理
│ ├── metrics.py # 性能指标
│ └── plotting.py # 图表绘制
├── results/ # 结果目录(自动生成)
│ └── experiment_{timestamp}/
│ ├── maddpg/models/ # 纯MADDPG模型
│ │ ├── actor_agent_0_final.pth
│ │ ├── critic_agent_0_final.pth
│ │ └── ...
├── llm_maddpg/ # LLM+MADDPG算法结果
│ ├── models/ # 模型文件
│ │ ├── agent_0_final.pth
│ │ ├── agent_1_final.pth
│ │ └── ...
├── llm/ # 纯LLM算法结果
│ └── models/ # 模型文件(如有)
├── data/ # 数据文件
│ ├── csv/ # CSV格式训练指标
│ │ ├── MADDPG_training_metrics_*.csv
│ │ ├── LLM_MADDPG_training_metrics_*.csv
│ │ └── LLM_training_metrics_*.csv
│ └── json/ # JSON格式详细数据
├── plots/ # 图表文件
├── logs/ # 日志文件
├── test_results/ # 测试结果
└── comparison/ # 算法对比结果
# 安装依赖
pip install torch numpy gymnasium matplotlib pyyaml pandas requests
# 配置LLM服务器(可选,仅训练时需要)
# 编辑 config.yaml 中的 llm 配置项# 完整训练和测试流程
python main.py --mode all
# 仅训练所有算法
python main.py --mode train_only
# 仅测试所有算法
python main.py --mode test_only
# 训练特定算法
python main.py --mode llm_maddpg_only
python main.py --mode maddpg_only
python main.py --mode llm_only
# 测试特定算法
python main.py --mode test_maddpg_only --model-path results/experiment_YYYYMMDD_HHMMSS/maddpg/models
python main.py --mode test_llm_maddpg_only --model-path results/experiment_YYYYMMDD_HHMMSS/llm_maddpg/models
python main.py --mode test_llm_only --model-path results/experiment_YYYYMMDD_HHMMSS/llm/models
# 检查GPU环境
python -c "import torch; print(f'PyTorch: {torch.__version__}'); print(f'CUDA: {torch.cuda.is_available()}'); print(f'GPU数量: {torch.cuda.device_count()}'); [print(f'GPU {i}: {torch.cuda.get_device_name(i)}') for i in range(torch.cuda.device_count())]"# 使用GPU 0进行完整训练+测试
python main.py --gpu 0 --mode all --server-mode
# 使用GPU 1,自定义训练轮数
python main.py --gpu 1 --episodes 1000 --mode all --server-mode
# 批量训练模式(按顺序训练所有算法)
python main.py --gpu 0 --batch-train --episodes 500 --server-mode--gpu: 指定GPU ID(如:0, 1, 2...)--episodes: 自定义训练轮数(覆盖配置文件设置)--server-mode: 显示详细信息和GPU内存使用--batch-train: 批量训练模式,按顺序执行所有算法--seed: 设置随机种子确保可复现性
# 完整的服务器批量训练(推荐)
python main.py --gpu 0 --batch-train --episodes 1000 --server-mode --seed 42执行顺序:
- 🔥 训练MADDPG → 😴 休息10秒
- 🔥 训练LLM+MADDPG → 😴 休息10秒
- 🔥 训练LLM
- 🧪 测试MADDPG
- 🧪 测试LLM+MADDPG
- 🧪 测试LLM
- 📊 生成对比报告
# 仅在GPU上训练MADDPG
python main.py --gpu 0 --mode maddpg_only --episodes 500 --server-mode
# 仅在GPU上训练LLM+MADDPG
python main.py --gpu 1 --mode llm_maddpg_only --episodes 800 --server-mode
# 仅在GPU上训练LLM
python main.py --gpu 0 --mode llm_only --episodes 300 --server-mode# 终端1:GPU 0训练MADDPG
python main.py --gpu 0 --mode maddpg_only --episodes 1000 --server-mode
# 终端2:GPU 1训练LLM+MADDPG
python main.py --gpu 1 --mode llm_maddpg_only --episodes 1000 --server-mode
# 终端3:GPU 2训练LLM(如果有第三个GPU)
python main.py --gpu 2 --mode llm_only --episodes 500 --server-mode每次实验都会创建带时间戳的独立目录:
results/experiment_20250703_195030/
├── maddpg/ # 纯MADDPG算法结果
│ ├── models/ # 模型文件
│ │ ├── actor_agent_0_final.pth
│ │ ├── critic_agent_0_final.pth
│ │ └── ...
├── llm_maddpg/ # LLM+MADDPG算法结果
│ ├── models/ # 模型文件
│ │ ├── agent_0_final.pth
│ │ ├── agent_1_final.pth
│ │ └── ...
├── llm/ # 纯LLM算法结果
│ └── models/ # 模型文件(如有)
├── data/ # 数据文件
│ ├── csv/ # CSV格式训练指标
│ │ ├── MADDPG_training_metrics_*.csv
│ │ ├── LLM_MADDPG_training_metrics_*.csv
│ │ └── LLM_training_metrics_*.csv
│ └── json/ # JSON格式详细数据
├── plots/ # 图表文件
├── logs/ # 日志文件
├── test_results/ # 测试结果
└── comparison/ # 算法对比结果
- 纯MADDPG: 分离格式 -
actor_agent_{i}_final.pth,critic_agent_{i}_final.pth - LLM+MADDPG: 完整格式 -
agent_{i}_final.pth - 纯LLM: 无需保存模型文件
- 训练阶段: LLM提供专家动作,Agent学习模仿
- 蒸馏损失:
L_distill = MSE(agent_action, llm_action) - 总损失:
L_total = L_policy + α * L_distill - 内化效果: Agent逐渐学会独立决策
# 三元分割决策
action = [α1, α2, α3, edge_id]
# α1: 本地执行比例
# α2: 边缘执行比例
# α3: 云端执行比例 (α1 + α2 + α3 = 1)
# edge_id: 目标边缘服务器ID (0-4)- 能耗效率: 总能耗消耗 (J)
- 时延性能: 平均任务完成时延 (s)
- 资源利用: 系统资源利用率 (%)
- 完成率: 任务截止时间满足率 (%)
- 自动创建标准化目录结构
- 时间戳标识的独立实验
- 算法特定的文件组织
- 支持训练和测试结果分离
- Agent通过训练学习LLM决策模式
- 测试时无需LLM,降低推理成本
- 保持决策质量,提升响应速度
- 低延迟: 无需等待LLM推理
- 高可靠: 不依赖外部LLM服务
- 低成本: 减少计算资源消耗
- CSV格式的标准化训练指标
- JSON格式的详细实验数据
- 自动算法对比报告
- 完整的实验追踪记录
# 完整验证流程
python main.py --mode all --seed 42
# 查看结果
ls results/experiment_*/- LLM+MADDPG纯Agent模式应接近有LLM指导的性能
- 相比纯MADDPG应有显著性能提升
- 响应时间大幅降低(无LLM推理延迟)
- 所有结果保存在标准化目录结构中
- 训练依赖: 训练阶段需要LLM服务器支持
- 测试独立: 测试阶段完全不依赖LLM
- 路径管理: 系统自动管理所有文件路径
- 模型兼容: 支持多种模型文件格式自动检测
- 配置匹配: 测试配置应与训练环境配置一致
- ✅ 完成LLM+MADDPG训练框架
- ✅ 实现知识蒸馏机制
- ✅ 支持纯Agent模式测试
- ✅ 统一路径管理系统
- ✅ 标准化数据保存格式
- ✅ 完整性能对比分析
- 🔲 优化知识蒸馏算法
- 🔲 增加更多评估指标
- 🔲 支持在线学习模式
- 🔲 模型压缩与加速
如有问题,请通过Issue或邮件联系开发团队。