跳到主要内容

AI Infra 面经汇总(百度/美团/快手等 · 牛客网)

来源:牛客网 AI Infra 面经帖(6篇),由 webinfo2md 自动提取整理

涵盖公司:百度 Paddle HPC、美团北斗、快手、AI Infra 独角兽等

属性信息
来源网页数6
整理时间2026-03-17
主要公司百度(Paddle HPC)、美团、快手等
岗位方向AI Infra / HPC / 推理优化
问题总数53
来源网页列表

目录


行为问题

1. 请介绍一下你的商汤实习经历。

  • 简短回答:分享在商汤的实习经历,包括主要工作内容和收获。
  • 详细解答
    • 描述实习的具体项目和职责。
    • 强调在团队中的角色和贡献。
    • 讨论所学到的技能和经验。
  • 追问预测
    • 你在实习中遇到的最大挑战是什么?
    • 如何处理团队中的冲突?
  • 关键词实习经历 团队合作 技能提升

项目经验

1. 请介绍大模型量化流程。

  • 简短回答:大模型量化流程主要包括数据收集、模型训练、量化和验证等步骤。
  • 详细解答
    • 数据收集:收集训练和验证数据。
    • 模型训练:使用浮点数训练模型。
    • 量化
      • 选择量化方案(如w8a8)。
      • 应用量化技术。
    • 验证:评估量化后模型的性能。
  • 追问预测
    • 量化过程中可能遇到哪些问题?
    • 如何评估量化模型的性能?
  • 关键词大模型 量化流程 性能评估

算法/系统设计

1. 请问算子融合方式是什么?

  • 简短回答:算子融合是将多个算子合并为一个算子的技术,以提高计算效率。
  • 详细解答
    • 目的:减少内存访问和计算时间。
    • 方法
      • 手动融合:开发者手动实现。
      • 自动融合:编译器或框架自动处理。
  • 追问预测
    • 你能举例说明算子融合的应用吗?
    • 融合过程中可能遇到的挑战是什么?
  • 关键词算子融合 计算效率 内存访问

2. 请问在商汤做的QAT工作是什么?

  • 简短回答:QAT(量化感知训练)是在训练过程中模拟量化,以提高量化模型的性能。
  • 详细解答
    • 流程
      • 在训练过程中引入量化噪声。
      • 调整模型参数以适应量化。
    • 优势:提高量化后模型的准确性。
  • 追问预测
    • QAT与传统训练方法的区别是什么?
    • QAT的局限性有哪些?
  • 关键词QAT 量化感知训练 模型性能

3. 请问在线量化流程是什么?

  • 简短回答:在线量化是在模型推理时动态调整量化参数的过程。
  • 详细解答
    • 步骤
      • 收集推理时的激活值。
      • 动态调整量化参数。
      • 应用量化模型进行推理。
    • 优点:适应性强,能提高推理精度。
  • 追问预测
    • 在线量化与离线量化的区别是什么?
    • 如何评估在线量化的效果?
  • 关键词在线量化 动态调整 推理精度

4. 请问pr的ort算子实现流程是什么?

  • 简短回答:PR的ORT(优化运行时)算子实现流程包括算子定义、优化和执行等步骤。
  • 详细解答
    • 算子定义:明确算子的输入输出。
    • 优化:通过图优化技术提升算子性能。
    • 执行:在运行时调用优化后的算子。
  • 追问预测
    • 你能详细描述优化的具体方法吗?
    • ORT算子的性能评估标准是什么?
  • 关键词ORT 算子实现 性能优化

5. 请问c++八股知识有哪些?

  • 简短回答:C++八股知识包括基本语法、面向对象特性、STL等。
  • 详细解答
    • 基本语法:数据类型、控制结构、函数等。
    • 面向对象特性:封装、继承、多态。
    • STL:标准模板库的使用。
  • 追问预测
    • 你在项目中如何应用这些知识?
    • C++的内存管理机制是什么?
  • 关键词C++ 基本语法 面向对象

