TorchRec大量使用Jagged Tensor

简介: Jagged Tensor(锯齿张量)是专为变长序列设计的紧凑存储格式,用values+lengths/offsets替代padding,显著节省内存与计算。广泛应用于推荐系统中用户行为、多值标签等不等长特征处理,如HSTU模型中的拼接、拆分与矩阵乘法操作。

什么是 Jagged Tensor

Jagged Tensor(锯齿张量)是一种变长嵌套张量,用于表示每个样本长度不同的特征。与普通的 padded 2D tensor 不同,它用 values(拼接的值)+ offsets/lengths(每个样本的长度)来紧凑存储,避免大量 padding 浪费。


例子 1:用户历史点击序列(长度不一致)

假设一个 batch 有 3 个用户,他们的历史点击 item_id 分别为:

plaintext

用户A: 点击了 [101, 202, 303]         → 长度 3
用户B: 点击了 [404]                    → 长度 1  
用户C: 点击了 [505, 606, 707, 808]    → 长度 4

Padded 方式(浪费内存):

python

# 需要 pad 到最长 4,大量 0 浪费
tensor([[101, 202, 303,   0],
        [404,   0,   0,   0],
        [505, 606, 707, 808]])   # shape: (3, 4)

Jagged Tensor 方式(紧凑):

python

values  = [101, 202, 303, 404, 505, 606, 707, 808]   # 所有值拼接,长度 8
lengths = [3, 1, 4]                                     # 每个用户的序列长度
offsets = [0, 3, 4, 8]                                  # 累加偏移量


例子 2:多值标签特征(tag)

用户打的标签数量不同:

plaintext

用户A: tags = ["科技", "体育"]           → 长度 2
用户B: tags = ["美食", "旅行", "摄影"]   → 长度 3
用户C: tags = ["音乐"]                   → 长度 1

python

values  = [科技, 体育, 美食, 旅行, 摄影, 音乐]   # 拼接
lengths = [2, 3, 1]


例子 3:jagged_tensors.py 中三个 op 的实际场景

这三个 op 来源于 generative-recommenders(HSTU 模型),用于处理用户行为序列 + 候选 item 拼接的场景:

concat_2D_jagged — 拼接用户历史和候选 item

plaintext

用户A历史: [e1, e2, e3](3个embedding)    候选item: [c1, c2](2个embedding)
用户B历史: [e4](1个embedding)             候选item: [c3, c4, c5](3个embedding)

拼接后:

plaintext

用户A: [e1, e2, e3, c1, c2]       → 长度 3+2=5
用户B: [e4, c3, c4, c5]           → 长度 1+3=4

用 padded tensor 需要 shape (2, 5, dim),用户B 有 1 行 padding。

用 jagged tensor 只存 values: (9, dim) + offsets,零浪费。

split_2D_jagged — 从拼接结果中拆回用户/候选

HSTU 的 Transformer 对拼接后的序列做完 self-attention 后,需要把用户部分和候选部分拆回来:

plaintext

拼接的attention输出: [a1, a2, a3, a4, a5, a6, a7, a8, a9]
offsets_left  = [0, 3, 4]      ← 用户历史的偏移
offsets_right = [0, 2, 5]      ← 候选item的偏移
→ left:  用户表征
→ right: 候选打分

jagged_dense_bmm_broadcast_add — 变长序列的矩阵乘法

对每个用户的变长序列做投影:out = jagged × dense + bias

plaintext

jagged: (sum_B(M_i), K)  ← 所有用户序列拼接,总共 sum 个 token
dense:  (B, K, N)         ← 每个用户一个投影矩阵
bias:   (B, N)            ← 每个用户一个偏置
out:    (sum_B(M_i), N)   ← 变长输出

传统做法需要 pad → bmm → unpad,jagged 版本直接在紧凑格式上计算,省内存且更快。


为什么推荐系统特别需要 Jagged Tensor?

推荐系统中到处都是变长特征:

  • 用户点击历史(有人点了 5 个,有人点了 500 个)
  • 多值 ID 特征(用户标签、商品类目)
  • 序列特征中的多值子特征(每个行为关联多个属性)

如果全部 pad 到最大长度,内存和计算浪费巨大。Jagged Tensor 是推荐系统处理这类数据的标准做法,torchrec 的 KeyedJaggedTensor 也是基于同样的理念

