快手面经


机器学习系统平台开发 一面

2024.4.18面试 约1h30min 一面挂

1、算法题

146. LRU缓存
中等难度,重点在于对双向链表的快速访问,使用unordered_map可以实现时间复杂度和空间复杂度都为$O(1)$

2、C++八股

  • STL中容器的底层原理及其时间复杂度
  • 模板类的实现
  • 如果模板类的具体实现类是很占内存的结构体,如何修改参数传递来优化时间和空间?
  • 右值引用与转移语义
  • docker与虚拟机的区别

3、简历内容拷问

(1)基于FFT进行卷积加速的并行算法实现 项目

  • 这个项目的意义是什么?
  • 使用CUDA加速用到哪些技巧?
  • 哪些地方用到了共享内存?
  • 在这个项目中,共享内存为什么能加速FFT计算?
  • 算法正确性是怎么进行测试的?
  • 测试的最大数据量有多大,如果数据量超过CUDA显存了还有什么优化手段?
  • 听起来你的工作量就是将C++实现的FFT算法转换为了CUDA代码,然后使用共享内存进行加速,为什么会花了将近半年的时间?

(2)基于文本提示的图像编辑系统 项目

  • 讲一下这个项目的内容
  • 为什么要重新训练StyleGAN?
  • 推理优化主要用了什么,为什么会快?
  • 在部署过程中有遇到什么困难吗?

(3)系统文件备份软件 项目

  • 怎么读目录树的?
  • 怎么写入文件的?用了什么API?
  • 网盘功能是怎么实现的?
  • 如果文件大小超过电脑内存,该怎么读文件,有什么优化策略?

【暑期实习】大模型推理/训练引擎研发工程师 一面

2025.03.26面试 约 40 min 一面过

1、简历拷打

(1)字节跳动实习经历

  • 介绍一下模型结构、以及参数量有多大?
  • 选用了什么推理方案?
  • 相当于单机单卡去推吗?
    • 没有,使用了多大,使用 ulysses 进行推理
  • 详细讲一下激活权重量化和 dit cache?
  • 怎么评价量化效果?
  • 这样的 dit cache 在显存节省上有优势吗?
  • 介绍一下 ulysses 通信量?
    • 核心是 all to all 通信量(当时没能答上来)
  • all to all 有做 overlap 吗?如果要做,怎么设计?
  • 介绍一下 ulysses 怎么使用 all to all?你能想到什么 overlap 方法?
  • 介绍一下双向注意力修改这个项目?
  • dit 推理和 LLM 推理的最大区别是什么?
    • dit 全是 compute bound,而 LLM 分为 prefill 和 decode 两个阶段,其中 prefill 是 compute bound,decode 是 I/O bound
  • mmdit 有对 text 分支进行特殊优化吗?因为在 video generation model 中,text 分支的 seq_len 是比较小的,所以可以对 text 分支进行特殊优化?
  • 为什么只做了 element-wise 融合?对 GEMM 没做融合吗?
  • 有了解过 dit 训练过程吗?

(2)美团实习经历

  • 介绍一下 flash attention 优化这个项目?
  • 了解 flash attention 原理吗?为什么比 native attention 又省显存又快?
  • 使用 Tiling 方式计算 attention,怎么保证 softmax 的正确性?
    • 核心是介绍 online softmax
  • 你会手写算子吗?
  • 你能介绍下 TP 怎么实现吗?
  • TP 里有一个 sequence parallel,你有了解吗?
    • 没有了解过

2、代码题

用 triton 写一个简单矩阵乘,MxN 和 NxK 矩阵乘


文章作者: leven
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 leven !
评论
  目录