Recent Papers of Recommendation Systems

2023 EVStore: Storage and Caching Capabilities for Scaling Embedding Tables in Deep Recommendation Systems ASPLOS'23 GRACE: A Scalable Graph-Based Approach To Accelerating Recommendation Model Inference ASPLOS'23 AdaEmbed: Adaptive Embedding for Large-Scale Recommendation Models OSDI'23 FlexShard: Flexible Sharding for Industry-Scale Sequence Recommendation Models arxiv 2022 RecD: Deduplication for End-to-End Deep Learning Recommendation Model Training Infrastructure arxiv Ekko: A Large-Scale Deep Learning Recommender System with Low-Latency Model Update OSDI'22 PICASSO: Unleashing the Potential of GPU-centric Training for Wide-and-deep Recommender Systems arxiv HET: Scaling out Huge Embedding Model Training via Cache-enabled Distributed Framework VLDB'22 HET-GMP: a graph-based system approach to scaling large embedding model training SIGMOD'22 Fleche: an efficient GPU embedding cache for personalized recommendations EuroSys'22 RecShard: statistical feature-based memory optimization for industry-scale neural recommendation ASPLOS'22 BagPipe: Accelerating Deep Recommendation Model Training arxiv 2021 Accelerating recommendation system training by leveraging popular choices VLDB'21 SPACE: Locality-Aware Processing in Heterogeneous Memory for Personalized Recommendations ISCA'21 Software-Hardware Co-design for Fast and Scalable Training of Deep Learning Recommendation Models arxiv ISCA'22 RecPipe: Co-designing Models and Hardware to Jointly Optimize Recommendation Quality and Performance MICRO'21 2020 Kraken: Memory-Efficient Continual Learning for Large-Scale Real-Time Recommendations SC'20 Distributed Hierarchical GPU Parameter Server for Massive Scale Deep Learning Ads Systems MLSys'20 DeepRecSys: A System for Optimizing End-To-End At-Scale Neural Recommendation Inference ISCA'20

April 8, 2022 · 1 min · laekov

Pandoc 的 short author 字段缺失 fix

laekov 搞了一个在 overleaf 里写 pandoc 的东西叫 panleaf, 并用它做一些愉快的 beamer slides. 但是 laekov 在做一个作者有七个人的 slides 的时候发现如果把七个人塞在正文的每页的底下, 就会巨长无比, overflow. latex 提供了 short author 功能, 在 beamer 里面正文的页脚只显示 short, 而 titlepage 显示全文. 但左右看了一圈发现 pandoc 的 author 字段并没有这样的支持. 而且即使不填 author 字段, 生成的 tex 文件里面还是会蹦出一个 \author{}, 且在自定义 latex template 的后面, 所以无法在 template 里面插 author 来解决. laekov 于是找来了 pandoc 的 beamer writer (default.beamer, 也可能是 default.latex), 在里面找 author, 果然找到这么一段. \author{$for(author)$ $author$ $sep$ \and $endfor$} 这么暴力怎么行, 于是加上一个 if 变成酱紫....

March 15, 2022 · 1 min · laekov

北京骑行路线及爬坡大赏

本文及图片版权归 laekov 所有, 谢绝转载 前言, 符号及约定 本文总结了 aoao 骑过的北京周边的骑行路线, 以爬山为主. 对于坡度的描述可参考如下列表. 超缓: 坡度不超过 3%. 缓坡: 3-5% 普通: 不太缓也不太陡, 没有给 aoao 留下深刻印象. 陡: 7% 及以上. 对于坡度, 难度和风景好坏的评价较为主观, 且受到当时季节, 天气, 状态等影响. aoao 本人偏好不缓的爬坡, 不喜缓上缓下和平路. 喜欢壮丽的高山大川景象, 对人文风光 (比如寺庙) 没有兴趣. 故请谨慎参考本文的内容. 欢迎在评论区讨论批评指正. 本文配图使用的脚本开源在 GitHub, 主要使用 Matplotlib. 有能力的看官可以自行使用脚本绘制自己的轨迹. 西边和北边群山, 以及市区 国道, 省道的坡度多半不会超过 10%, 多数在 5% 左右. 路面通常为柏油路, 可以放心前往. 但乡道, 防火道等的坡度和路况就很难有保障了. (0) 清华大学新民路大坡 搞笑的 西边系列 以 108, 109 两条国道为主线展开. 国道本身较平, 向西缓上. 其间有众多支线, 包含了很多大小爬坡. (1) 灵山 北京公路爬坡最高峰 (指绝对海拔), 长度约 20km, 最高海拔快到 2k....

March 10, 2022 · 5 min · laekov

Island 剧情解析

