GRec 聚焦多模态生成式推荐。整体流水线是:
Embedding → SID(离散索引)→ SFT(监督微调)→(可选)RL(排序优化)→ Test(评测/回归)
文档入口:
docs/install.mddocs/sid_readme.md(包含两种 SID 构建方式:index/ 与 tokenizer/)docs/index_data_layout.md(如何无冲突切换不同 index)docs/finetune_readme.mddocs/rl_readme.mddocs/test_readme.mddocs/dataprocess_readme.mddocs/notebook_readme.mddocs/run_script_convention.mddata_process/:数据增强、图片下载、embedding 抽取等工具index/:SID 方式 A(RQVAE,深度离散化)+ build_embeddings.py(文本 embedding 抽取)
index/engine/train_loop.py、index/engine/eval.py、index/engine/checkpoint.pytokenizer/:SID 方式 B(Residual KMeans tokenizer)src/:训练/评测核心代码(SFT、RL、SeqRec metric、Text generation 等)scripts/:一键/模板脚本(finetune、seqrec、text_generate、rl…)
scripts/finetune/README.md、scripts/rl/README.mdscripts/tools/gen_run.sh(见 scripts/tools/README.md)config/:deepspeed/accelerate 配置与 benchmark 配置3.10(训练/flash-attn/deepspeed 兼容性更稳,详见 docs/install.md)pip install -r requirements.txtdocs/rl_readme.md):pip install trl bitsandbytesconfig/ds_z2_*.json / config/ds_z3_*.jsonconfig/zero2_opt.yaml
setup.sh/Dockerfile提供了环境搭建参考,但可能需要按你的 CUDA/Python 版本做调整。
index/scripts/text2emb.sh(读取 data/<DATASET>/<DATASET>.item.json,产出 *.emb-*.npy + *.ids.json)scripts/extract_rep.py(包装 data_process/qwen_embeddings.py,可批量跑多种 mode)现在 SID 有两套实现(建议先看 docs/sid_readme.md):
index/(RQVAE):index/train_index.py 训练 → index/generate_indices.py 导出 Dataset.index_*.jsontokenizer/(Residual KMeans):tokenizer/train_res_kmeans.py 训练 tokenizer → tokenizer/build_index_json.py 导出 Dataset.index_*.json导出的索引文件最终通过 --index_file 在训练/评测阶段加载(拼接规则见 docs/sid_readme.md)。
详见 docs/finetune_readme.md 与 scripts/finetune/。
核心点:
train_ddp_vl.py / train_ddp.py 会从 index_file 收集 <a_*> 等 token 并扩词表(推荐主线)--lora_modules_to_save "embed_tokens,lm_head",否则新增 token 的 embedding/head 可能无法正确保存--deterministic:需要严格复现时开启;默认不启用时更偏性能详见 docs/rl_readme.md 与 scripts/rl/。
当前 RL 入口为 python -m src.rl.rl(脚本模板见 scripts/rl/)。
详见 docs/test_readme.md,常用脚本:
scripts/seqrec/case_seqrec.sh、scripts/seqrec/metric_ddp.shscripts/text_generate/evaluate*.sh、scripts/text_generate/evaluate_lora.sh补充:
--dataset 在评测阶段支持逗号分隔多数据集(会合并后统一统计指标)--index_file 的拼接规则是全流程最常见的踩坑点;强烈建议先通读 docs/sid_readme.md。237 commits
Python
83.2%
Jupyter Notebook
9.4%
Shell
7.3%
GRec 聚焦多模态生成式推荐。整体流水线是:
Embedding → SID(离散索引)→ SFT(监督微调)→(可选)RL(排序优化)→ Test(评测/回归)
文档入口:
docs/install.mddocs/sid_readme.md(包含两种 SID 构建方式:index/ 与 tokenizer/)docs/index_data_layout.md(如何无冲突切换不同 index)docs/finetune_readme.mddocs/rl_readme.mddocs/test_readme.mddocs/dataprocess_readme.mddocs/notebook_readme.mddocs/run_script_convention.mddata_process/:数据增强、图片下载、embedding 抽取等工具index/:SID 方式 A(RQVAE,深度离散化)+ build_embeddings.py(文本 embedding 抽取)
index/engine/train_loop.py、index/engine/eval.py、index/engine/checkpoint.pytokenizer/:SID 方式 B(Residual KMeans tokenizer)src/:训练/评测核心代码(SFT、RL、SeqRec metric、Text generation 等)scripts/:一键/模板脚本(finetune、seqrec、text_generate、rl…)
scripts/finetune/README.md、scripts/rl/README.mdscripts/tools/gen_run.sh(见 scripts/tools/README.md)config/:deepspeed/accelerate 配置与 benchmark 配置3.10(训练/flash-attn/deepspeed 兼容性更稳,详见 docs/install.md)pip install -r requirements.txtdocs/rl_readme.md):pip install trl bitsandbytesconfig/ds_z2_*.json / config/ds_z3_*.jsonconfig/zero2_opt.yaml
setup.sh/Dockerfile提供了环境搭建参考,但可能需要按你的 CUDA/Python 版本做调整。
index/scripts/text2emb.sh(读取 data/<DATASET>/<DATASET>.item.json,产出 *.emb-*.npy + *.ids.json)scripts/extract_rep.py(包装 data_process/qwen_embeddings.py,可批量跑多种 mode)现在 SID 有两套实现(建议先看 docs/sid_readme.md):
index/(RQVAE):index/train_index.py 训练 → index/generate_indices.py 导出 Dataset.index_*.jsontokenizer/(Residual KMeans):tokenizer/train_res_kmeans.py 训练 tokenizer → tokenizer/build_index_json.py 导出 Dataset.index_*.json导出的索引文件最终通过 --index_file 在训练/评测阶段加载(拼接规则见 docs/sid_readme.md)。
详见 docs/finetune_readme.md 与 scripts/finetune/。
核心点:
train_ddp_vl.py / train_ddp.py 会从 index_file 收集 <a_*> 等 token 并扩词表(推荐主线)--lora_modules_to_save "embed_tokens,lm_head",否则新增 token 的 embedding/head 可能无法正确保存--deterministic:需要严格复现时开启;默认不启用时更偏性能详见 docs/rl_readme.md 与 scripts/rl/。
当前 RL 入口为 python -m src.rl.rl(脚本模板见 scripts/rl/)。
详见 docs/test_readme.md,常用脚本:
scripts/seqrec/case_seqrec.sh、scripts/seqrec/metric_ddp.shscripts/text_generate/evaluate*.sh、scripts/text_generate/evaluate_lora.sh补充:
--dataset 在评测阶段支持逗号分隔多数据集(会合并后统一统计指标)--index_file 的拼接规则是全流程最常见的踩坑点;强烈建议先通读 docs/sid_readme.md。237 commits
Python
83.2%
Jupyter Notebook
9.4%
Shell
7.3%