当前位置: 首页 > news >正文

网易大模型算法面经总结第一篇

网友一

  1. MHA的原理,是如何进行加速的,用的什么框架推理。
    回答:
    ①先答一下什么是MHA:Multi-Head Attention(MHA)是 Transformer 的核心机制,并行地关注输入序列中不同位置的多种信息
    ②回答MHA的原理就是MHA的计算步骤:
  • 第一步进行线性变换与分割: 首先,MHA 会对输入的 Q、K、V 分别进行 h 次线性变换,生成 h 组新的 Q、K、V。每一组都代表一个“头”(head),它们相当于在不同的抽象层面上理解输入。
  • 第二步进行注意力计算:每个头都会独立地执行一次缩放点积注意力计算。这个计算包括计算 Q 和 K转置的点积来衡量词之间的相关性,然后(这个头的维度特征)进行缩放,然后通过 Softmax 归一化得到注意力权重,最后用这些权重对 V 进行相乘,得到每个头的输出。
  • 第三步进行结果拼接与最终投影:所有 h 个头的输出会被拼接在一起,形成一个更宽的特征向量。最后,这个拼接后的向量会再经过一次线性变换,得到 MHA 的最终输出。
    在这里插入图片描述

③MHA是如何进行加速的,这个问题的回答有两个角度

  • 第一个角度是从MHA这个算法原理本身来回答:
    • 首先MHA有天然的并行行,MHA 的“多头”设计意味着每个头之间的计算是独立的,这使得它们可以完全并行地执行。在 GPU 等并行计算硬件上,这种并行性能够被充分利用,大大缩短了计算时间。
    • 其次,MHA 的核心操作是大量的矩阵乘法(例如 Q 和 K 的点积,Attention_Weights×V)以及线性变换。现代深度学习框架底层都集成了高度优化的线性代数库,这些库通过精巧的算法和硬件指令优化,能以极高的效率完成这些计算。
    • 最后是算法层面的优化:,例如 FlashAttention 这样的新型算法,它通过减少高带宽内存(HBM)的访问(将中间计算结果保存在更快的片上 SRAM 中)和融合多个 GPU 核操作,显著提升了注意力机制的计算速度。
  • 第二个角度是还可以通过些什么操作使得MHA进行加速:
    • 第一是算子级优化,比如 FlashAttention,通过手写 CUDA kernel,把 softmax + dropout + matmul 融合成一个操作,减少了中间显存读写,显著提升了计算速度和内存利用率。
    • 第二是进行结构级优化,采用稀疏 Attention 或低秩近似,比如 Longformer 只对局部窗口做 attention,Performer 用核函数近似 softmax
    • 第三是动态裁剪优化,例如在推理阶段使用 Token Pruning 或 Early Exit,提前丢弃对结果影响小的 token,减少计算量。
      ④MHA用什么框架进行推理
  • 第一使用HuggingFace Transformers:最主流的高层推理框架,内部支持了标准 attention 和 FlashAttention 加速。
  • 第二使用ONNX Runtime:框架可以将模型导出为 ONNX,内部使用图优化,高性能内核,硬件加速来加速推理。
  • 第三使用TensorRT(NVIDIA):TensorRT能够在NVIDIA上实现推理加速,内部图优化技术、内核融合、量化压缩和硬件调度优化来加速推理。
  • 第四使用 vLLM:针对大语言模型推理的优化框架,支持 paged attention,减少 KV 缓存冗余。
  1. 用过vLLM框架吗?
    回答:是的,用过 vLLM 框架,主要是用来加速大语言模型(比如 LLaMA 和 ChatGLM)的本地推理部署。我使用 vLLM 启动兼容 OpenAI API 的服务端,加载 Huggingface 格式模型,通过 openai.ChatCompletion 接口实现了高并发请求的响应生成。vLLM 的优势是支持 PagedAttention,这种机制可以实现 KV Cache 的共享和动态调度,显著提升多用户并发下的吞吐量,降低显存占用。同时,它对调用者非常友好,不需要改代码就可以用 openai 风格访问,非常适合构建本地 Chat 服务或微服务部署。

  2. 用过什么数据合成的方法
    回答:我用过的数据合成方法有XX种:
    第一种是基于规则的数据生成方法,就是自己设计模板,生成大量的输入输出对。比如先有一个句子模板角色经常在做动作,然后有一个角色和动作的列表,通过循环的方式去填充句子,扩充句子。
    第二种是基于统计模型的方法,就是利用现有数据的统计特性来生成新的数据,像n-gram模型,这种方式是先获取语料库,然后用n元词组来表示,然后训练根据n-1个词生成第n个词的模型,然后再通过滑动窗口生成完整的句子。

  3. PagedAttention原理
    从为什么,是什么,怎么做三个角度来回答:
    ①PagedAttention在出现之前,主流的LLM推理框架在管理KV Cache时通过提前预留空间存在严重的内存浪费问题。
    ②PagedAttention将KV Cache的存储从连续转变为非连续,他将KVCache分成一个个小的block,然后通过block table来进行索引,用块表来映射到物理内存中的不同位置。然后系统会动态分配内存,每生成新的token时,只需要分配新的block然后在块表中给出对应的记录,来进行按需分配。(就和数据结构中数组和指针的概念类似)
    ③PagedAttention实现了近乎于0的内存浪费,并且拥有有极高的吞吐量。

  4. 投机采样是什么,什么情况下用投机采样才能效果好?
    第一个子问题是定义和原理回答:
    投机采用是一种加速大语言模型推理的技术。原理是通过一个更快更小的“草稿模型”来生成候选token,然后用更大的“目标模型”验证token是否正确,减少大模型的调用次数。
    第二个子问题:
    ①草稿模型和目标模型一致性高的情况下的情况下效果好
    ②生成模型具有一定可预测性,像一些代码生成,结构化数据生成的任务
    ③草稿模型的速度要显著大于目标模型,接受率越高越好
    ④在GPU或TPU,或者分布式设备上效果更佳。

  5. LoRA原理,为什么可以低秩微调,rank和阿尔法调参经验,和数据量有关系吗

  • LoRA的原理:LoRA是一种高效微调技术,通过在模型原本的权重旁边附加两个小矩阵来学习增量知识,解决大模型全量微调问题。首先冻结预训练权重不进行更新,然后引入A和B两个低秩矩阵学习增量知识△W,最后前向传播最后和预训练权重合并。
  • 为什么可以低秩微调:大语言模型在预训练阶段已经包含了非常丰富的知识,当学习新任务时候,他的改变量是低秩,低秩的理解就是在庞大的知识空间中,进行微调的调整。
  • rank和α调参经验:他们两是用来控制BA矩阵最终的大小,变化量是α/r,α值一般设置为rank值或者两倍,让α值比较高时,会更多从新知识学习,如果遗忘了通用知识就得调小。可以网格搜索,先搜索r,找到比较好的之后固定,再搜索α。
  • 和数据量有关系吗:有关系,大数据量小r容易欠拟合,小数据量大r会过拟合。小r一般16以内,大r一般32以外。
  1. PPO原理,为什么需要DPO
    PPO原理回答:PPO是实现RLHF的核心算法,PPO过程有三个模型,一个是SFT初始策略模型,第二个是RM品味模型,用来给回答打分,最后是PPO模型,近端优化策略,对SFT模型进行微调,让他的RM分数尽可能高。
    为什么需要DPO:因为PPO的需要训练的模型多,成本高,如果奖励模型出现问题,PPO就会把缺陷学习到。

  2. MoE原理,具体怎么实现
    MoE的核心思想是“分而治之”,MoE引入了多个“专家”和一个“门控网络”来解决传统稠密模型参数量大的问题。具体实现是:假如有N个专家,我们每次选择Top-K个专家。当Token向量从自注意力层进入MoE层前,先会通过路由计算计算出一个logits向量,对应每个专家的分数,然后选择最高的K个专家,用softmax进行门控制计算得到每个专家的权重,然后输入向量输入这K个专家中进行计算得到的结果和门控值进行加权求和得到输出。