元旦假期花一个下午补了 Island 这部番, 时间线烧脑程度颇有云图的感觉, 再进一步就要信条了. 虽然有各种弹幕解说, 但还是看得很茫然, 而且网上的解析也比较少, 没有把 laekov 讲明白. 于是 laekov 决定自己整理一下时间线. laekov 倾向于认为人类只造出了睡眠仓, 而没有造出能逆转时间的机器. 所以人类文明以 20000 年为周期不断从石器时代到高度文明再退回, 这和 Island 上的科技退化也很吻合. 动画的故事发生在其中一个 夏1 - 冬1 - 夏2 周期中. 为了简便称三家的女主为白毛, 黄毛和炸毛. 实际上进行了时间旅行的只有男主和老小两白毛. 在夏篇见光死的是骨科切纳和他爹. (这俩人家产全被没有血缘的人吞了好惨) 在冬篇见光死的是黄毛, 炸毛未知. 一些疑问 男主在 夏1 的梦为啥和 冬1 不一样? 男主在夏 1 的时候做的梦来源于 冬0, 其中 大版炸毛被火烧掉 和 跟黄毛kiss(?) 的事件在 冬1 中也发生了, 只是剧情有所不同, 因为 冬0 中男主的记忆可能和 冬1 并不相同 (蝴蝶效应). 很可能在 冬0 中白毛的冷冻仓有 bug, 从而导致男主记忆缺失. 骨科切那为啥变成了白骨? 切那和白发魔女的交易是什么? 骨科切那是把小白毛塞进机器之后独自在岛上生存的过程中饿/病死的. 和白发魔女交易 这个传说来源于老白毛造了时光机把男主送回来....

January 4, 2022 · 1 min · laekov

Assetto Corsa G值球只有半个 bug 修复

laekov 最近在玩 assetto corsa 并试图学习循迹刹车, 因此需要一个加速度轨迹显示插件. 在 GitHub 上发现了一个上古仓库 竟然还能用, 但是卖家秀是 而 laekov 这里是 为啥参考线只剩小半个了??? 由于 assetto corsa 的插件都是 python, 于是 laekov 愉快地看起了代码, 并发现了如下一段. def drawCircumference(self, radius, center): ac.glBegin(1) nlines = max(4, int(100.*radius)) for i in range(nlines+1): x, y = self.gPlotter.plotG(center['x'] + (sin(2*pi*i/nlines)*radius), center['z'] + (cos(2*pi*i/nlines)*radius)) ac.glVertex2f(x, y) ac.glEnd() 大胆猜想是 python 或者 ac.gl 性能不足以支撑在一个渲染周期内画完整个圆. 于是想找一个 native 的 circle 的 api. 然而翻阅了一下上古的 python plugin document (竟然还是 google docs) 发现 ac 的 gl 只支持画点和多边形 (挠头)....

December 20, 2021 · 1 min · laekov

FasterMoE: 对大 MoE 模型训练的性能建模及优化

版权声明: 如需转载请先与 laekov 联系, 侵权必究. 序 Jiaao He 在 24 岁生日那一天收到邮件, 他在 ppopp 投稿的这篇文章被接收了. 这是他以一作身份投的第一篇 A 类会文章. laekov 当时脑子一热, 开了一个坑, 决定把这篇文章的主要内容用中文写出来, somehow 地促进中文学术. (虽然多半并没有什么帮助) 在过去的小半年里他又经历了 artifact evaluation, camera ready, 制作 presentation slides 和录制视频 (很遗憾因为疫情没法去韩国开会了) 等等一系列事情, 对这个项目也有了更多的理解. 在 4 月的第一天终于把写文章时候的 prototype 变成了看起来还不错的代码, 并准备合并进 FastMoE. 正好写完这篇文章, 也当作是在 FastMoE 里使用 FasterMoE 的中文版文档了. 这篇文章的 pdf 正文在 ACM DL 上可以找到. (有 open access, 在任何地方都可以下载, 并用于非商业目的) 开会的时候用的 slides 和视频链接 在这里. 背景和简介 我假设看这篇文章的人已经知道什么是 MoE 模型了, 大规模的 MoE 模型现在有多重要 (也可能并不)....

November 16, 2021 · 3 min · laekov

slurmdbd 配置失败的坑

花了一晚上修的一个 bug. 记录一下. 先讲结论再讲故事. slurmdbd 在更新 account 配置的时候, 有可能出现更新成功了, dump 出来是对的, 但跑程序失败 (requested resources not available) 的情况. 其中一个可能原因是 mysql 并没有成功写入, 于是认证失败. 解决方案是修改 slurmdbd 的配置文件, 使得其以 root 用户身份执行. 故事是实验室有同学要赶 PLDI, 需要独占某一些节点, 并防止懵懂的小朋友和他们抢占节点后不释放. laekov 给出的解决方案是在 slurm 中单独划分一个队列, 并仅对指定 account 开放. 这个操作 laekov 在另一个集群上已经熟练使用了. 但是 laekov 在用 sacctmgr 配置好 account 和 user 之后, 尝试 srun 任务, 发现提示 resources not available. 之前遇到过这种情况, 通过重启 slurmdbd 解决了问题. 但是这次重启任何 slurm 组件都没有解决问题. laekov 查看了 /var/log/slurm-llnl/slurmctld, 发现提示 part_policy_valid_acct: job's account not known, so it can't use this partition....