6. 请问数组和链表的区别是什么?

  • 简短回答:数组是固定大小的连续内存块,而链表是动态大小的节点结构。
  • 详细解答
    • 数组
      • 优点:快速访问。
      • 缺点:大小固定,插入删除效率低。
    • 链表
      • 优点:动态大小,插入删除效率高。
      • 缺点:访问速度慢。
  • 追问预测
    • 在什么场景下选择链表而不是数组?
    • 如何实现链表的基本操作?
  • 关键词数组 链表 内存结构

7. 请问c++面向对象的特性是什么?

  • 简短回答:C++的面向对象特性包括封装、继承和多态。
  • 详细解答
    • 封装:将数据和方法封装在类中。
    • 继承:子类可以继承父类的属性和方法。
    • 多态:允许不同类的对象以相同方式调用方法。
  • 追问预测
    • 你能举例说明多态的应用吗?
    • 如何实现类的继承?
  • 关键词封装 继承 多态

8. 请问卷积网络的量化流程是什么?

  • 简短回答:卷积网络的量化流程包括训练、量化和验证等步骤。
  • 详细解答
    • 训练:使用浮点数训练卷积网络。
    • 量化:将权重和激活值转换为低精度格式。
    • 验证:评估量化后模型的性能。
  • 追问预测
    • 量化过程中如何选择量化策略?
    • 量化对模型性能的影响如何评估?
  • 关键词卷积网络 量化流程 模型验证

9. 请问大模型量化流程的细节是什么?

  • 简短回答:大模型量化流程的细节包括选择量化方案、应用量化技术和性能验证。
  • 详细解答
    • 选择量化方案:如w4a16、w8a8等。
    • 应用量化技术:包括权重剪枝、激活量化等。
    • 性能验证:通过测试集评估量化模型的准确性。
  • 追问预测
    • 量化方案的选择依据是什么?
    • 如何处理量化带来的精度损失?
  • 关键词大模型 量化细节 性能验证

10. 请问fp8是什么?

  • 简短回答:FP8是一种8位浮点数格式,用于减少模型存储和计算的开销。
  • 详细解答
    • 结构:包括符号位、指数位和尾数位。
    • 优点:在保持模型性能的同时,显著降低内存占用。
  • 追问预测
    • FP8与FP32的比较如何?
    • 在什么情况下使用FP8?
  • 关键词FP8 浮点数格式 内存优化

11. 请问常用的加速手段有哪些?

  • 简短回答:常用的加速手段包括连续批处理、投机解码等。
  • 详细解答
    • 连续批处理:通过批量处理提高计算效率。
    • 投机解码:提前计算可能的结果以减少延迟。
  • 追问预测
    • 这些加速手段的缺陷是什么?
    • 如何选择合适的加速策略?
  • 关键词加速手段 连续批处理 投机解码

12. 请问这些加速方法各自的缺陷是什么?

  • 简短回答:加速方法的缺陷包括复杂性增加、资源浪费等。
  • 详细解答
    • 复杂性增加:实现和维护成本高。
    • 资源浪费:在某些情况下可能导致资源的低效使用。
  • 追问预测
    • 如何评估加速方法的有效性?
    • 有哪些优化策略可以减少缺陷?
  • 关键词加速方法 缺陷 资源管理

13. 假定现在有一个trace好的graph,请你设计一个图模式匹配引擎,能把图中所有的conv norm融合成convnorm算子。

  • 简短回答:设计图模式匹配引擎需考虑图的遍历、模式识别和算子替换。
  • 详细解答
    • 图遍历:使用深度优先或广度优先算法遍历图。
    • 模式识别:识别conv和norm的组合模式。
    • 算子替换:将识别的模式替换为convnorm算子。
  • 追问预测
    • 你如何处理图中的复杂模式?
    • 如何评估匹配引擎的性能?
  • 关键词图模式匹配 conv norm 算子融合

算法

