Views
No views yet
SFT(监督预训练)
历史点击数据 → Listwise Softmax Loss → 热启动 RankingHead
↓
Session-level GRPO(强化学习精调)
每用户采样 G=8 条完整 session
session 累计奖励做 group 归一化优势
PPO-clip 更新策略网络用户请求
↓
FAISS 向量召回(Top-50) ← 用户 mindset 向量检索
↓
Listwise Transformer 排序头 ← 50个候选联合建模,self-attention捕捉item-item交互
↓
Top-10 推荐列表1reward = click × 0.5 # 点击(短期兴趣)
2 + stay × 0.1 # 留存(每轮)
3 - leave × 1.0 # 离开惩罚
4 - diversity_penalty # 多样性(相似度 > 0.8 惩罚)
5 + instruction_follow # 指令跟随率| 实验 | NDCG@10 | ILD | 留存率 |
|---|---|---|---|
| A:离线 baseline(无仿真) | 0.0071 | 0.074 | - |
| B:规则推荐 + 仿真用户 | 0.1220 | 0.163 | 0.056 |
| C:完整系统(SFT+GRPO+分类器) | 0.0970 | 0.326 | 0.053 |
1pip install -r requirements.txt
2pip install transformers>=4.51.0 accelerate>=0.30.0 faiss-gpu-cu12kuai-rec/
big_matrix.csv
item_categories.csv
item_daily_features.csv
user_features.csv1export DASHSCOPE_API_KEY=your_key # 用于 item embedding 预计算(一次性)
2export QWEN3_MODEL=Qwen/Qwen3-8B # 用于用户仿真(本地 GPU)
3
4# 完整训练(SFT + GRPO)
5python run.py --device cuda --epochs 5
6
7# 跳过 SFT(已有checkpoint时)
8python run.py --device cuda --skip-sft --epochs 5python eval.py| 阶段 | 显存占用 | 推荐显卡 |
|---|---|---|
| SFT | ~100 MB | 任意 |
| GRPO(Qwen3-8B bf16) | ~16.5 GB | RTX 3090/4090 24G |
| GRPO(Qwen3-8B int4) | ~5.5 GB | RTX 3080 16G |
config.py # 超参数配置,GPU 自动检测
env.py # MDP 环境,奖励计算
rec_agent.py # FAISS 召回 + Transformer 排序头
sft_trainer.py # SFT 监督预训练
rl_trainer.py # Session-level GRPO 训练
user_sim.py # Qwen3-8B 用户仿真器
evaluate.py # 消融实验
run.py # 主入口