tantan的博客

Notes, ideas, and observations

传统的 GPU 哈希表会保留每一个插入的键 – 这种字典式的设计方式会浪费宝贵的 HBM 资源,因为当哈希表的大小超过单个 GPU 的容量时,这种处理方式就会变得不可行。我们打破了这一假设,采用了基于缓存语义的存储方式,其中策略驱动的淘汰操作成为了核心功能。我们提出了 HierarchicalKV(HKV)这一通用 GPU 哈希表库,它的正常运行模式基于缓存语义:每次完整的更新或插入操作都会通过淘汰或拒绝操作来直接修改数据,而不是通过重新哈希处理或因容量限制而导致失败。 HKV 结合了四种核心机制:与缓存行对齐的桶结构、基于评分的在线更新操作、基于评分的动态双桶选择机制,以及三重组并发处理机制。此外,HKV 还采用了分层键值分离的设计,从而能够在超出 HBM 容量的情况下实现扩展。在 NVIDIA H100 NVL GPU 上,HKV 每秒能够处理高达 39 亿个键值对。在负载因子为 0.50–1.00 的情况下,性能表现有 5% 的波动。与 WarpCore 相比,HKV 在吞吐量上高出 1.4 倍;在基于间接处理的 GPU 基准测试中,性能提升可达 2.6–9.4 倍。自 2022 年 10 月开源以来,HKV 已被集成到多个开源推荐系统中。

终身用户行为建模中,SIM、UBR4CTR 等两级级联框架达到 SOTA: 用简单快速的 GSU 从海量行为中检索与目标最相关的少量行为,再用注意力 ESU 在这些 finalist 上做 Target Attention (TA)。但它们有个根本局限: GSU 与 ESU 的目标-行为相关性度量不一致,导致 GSU 经常漏掉 ESU 高度认可的行为,限制了整体 CTR 精度.

丰富的用户行为数据对 CTR 预估极有价值,尤其在推荐和广告等工业场景。阿里此前的 SOTA 是基于记忆网络的 MIMN,它通过 “学习算法 + 服务系统” 协同设计,第一次把可建模的行为序列长度扩展到 1000。但当序列再长 10 倍以上时,MIMN 无法在给定候选 item 时精准刻画用户兴趣 —— 把所有历史行为编码进固定大小的 memory matrix 会引入大量噪声.

本文介绍了 JAX:一个面向领域的 tracing JIT 编译器,能够从纯 Python 和 NumPy 编写的机器学习程序生成高性能的加速器代码。JAX 借助 XLA 编译基础设施为"最适合加速"的子程序生成优化代码,这些优化后的子程序可以被任意 Python 代码调用和编排。由于 JAX 与 Autograd 完全兼容,它支持对 Python 函数进行任意阶的前向和反向自动微分。由于 JAX 支持结构化控制流,它能够为复杂机器学习算法生成高性能代码。将 JAX 与 Autograd 和 NumPy 结合,可以得到一个既易于编程、又高度高性能的 ML 系统,能够同时面向 CPU、GPU 和 TPU,并可扩展到多核 Cloud TPU。

内存键值存储 (KVS) 被广泛用于缓存热点数据, 以解决基于磁盘的存储系统或分布式系统中的热点问题. 然而, 内存 KVS 内部的热点问题却一直被忽视. 随着近年来热点问题愈发严重, 现有 KVS 由于缺乏热点感知能力, 在高度偏斜的工作负载上往往表现不佳, 且可靠性不足.

推荐系统对用户体验和公司营收至关重要, 而生成式推荐模型近期被证明能够产生高质量的推荐结果. 然而, 现有系统在工业场景中训练生成式推荐模型时, 普遍面临功能支持不足实现效率低下的限制. 为此, 我们推出了 MTGRBoost – 一个高效且可扩展的生成式推荐模型训练系统.

0%