1. 请做题layernorm(c++/cuda)。

  • 简短回答:LayerNorm是对每个样本的特征进行归一化的技术,通常在深度学习中使用。
  • 详细解答
    • 实现步骤
      • 计算每个样本的均值和方差。
      • 进行归一化处理。
      • 应用缩放和偏移参数。
    • CUDA实现:利用CUDA并行计算加速归一化过程。
  • 追问预测
    • LayerNorm与BatchNorm的区别是什么?
    • 如何优化LayerNorm的实现?
  • 关键词LayerNorm 归一化 CUDA

2. 当训练推理卡规模倍增的情况下,最容易产生瓶颈的位置可能是什么?

  • 简短回答:在训练推理卡规模倍增时,数据传输和计算资源可能成为瓶颈。
  • 详细解答
    • 数据传输:大规模数据传输可能导致延迟。
    • 计算资源:GPU计算能力可能无法满足需求。
    • 优化方案
      • 使用更高效的数据传输协议。
      • 优化计算任务的调度。
  • 追问预测
    • 你如何识别瓶颈?
    • 有哪些具体的优化措施?
  • 关键词瓶颈 数据传输 计算资源

3. 当进行GEMM计算时,一定可以保证它是一个计算瓶颈算子吗,如果要你去优化它,你的思路是什么?

  • 简短回答:GEMM计算不一定是瓶颈,优化思路包括算法改进和硬件加速。
  • 详细解答
    • 分析:检查数据依赖和内存访问模式。
    • 优化思路
      • 使用更高效的算法(如Strassen算法)。
      • 利用GPU并行计算。
  • 追问预测
    • 你能详细描述GEMM的优化方法吗?
    • 如何评估优化效果?
  • 关键词GEMM 计算瓶颈 优化

4. 手撕:手写包含GQA的attention模块实现。

  • 简短回答:GQA(图像问答)中的attention模块用于聚焦于相关信息。
  • 详细解答
    • 实现步骤
      • 计算注意力权重。
      • 加权求和得到输出。
    • 代码示例
      // 示例代码
      void attention(float* queries, float* keys, float* values, float* output) {
      // 计算注意力权重
      // 加权求和
      }
  • 追问预测
    • 你如何处理多头注意力?
    • 如何优化attention模块的性能?
  • 关键词GQA attention模块 实现

5. 介绍一下Transformer的架构,和传统RNN循环神经网络相比有何优势。

  • 简短回答:Transformer架构基于自注意力机制,具有并行处理和长距离依赖建模的优势。
  • 详细解答
    • 架构
      • 编码器-解码器结构。
      • 自注意力机制。
    • 优势
      • 并行处理:相比RNN,Transformer可以同时处理所有输入。
      • 长距离依赖:自注意力机制可以捕捉长距离依赖关系。
  • 追问预测
    • Transformer的缺点是什么?
    • 如何在实际应用中选择模型?
  • 关键词Transformer RNN 自注意力

6. Transformer中参数都分布在哪里,参数量最大的是哪部分?计算量最大的是哪部分,为什么?

  • 简短回答:Transformer的参数主要分布在自注意力层和前馈网络中,参数量最大的是自注意力层。
  • 详细解答
    • 参数分布
      • 自注意力层:包含多个权重矩阵。
      • 前馈网络:包含激活函数和权重矩阵。
    • 计算量:自注意力层的计算量最大,因为需要计算所有输入之间的关系。
  • 追问预测
    • 如何优化Transformer的计算效率?
    • 你能详细描述自注意力的计算过程吗?
  • 关键词Transformer 参数分布 计算量

7. 讲讲大模型的量化,讲量化算子。

  • 简短回答:大模型的量化通过减少参数精度来降低模型大小和加速推理。
  • 详细解答
    • 量化方法
      • 权重量化:将浮点数权重转换为低精度格式。
      • 激活量化:在推理时动态量化激活值。
    • 量化算子:实现量化的基本操作,如量化和反量化。
  • 追问预测
    • 量化对模型性能的影响如何评估?
    • 如何选择合适的量化策略?
  • 关键词大模型 量化 量化算子