http://www.lryc.cn/news/598416.html

相关文章:

  • 【News】同为科技亮相首届气象经济博览会
  • Qt 元对象系统(Meta-Object System)解析
  • 【C#补全计划:类和对象(六)】
  • 【Linux基础知识系列】第六十三篇 - 文件编辑器基础:vim
  • Windows11 本地安装docker Desktop 部署dify 拉取镜像报错
  • 告别下载中断:深入解析Tomcat JSP中的“远程主机强迫关闭连接”与“软件中止连接”
  • BI 系统数据看板全解析:让数据可视化驱动业务决策
  • k8s之ingress定义https访问方式
  • 使用Claude Code从零到一打造一个现代化的GitHub Star项目管理器
  • QT项目-仿QQ音乐的音乐播放器(第二节)
  • 【初识数据结构】CS61B 中的归并排序和选择排序
  • [网安工具] 自动化威胁检测工具 —— D 盾 · 使用手册
  • kubernetes集群中部署CoreDNS服务
  • OceanBase 4.3.5 解析:DDL性能诊断
  • 爆肝整理,性能测试详细汇总,从0到1打通(二)
  • 基于深度学习的胸部 X 光图像肺炎分类系统(三)
  • 在 OceanBase 中,使用 TO_CHAR 函数 直接转换日期格式,简洁高效的解决方案
  • 深入理解 eMMC RPMB 与 OP-TEE 在 Linux 系统中的应用开发
  • 使用宝塔面板搭建 PHP 环境开发一个简单的 PHP 例子
  • 解决VSCode无法加载Json架构问题
  • 《计算机网络》实验报告八 加密、数字签名与证书
  • 力扣844. 比较含退格的字符串
  • 借助Aspose.HTML控件,在 Python 中将 HTML 转换为 Markdown
  • 【bug解决】 esp32 在WSL-ubuntu20.04环境下找不到设备
  • MIT线性代数01_方程组的几何解释
  • 造成服务器内存不足的原因有什么
  • 飞腾D2000/E2000/D3000如何从头制作UBOOT引导系统镜像
  • Pycharm、Python安装及配置小白教程
  • 【docker | 部署 】Jetson Orin与AMD平台容器化部署概述
  • 用LangChain重构客服系统:腾讯云向量数据库+GPT-4o实战