【免费下载链接】GRID
GRID: Generative Recommendation with Semantic IDs
GRID(Generative Recommendation with Semantic IDs)是 Snap Research 开源的生成式推荐框架,核心能力是语义ID生成与离线推理:先用 LLM 把商品文本转成 embedding,再通过残差量化学习层次化的语义 ID,最后用 TIGER 式生成模型产出推荐序列。本文给出一套可直接上生产的部署指南,覆盖环境准备、四步流水线、多卡加速与上线检查清单。
部署前先看:GRID 的三步流水线
GRID 的部署遵循固定的数据流,理解它才能规划好算力与存储:
| 阶段 | 任务 | 入口命令 | 实验配置 |
|---|---|---|---|
| ① Embedding 生成 | 用 LLM 把商品文本转成语义向量 | python -m src.inference | sem_embeds_inference_flat |
| ② 语义ID训练 | 残差量化(RQ-KMeans/RQ-VAE/RVQ)学码本 | python -m src.train | rkmeans_train_flat |
| ③ 语义ID生成 | 给每个 item 分配去重后的语义 ID | python -m src.inference | rkmeans_inference_flat |
| ④ 生成式推荐 | 训练 TIGER 模型并生成推荐 | src.train+src.inference | tiger_train_flat/tiger_inference_flat |
💡 所有实验配置都集中在 configs/experiment/ 目录下,用 Hydra 管理,命令行只需覆盖少量参数即可复用同一套配置。
一键安装步骤:环境准备
前置要求:Python 3.10+、CUDA 兼容 GPU(官方推荐)。
git clone https://gitcode.com/gh_mirrors/grid48/GRID.git cd GRID pip install -r requirements.txt依赖清单在 requirements.txt 中完整锁定版本(PyTorch 2.6 + CUDA 12.4、Lightning 2.5、Transformers 等),生产环境建议直接全量安装锁定版本,避免依赖漂移。
数据目录标准格式
生产数据按如下结构组织(data/下四个子目录缺一不可):
data/ ├── train/ # 训练用用户行为序列 ├── validation/ # 验证集 ├── test/ # 测试集 └── items/ # 全量商品的文本信息数据读取由TFRecordIterator迭代器完成,批大小、worker 数等参数可在各实验 yaml 的data_loading段调整(例如tiger_inference_flat默认batch_size_per_device: 32、num_workers: 8)。
离线推理配置方法:LLM 生成语义 Embedding
这是整条流水线中最耗 GPU 时的一步,建议单独部署到多卡节点:
python -m src.inference experiment=sem_embeds_inference_flat \ data_dir=data/amazon_data/beauty- 默认使用
google/flan-t5-xl作为 embedding 模型(2048 维),可在 configs/experiment/sem_embeds_inference_flat.yaml 中更换为任意 HuggingFace 模型 - 推理入口逻辑在 src/inference.py 中,它调用 Lightning
Trainer.predict完成批推理 - 输出为合并后的
merged_predictions_tensor.pt,保存在 Hydra 动态生成的输出目录(logs/下)
语义ID生成核心步骤:训练码本并分配 ID
第一步:训练残差量化码本(训练ResidualQuantization模型):
python -m src.train experiment=rkmeans_train_flat \ data_dir=data/amazon_data/beauty \ embedding_path=<第1步输出>/merged_predictions_tensor.pt \ embedding_dim=2048 \ num_hierarchies=3 \ codebook_width=256第二步:推理生成语义 ID:
python -m src.inference experiment=rkmeans_inference_flat \ data_dir=data/amazon_data/beauty \ embedding_path=<第1步输出>/merged_predictions_tensor.pt \ embedding_dim=2048 \ num_hierarchies=3 \ codebook_width=256 \ ckpt_path=<上一步训练得到的checkpoint>⚠️生产关键点:推理回调LocalPickleWriter(定义在 src/utils/inference_utils.py)会自动完成三件事——
- 每个 rank 将预测结果写入独立的 pickle 文件
- 主进程自动合并为
merged_predictions.pkl/merged_predictions_tensor.pt - 执行
deduplicate_rows_in_tensor去重:为重复 ID 追加一位数字(所以 3 层码本实际变成 4 位语义 ID)
默认回调参数见 configs/callbacks/local_pickle_writer.yaml,flush_frequency控制缓冲落盘行数,可按数据量调大以减少 IO 次数。
生成式推荐模型:TIGER 的训练与上线推理
训练(注意num_hierarchies要比量化层数 +1,因为去重追加了一位):
python -m src.train experiment=tiger_train_flat \ data_dir=data/amazon_data/beauty \ semantic_id_path=<第3步输出>/pickle/merged_predictions_tensor.pt \ num_hierarchies=4生成推荐(上线推理):
python -m src.inference experiment=tiger_inference_flat \ data_dir=data/amazon_data/beauty \ semantic_id_path=<第3步输出>/pickle/merged_predictions_tensor.pt \ ckpt_path=<TIGER训练checkpoint> \ num_hierarchies=4模型实现是SemanticIDEncoderDecoder(src/models/modules/semantic_id/tiger_generation_model.py),采用带前缀合法性剪枝的 beam search:只保留能映射到真实商品的生成路径,从根源上避免"幻觉商品"。top_k_for_generation(默认 10)即每个用户的推荐条数,可直接在 configs/experiment/tiger_inference_flat.yaml 中覆盖。
生产环境加速:多卡 DDP、断点续跑与自动重试
GRID 基于 PyTorch Lightning,扩展多卡只需三个配置:
- 多卡/多机:使用 configs/trainer/ddp.yaml,
strategy: ddp、devices: -1表示自动占用全部可见 GPU;多机时加num_nodes与 Lightning 标准环境变量即可 - 断点续训:训练入口 src/train.py 支持
ckpt_path参数,重启时传入最新 checkpoint 即可恢复 - 失败自动重试:训练由
LocalJobLauncher(src/utils/restart_job.py)包裹,默认失败重试 3 次,且会自动加载最近一次 checkpoint 继续跑——这对生产长任务非常友好
日志与产物全部落在 Hydra 输出目录(logs/<日期>/<时间>/)中,包括 checkpoint、CSV 指标和 pickle 预测结果,方便挂载对象存储做归档。
上线检查清单
| 检查项 | 说明 | 常见坑 |
|---|---|---|
| Python / CUDA 版本 | 3.10+,CUDA 12.4 | 驱动不匹配导致 torch 加载失败 |
| 数据四目录齐全 | train / validation / test / items | items/缺失会让 embedding 阶段跑空 |
| embedding_dim 与 LLM 一致 | flan-t5-xl 为 2048 | 换 LLM 后忘记同步该参数 |
| num_hierarchies 的 +1 规则 | 量化 3 层 → TIGER 阶段用 4 | 少加一位会导致 ID 映射错位 |
| checkpoint 路径 | inference必须传ckpt_path | 漏传会告警并使用未训练权重 |
| 输出合并文件 | 确认存在merged_predictions_tensor.pt | 多卡时只合并主 rank 文件 |
按这份清单核对后,你的 GRID 生成式推荐系统就完成了从离线推理到语义ID生成的完整部署。更多示例与引用信息可参阅 README.md。
【免费下载链接】GRID
GRID: Generative Recommendation with Semantic IDs
相关推荐
如何把 tiny_vit_21m_512.dist_in22k_ft_in1k 部署到生产环境:CPU推理、量化与加速完整指南
如何把 tiny_vit_21m_512.dist_in22k_ft_in1k 部署到生产环境:CPU推理、量化与加速完整指南 tiny_vit_21m_512
部署指南:如何把vit_base_patch16_224.sam_in1k部署到生产环境——推理加速与量化入门
部署指南:如何把vit_base_patch16_224.sam_in1k部署到生产环境——推理加速与量化入门 vit_base_patch16_224.sam
如何部署CActor到生产环境:从单机到集群部署的完整清单
如何部署CActor到生产环境:从单机到集群部署的完整清单 CActor 是基于仓颉(Cangjie)语言开发的高性能 Actor 系统,提供企业级分布式能力。
后端并发编程分布式
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考