8. 详细讲pd分离。

  • 简短回答:PD分离是将模型的前向和反向传播分开,以提高计算效率。
  • 详细解答
    • 原理:通过分离计算图,减少内存占用。
    • 实现
      • 前向传播时记录计算图。
      • 反向传播时使用记录的图进行梯度计算。
  • 追问预测
    • PD分离的优缺点是什么?
    • 如何在实际项目中应用PD分离?
  • 关键词PD分离 计算效率 内存优化

9. 详细讲paged atten。

  • 简短回答:Paged Attention是一种优化的注意力机制,用于处理大规模输入。
  • 详细解答
    • 原理:通过分块处理输入,减少计算复杂度。
    • 实现
      • 将输入分为多个页面。
      • 逐页计算注意力。
  • 追问预测
    • Paged Attention与传统注意力的区别是什么?
    • 如何评估Paged Attention的性能?
  • 关键词Paged Attention 优化 计算复杂度

10. LC25题:K个一组翻转链表。

  • 简短回答:K个一组翻转链表是将链表每K个节点翻转的经典算法题。
  • 详细解答
    • 实现步骤
      • 遍历链表,分组处理。
      • 对每组进行翻转。
      • 连接翻转后的组。
    • 代码示例
      ListNode* reverseKGroup(ListNode* head, int k) {
      // 实现翻转逻辑
      }
  • 追问预测
    • 如何处理链表长度不足K的情况?
    • 你能优化这个算法吗?
  • 关键词链表 翻转 算法题

11. 写cuda算子:前缀和。实现一个base的,讲优化方法。

  • 简短回答:前缀和的CUDA算子通过并行计算加速求和过程。
  • 详细解答
    • 实现步骤
      • 使用CUDA核函数并行计算前缀和。
      • 采用共享内存优化数据访问。
    • 代码示例
      __global__ void prefixSumKernel(int* input, int* output, int n) {
      // CUDA实现前缀和
      }
  • 追问预测
    • 如何优化前缀和的计算效率?
    • 你能详细描述CUDA的内存管理吗?
  • 关键词CUDA 前缀和 并行计算

12. 写cuda算子gemm:实现一个base的,讲优化方法。

  • 简短回答:GEMM的CUDA算子通过并行计算实现矩阵乘法。
  • 详细解答
    • 实现步骤
      • 使用CUDA核函数实现矩阵乘法。
      • 利用共享内存和块划分优化性能。
    • 代码示例
      __global__ void gemmKernel(float* A, float* B, float* C, int N) {
      // CUDA实现GEMM
      }
  • 追问预测
    • 如何优化GEMM的计算性能?
    • 你能详细描述CUDA的线程管理吗?
  • 关键词CUDA GEMM 矩阵乘法

13. RL异步调度有哪些,优缺点是什么?

  • 简短回答:RL异步调度包括多线程和分布式调度,具有提高效率和降低延迟的优点。
  • 详细解答
    • 方法
      • 多线程调度:多个线程同时执行任务。
      • 分布式调度:在多个机器上分配任务。
    • 优缺点
      • 优点:提高资源利用率,减少等待时间。
      • 缺点:实现复杂性增加,可能导致数据一致性问题。
  • 追问预测
    • 你能详细描述异步调度的实现吗?
    • 如何评估调度策略的效果?
  • 关键词RL 异步调度 优缺点

14. RL异步调度算法上需要做哪些改进?

  • 简短回答:改进RL异步调度算法可以集中在提高效率和降低复杂性。
  • 详细解答
    • 改进方向
      • 优化任务分配策略。
      • 提高数据一致性管理。
    • 实现方法
      • 使用更高效的调度算法。
      • 引入缓存机制减少数据传输。
  • 追问预测
    • 你能详细描述改进的具体方法吗?
    • 如何评估改进效果?
  • 关键词RL 异步调度 改进

15. 手撕代码:合并k个升序链表。

  • 简短回答:合并K个升序链表可以使用优先队列或分治法实现。
  • 详细解答
    • 实现步骤
      • 使用优先队列维护当前最小节点。
      • 逐个合并链表。
    • 代码示例
      ListNode* mergeKLists(vector<ListNode*>& lists) {
      // 实现合并逻辑
      }
  • 追问预测
    • 如何处理链表为空的情况?
    • 你能优化合并算法吗?
  • 关键词链表 合并 升序