November 10, 2021 · 1 min · laekov

吐槽一下 windows 11

(背景是 laekov 因为迟迟没有等到黑色的 arm macbook 而转投了 x1c, 然后闲来无事升了个 win11 然后发现想吐槽这个东西 怎么和 chromeos 如此 相似! app icon 放中间! chromeos! 点开 电池 wifi 那个条, 跳出来的系统配置 panel! chromeos! 然后四指左右划动切换 workspace 的动画直接是断的. 任务栏的一部分根本没有被渲染出来, 于是会在动画放完之后突然跳出来?????? windows 这个 ui 真是… 明明是个 configurable 的东西, 非要搞得万众瞩目. 有毒吧. btw 一个小细节, 升级完之后默认给我 enable 了 微软拼音. 我又不会打拼音啊喂. 而且在输入法 enabled 列表里面竟然没有这个选项? 解决方案是先加进去再删掉 ovo 还是 kde 好. btw, 吐槽一下 x1c 9gen 的键盘, g 键的键帽被我按掉下来了. 虽然可以按回去, 但只要敲这个键的左下部分就会又翘起来, 不爽ing.感觉是为了给小红点让位置而在键的机械强度上做了牺牲?回头有空再去联想保修一下 ovo

October 3, 2021 · 1 min · laekov

laekov 的桌面环境配置

laekov 终于闲下来了并开了这么一篇一直都想写的文章. 之前摸鱼的时候在某乎, 某小破站上都有各种晒桌面的就蠢蠢欲动. 最近终于闲下来了可以用新买的 niz 打打不是正事的字了. 实验室(办公室) laekov 很追求简洁的所以桌上除了俩显示器俩键盘以外没有什么大块的东西. 从左到右说. (laekov 在实验室有四台电脑.) 最左边是夏天赖以生存的小风扇 (虽然从隔壁机房吹空调速冻效果其实更好). 左边是 27 寸显示器, 连了一台从实验室各处捡垃圾凑出来的 windows 台式机在桌子底下. 机箱上面还堆了 gyc 赞助的 24 口千兆交换机给所有设备供网. 上面还有俩键盘盒子, 一个装了之前北大校赛赚来的黑轴键盘暂时没用了. 还有一个是空的. 台式机的配置是奇怪的 i5-6500 + gtx 1080 ti.插了高二的时候 laekov 爹送 laekov 的生日礼物 ducky 混光青轴键盘. 虽然键盘挺老了甚至有些轴都开始咯吱响了但还是岗岗的好用. 因为这台电脑的主要用途是: 挂微信 使用 M$ office 套件处理不得不用它们处理的东西 摸鱼(打游戏) 显示器后面有一个 hp 的 chromebook g1, 八百块从闲鱼收的, 介绍见这篇文章, 主要用途是组会的时候放 slides 和移动干活. 偶尔也用作掌托. 13.5mm 的厚度和 3k x 2k 的屏幕还是很香的. 插线板后面有一个树莓派, 是某年的生日礼物. 上面放了一些神奇的东西, 可以用来调一些神奇的硬件, 比如折腾一下网络什么的, 不过最近用得不多....

August 16, 2021 · 2 min · laekov

FastMoE: 一个高效 MoE 模型训练系统 - 初版之路

laekov 在 3月1号下午 3点1分 开源了 FastMoE 系统的代码。合作者是 KEG 实验室 的 xptree 和 sengxian。 简单讲,MoE 模型就是把神经网络里的一层复制若干份,称它们为专家(experts)。在计算时,引入一个额外的门(gate)网络来对于每个输入决定它被哪个专家所计算。 举个例子,一个 nlp 模型里的动词和名词可能会被不同的 expert 处理。这样可能会得到更精准的模型。模型部分 laekov 不太懂,不做更多讨论。 FastMoE 这个名字是 laekov 起的,包含了 laekov 关注的两层问题: 训练这样的模型怎么训得快(fast training)。 如何使得这个系统像吃快餐一样(fastfood-like)开箱即用。 训练性能 通常,expert 网络是一个 MLP,即多层全连接,即矩阵乘。一个值得注意的问题是,gate 会使得一个 batch 被打散。若简单地用 pytorch 来实现,则会导致 GeMM 运算降级为 GeMV 运算,这对 GPU 这样的现代并行计算设备来说是十分不友好的。测试发现朴素的实现在 V100 上仅能达到 500GFLOPs, 即峰值性能的 3% 左右。 注意到 expert 的数量不会太多,故 batch size / expert,即平均每个 expert 处理的 batch 中的元素依然是一个较大的值。因此考虑对 batch 中的 samples 按照 expert 进行重排,每个 expert 依然以 batch 形式处理输入。这样会更充分地利用硬件资源。...

March 1, 2021 · 2 min · laekov