如何把GRID部署到生产环境?从离线推理到语义ID生成的完整部署指南

发布时间:2026/10/29 19:46:39
如何把GRID部署到生产环境?从离线推理到语义ID生成的完整部署指南

【免费下载链接】GRID

GRID: Generative Recommendation with Semantic IDs

项目地址:https://gitcode.com/gh_mirrors/grid48/GRID
点击查看免费下载

GRID(Generative Recommendation with Semantic IDs)是 Snap Research 开源的生成式推荐框架,核心能力是语义ID生成与离线推理:先用 LLM 把商品文本转成 embedding,再通过残差量化学习层次化的语义 ID,最后用 TIGER 式生成模型产出推荐序列。本文给出一套可直接上生产的部署指南,覆盖环境准备、四步流水线、多卡加速与上线检查清单。

部署前先看:GRID 的三步流水线

GRID 的部署遵循固定的数据流,理解它才能规划好算力与存储:

阶段任务入口命令实验配置
① Embedding 生成用 LLM 把商品文本转成语义向量python -m src.inferencesem_embeds_inference_flat
② 语义ID训练残差量化(RQ-KMeans/RQ-VAE/RVQ)学码本python -m src.trainrkmeans_train_flat
③ 语义ID生成给每个 item 分配去重后的语义 IDpython -m src.inferencerkmeans_inference_flat
④ 生成式推荐训练 TIGER 模型并生成推荐src.train+src.inferencetiger_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 中,它调用 LightningTrainer.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)会自动完成三件事——

  1. 每个 rank 将预测结果写入独立的 pickle 文件
  2. 主进程自动合并为merged_predictions.pkl/merged_predictions_tensor.pt
  3. 执行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 / itemsitems/缺失会让 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

项目地址:https://gitcode.com/gh_mirrors/grid48/GRID
点击查看免费下载
上一篇:Yakit 图标库迁移实战:基于 @yakit-libs/yakit-ui-icons 的本地 SVG 留存审查与改造清单
下一篇:Karpenter 文档贡献指南:preview 目录、版本化发布与 backport 全流程解析

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考