16. 手撕代码: LRU。

  • 简短回答:LRU(最近最少使用)缓存算法通过双向链表和哈希表实现。
  • 详细解答
    • 实现步骤
      • 使用哈希表存储键值对。
      • 使用双向链表维护访问顺序。
    • 代码示例
      class LRUCache {
      public:
      LRUCache(int capacity) {
      // 初始化LRU缓存
      }
      int get(int key) {
      // 获取缓存值
      }
      void put(int key, int value) {
      // 更新缓存
      }
      };
  • 追问预测
    • 如何处理缓存容量满的情况?
    • 你能优化LRU的实现吗?
  • 关键词LRU 缓存 算法

17. 手撕代码: online-softmax和flash-attn伪代码。

  • 简短回答:online-softmax和flash-attn是用于加速注意力计算的技术。
  • 详细解答
    • online-softmax:动态计算softmax以减少内存占用。
    • flash-attn:通过优化计算流程加速注意力机制。
    • 伪代码示例
      def online_softmax(logits):
      # 实现online-softmax逻辑
      def flash_attention(queries, keys, values):
      # 实现flash-attn逻辑
  • 追问预测
    • 你能详细描述这两种方法的实现吗?
    • 如何评估加速效果?
  • 关键词online-softmax flash-attn 注意力计算

总结

类别问题数关键技能点
行为问题1实习经历、团队合作
项目经验1大模型量化流程
算法/系统设计13算子融合、QAT、量化流程等
算法17CUDA编程、链表操作、LRU等

其他

1. 请问壁仞给多少

  • 简短回答:壁仞的薪资水平因岗位和经验而异,具体数额需面试时确认。
  • 详细解答
    • 壁仞科技的薪资通常与行业标准相符,可能会根据个人能力和经验进行调整。
    • 建议在面试中询问具体薪资范围,以便更好地了解。
  • 追问预测
    • 壁仞的薪资结构是怎样的?
    • 是否有年终奖金或其他福利?
    • 公司的薪资调整机制是什么?
  • 关键词薪资 壁仞 面试 福利

2. 可以问下佬摩尔二面的内容吗

  • 简短回答:二面内容通常包括技术问题、项目经验和行为面试。
  • 详细解答
    • 技术问题可能涉及具体的编程语言、算法和数据结构。
    • 项目经验部分会询问候选人过去的工作经历及其在项目中的角色。
    • 行为面试则关注候选人的团队合作、解决问题的能力等。
  • 追问预测
    • 二面通常有几位面试官?
    • 面试时会使用什么样的技术工具?
    • 是否有特定的面试题库?
  • 关键词二面 面试内容 技术问题 项目经验

3. 请解释并介绍一下 Roofline 模型,如何判断性能已经达到计算瓶颈

  • 简短回答:Roofline 模型是一种可视化工具,用于评估计算性能与内存带宽的关系。
  • 详细解答
    • Roofline 模型通过图形展示计算能力(FLOPS)与内存带宽的限制。
    • 性能达到瓶颈的标志是计算性能接近 Roofline 的水平,且内存带宽成为限制因素。
    • 通过分析计算密集型和内存密集型操作,可以判断性能瓶颈。
  • 追问预测
    • 如何优化以提高性能?
    • Roofline 模型的实际应用案例有哪些?
    • 该模型的局限性是什么?
  • 关键词Roofline模型 性能瓶颈 计算能力 内存带宽

4. 请介绍一下你理解的 Flash-attention

  • 简短回答:Flash-attention 是一种高效的注意力机制,旨在减少计算复杂度和内存使用。
  • 详细解答
    • Flash-attention 通过优化注意力计算,降低了时间复杂度。
    • 其核心思想是利用稀疏性和并行计算来提升效率。
    • 适用于大规模模型,尤其是在自然语言处理任务中。
  • 追问预测
    • Flash-attention 与传统注意力机制的区别是什么?
    • 在实际应用中如何实现 Flash-attention?
    • 该机制的性能提升幅度如何?
  • 关键词Flash-attention 注意力机制 计算复杂度 内存使用

