Simplex AI初创面经

一面
1. 实习期间怎么设计知识库的
2. 前后端是自己设计的吗
3. redis存储标签,是怎么做的
4. 敏感词替换怎么做的
5. 公司多少人使用这个助手,负载高怎么解决
6. 负载问题怎么解决
7. redis缓存击穿,缓存穿透,缓存雪崩
8. 消息队列在技术派中使用
9. MySQL慢查询是怎么,怎么解决
10. zset底层结构
11. 技术派架构
12. 大模型流式输出为什么不用sse,要用websocket,这两个选型问题。
算法:hot100无重复字符的最小子串
经典150的区间链表反转
面完后约二面

二面面经
1. 什么是rag,过程是什么
2. 我用什么做rag,每一个的流程是什么
3. 使用tokentextsplitter
4. 为什么要使用精排
5. lora过程,初始化(博客记录过,但是长时间没看忘了)
6. encoder,decoder初始化
7. agent认识
8. 单agent,多agent
9. mcp的好处,什么时候提出的
10. langchain原理
11. vllm,也是长时间没看了
全部评论
oc了嘛
点赞 回复 分享
发布于 07-22 20:36 浙江

相关推荐

最近遇到一个训练代码,混合精度使用 apex,多卡还是 torch ddp+mp.spawn 子进程启动的方式,性能受限于 python 的 gil 锁。其实对于混合精度训练 pytorch 已经 merge 进了 amp,fsdp 也支持了 mixed precision policy,多卡训练有 torchrun 启动器,还支持多机分布式。pytorch 已经有很多新的 feature,为什么不去用呢?1️⃣起源17 年, 提出了混合精度训练:Mixed Precision Training。用 fp16 去表示 fp32 计算,在训练中会有一些数值问题:🌟精度下溢/上溢🌟fp16 数值范围和分布不匹配,导致梯度归零首先第一个问题,fp16 的表示范围小于 fp32,因此会产生 underflow、overflow第二个问题,对于 activation gradient 的分布,很大一部分较小的值在 fp16 下是不可表示的,会发生下溢 underflow 被置为 0,导致反向传播中梯度就丢失了。混合精度训练中的数值问题和模型量化中遇到的数值问题其实很类似,都是从高精度表示范围映射到低精度表示范围,在量化中是通过 calibration 校准进行不同精度范围的线性映射。在混合精度训练中是引入了 loss scaling 梯度缩放,防止非常小的梯度值在使用 fp16 进行表示时 underflow 下溢变成 0。在前向传播计算得到损失值 loss,开始反向传播 backward 之前,对 loss 进行缩放,乘以一个大于 1 的常数,称为缩放因子 S,例如 1024、4096 等。然后用缩放后的 loss 再去进行 backward,又由于求导是基于链式法则,反向传播过程中所有的梯度值都会被进行同等缩放。但放大的梯度导致后续所有依赖梯度大小进行计算的操作都会失真,权重更新时 w=w-lr*grad,导致权重更新量也会被放大 S 倍,相当于变相增大了学习率 lr,导致训练过程不稳定,且与 fp32 训练的行为不一致。因此在 backward 之后,更新模型权重之前,包括所有需要依赖梯度大小进行计算的操作之前。要在 fp32 精度下对权重梯度进行反缩放 unscaling,除以之前放大的缩放因子 S,unscaling 之后的权重梯度也可以应用梯度裁剪和权重衰减等依赖于梯度大小值的操作。然后 optimizer 里面会 copy 一份 fp32 的主权重 master weights 进行参数更新,更新之后的 master weights 再 cast 到 fp16 同步给模型参数。整个混合精度训练的流程可以表示为:✴️model fp16 weights+fp16 activations✴️fp16 forward✴️fp16 activations✴️fp32 loss scaling✴️weight&activation fp16 backward✴️fp32 grad unscaling✴️fp32 grad clip&decay✴️fp32 master weights update✴️cast to fp16 model weights2️⃣amp18 年 nv 以 pytorch 三方扩展的形式推出了 apex,以支持混合精度,20 年 pytorch1.6 merge 进了 torch.cuda.amp,配合 autocast 实现混合精度训练autocast 是混合精度的上下文管理器,在 context 里面会自动选择 op 对应的计算精度,主要基于白名单机制进行自动类型转换。3️⃣fsdpfsdp 是 21 年 pytorch1.11 的引入的新特性,核心思想来源于 deepspeed zero,在其上又扩展了对混合精度的支持。与 amp 相比,fsdp 灵活度更高,可以通过 FSDPModule warp 设置不同的混合精度策略。以及为了更高精度的数值结果,在 fp16 activation 计算和模型参数 all-gather 的基础上,可以使用 fp32 进行 gradient 的 reduce-scatter 和 optimizer 的参数更新。QA:这个时候再思考下,数值计算在什么情况下会发生 nan,迁移到混合精度训练流程里面哪些地方可能会产生 nan,怎么检测 nan,怎么避免 nan,哪些是框架已经做的,哪些还需要自己处理的,问问自己是否有了答案?📳对于想求职算法岗的同学,如果想参加高质量项目辅导,提升面试能力,欢迎后台联系。
阿里巴巴二面195人在聊
点赞 评论 收藏
分享
评论
1
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务