相关实践学习
使用PAI+LLaMA Factory微调Qwen2-VL模型,搭建文旅领域知识问答机器人
使用PAI和LLaMA Factory框架,基于全参方法微调 Qwen2-VL模型,使其能够进行文旅领域知识问答,同时通过人工测试验证了微调的效果。
机器学习概览及常见算法
机器学习(Machine Learning, ML)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
相关文章
|
1月前
|
存储 搜索推荐 PyTorch
为什么使用 TorchRec 训练和推理更快
本文结合TorchEasyRec实践,从四大维度解析推荐系统加速:1)KeyedJaggedTensor统一变长特征,实现Embedding批量融合查找;2)自动分布式分片突破单卡显存瓶颈;3)TrainPipelineSparseDist流水线并行,重叠通信与计算;4)fbgemm-gpu融合优化器,减少显存访问。端到端提升训练效率与扩展性。
291 9
|
8天前
|
人工智能 IDE API
阿里云百炼Coding Plan产品简介:支持模型、收费标准及购买和使用常见问题解答
阿里云百炼Coding Plan是面向开发者和团队的AI编程订阅服务,采用固定月费模式,Pro套餐200元/月提供9万次调用额度,整合千问、Kimi、GLM、MiniMax等顶级模型,全面兼容Claude Code、OpenClaw、Cursor等主流编程工具。额度采用5小时滚动恢复、每周及每月定期重置机制,兼顾开发连续性与成本可控性。其折算成本远低于按量计费,并通过多层级额度设计和华北2地域绑定有效防范欠费风险。适合日常代码生成、智能体开发及IDE插件集成等场景,是开发者以可预期预算拥抱AI编程的高性价比选择。
阿里云百炼Coding Plan产品简介:支持模型、收费标准及购买和使用常见问题解答
|
1月前
|
数据可视化 应用服务中间件 API
告别古法编程!我用Trae+阿里百炼Coding Plan,5分钟搭建一个Nginx日志可视化看板
利用闲置的阿里百炼Coding Plan,快速开发出一款单文件PHP版Nginx日志分析器。支持日志解析、IP/UA/Referer等多维统计、原始日志查看、关键词搜索及昼夜双模式,功能实用、部署简便。(239字)
|
1月前
|
人工智能 数据可视化 机器人
OpenClaw一键部署攻略,手把手教你 “养龙虾”!
还在为部署OpenClaw踩坑发愁?“养龙虾”其实超简单!本文奉上阿里云一键云端部署攻略:全程可视化、零代码,仅两步——买预装服务器+填API密钥,5分钟即可拥有专属AI数字员工!支持微信/钉钉协同、文件处理、日程管理、代码辅助等,新手友好,成本低廉(新用户首月9.9元+7000万Token免费额度)。
552 25
|
1月前
|
SQL 机器学习/深度学习 自然语言处理
运营日报自动化:智能问数如何实现“开口即得”?
截至2026年4月初,智能问数技术在运营日报自动化场景中已形成多元实现路径。部分方案依赖预置宽表与指标层,通过自然语言匹配固定查询模板,适合结构稳定、问题明确的“开卷考试”式场景;另一些则基于动态Text2SQL或语义本体建模,试图应对更开放的跨域提问,但对数据治理和语义一致性要求较高。不同路线在前期建设成本、后期扩展性及准确率上各有权衡:前者上线快、维护简单,后者泛化能力强但需持续投入知识治理。实践中,企业往往根据自身数据成熟度与业务复杂度选择适配方案,并非单一技术可通解所有“开口即得”需求。
|
1月前
|
人工智能 弹性计算 自然语言处理
阿里云轻量应用服务器部署OpenClaw,以及OpenClaw Web页面集成图文教程
本文介绍了在购买阿里云轻量应用服务器部署OpenClaw应用镜像的步骤、费用说明及配置流程,以及OpenClaw Web页面集成教程,包括如何配置OpenClaw、创建AI助手、实现Web页面集成等。此外,还解答了如何重启OpenClaw网关、查看端口号、更改调用模型等常见问题。通过本文,用户可快速掌握OpenClaw从本地部署到Web集成的完整路径。
|
1月前
|
人工智能 API
阿里云百炼Coding Plan售罄,抢不到怎么办?替代方案:直接调用百炼平台API
阿里云百炼Coding Plan长期售罄,不建议苦等补货!推荐替代方案:直接调用百炼API + 购买“AI通用节省计划”享约5折优惠。登录控制台选qwen3.5-plus等高性价比模型,配置API Key即可接入Trae、Cursor等工具,成本可控、使用便捷。(239字)
|
1月前
|
分布式计算 MaxCompute iOS开发
TorchEasyRec 在 macOS 上的功能限制总结
本文总结tzrec在macOS上的功能限制:核心依赖(如torchrec、fbgemm-gpu、graphlearn等)无法安装;分布式训练、原生数据管线、Embedding模块、Triton/CUDA算子、TDM树模型等功能完全不可用;优化器与模型导出部分失效;单元测试大多因强依赖而失败。
167 15
|
1月前
|
机器学习/深度学习 搜索推荐 数据处理
PAI-Rec推荐开发平台:企业级智能推荐解决方案,驱动业务全域增长
PAI-Rec是阿里云一站式推荐系统平台,集成多路召回、多目标精排(如DBMTL)、GPU加速推理与灵活迭代能力,已助力电商、直播、音视频等多行业提升点击率、转化率与ROI,实现高效、低成本、可自主演进的智能推荐。
317 16