5. 对于性能优化的定位和瓶颈的检测,你有什么方法吗

  • 简短回答:性能优化可以通过分析工具、代码审查和基准测试等方法进行。
  • 详细解答
    • 使用性能分析工具(如 gprof、Valgrind)来识别瓶颈。
    • 进行代码审查,查找潜在的低效算法或数据结构。
    • 通过基准测试对比不同实现的性能,找出最优解。
  • 追问预测
    • 你常用的性能分析工具有哪些?
    • 如何选择合适的优化策略?
    • 在优化过程中遇到的挑战是什么?
  • 关键词性能优化 瓶颈检测 分析工具 基准测试

6. 了解GPU的cudacore、Tensorcore吗,你常用的GPU有哪些,他们的显存和显存带宽有多大?

  • 简短回答:CUDA Core 和 Tensor Core 是 NVIDIA GPU 中的两种计算单元,分别用于通用计算和深度学习加速。
  • 详细解答
    • CUDA Core:用于执行基本的计算任务,适合各种计算密集型应用。
    • Tensor Core:专为深度学习优化,能够加速矩阵运算。
    • 常用的 GPU 包括 NVIDIA 的 A100、V100 和 RTX 3080,显存和带宽各有不同:
      GPU型号显存显存带宽
      A10040GB1555 GB/s
      V10032GB900 GB/s
      RTX 308010GB760 GB/s
  • 追问预测
    • 如何选择合适的 GPU 进行深度学习训练?
    • Tensor Core 的使用场景有哪些?
    • 显存和带宽对模型训练的影响是什么?
  • 关键词CUDA Core Tensor Core GPU 显存 带宽

7. H100相比A100有哪些改进

  • 简短回答:H100 在计算性能、内存带宽和能效方面相较于 A100 有显著提升。
  • 详细解答
    • 计算性能:H100 提供更高的浮点运算能力,适合更复杂的模型。
    • 内存带宽:H100 的显存带宽更大,支持更快的数据传输。
    • 能效:H100 在相同功耗下提供更高的性能,提升了能效比。
  • 追问预测
    • H100 的应用场景有哪些?
    • 在实际使用中,H100 的性能提升幅度如何?
    • H100 的价格与 A100 相比如何?
  • 关键词H100 A100 性能提升 内存带宽 能效

8. DP、TP-SP的计算通信重叠原理,具体是什么通信和什么计算重叠

  • 简短回答:DP(数据并行)和 TP-SP(模型并行)通过重叠计算和通信来提高训练效率。
  • 详细解答
    • DP:在数据并行中,多个 GPU 同时处理不同的数据批次,计算和通信可以重叠。
    • TP-SP:在模型并行中,模型的不同部分在不同 GPU 上计算,通信与计算也可以重叠。
    • 具体重叠的内容包括:
      • 数据传输与前向传播计算
      • 反向传播计算与梯度传输
  • 追问预测
    • 如何实现 DP 和 TP-SP 的有效重叠?
    • 在实际应用中遇到的挑战是什么?
    • 这种重叠对训练时间的影响有多大?
  • 关键词DP TP-SP 计算通信重叠 训练效率

9. launch bound是什么含义H2D和D2H可以重叠吗

  • 简短回答:Launch bound 是指 GPU 核心启动的时间限制,H2D(Host to Device)和 D2H(Device to Host)可以在某些情况下重叠。
  • 详细解答
    • Launch Bound:指的是 GPU 核心启动的延迟,影响计算任务的调度。
    • H2D 和 D2H 重叠
      • 在数据传输过程中,H2D 和 D2H 可以通过流(streams)实现重叠。
      • 通过合理的流管理,可以在数据传输的同时进行计算,提高效率。
  • 追问预测
    • 如何优化数据传输以减少 launch bound?
    • 在实际应用中如何管理流?
    • H2D 和 D2H 重叠的最佳实践是什么?
  • 关键词launch bound H2D D2H 重叠 流管理