Post

腾讯pcg技术线-应用效能技术方向-后端开发一面

记录第一次面试腾讯被拷打全过程。

腾讯pcg技术线-应用效能技术方向-后端开发一面

1. Agent项目

上来问agent项目,画一下整个项目的架构

主进程是做什么的?
·是收发消息,决定工具调用

有没有用户意图识别?
·没有,主要判断是文档图片/文字消息,是写死的。

是不是和现在的openclaw的x什么model差不多?(没听懂)
·(糊弄)

多模态体现在哪里?

文件怎么存储,怎么让大模型查找/检索?
·存在history,没有做查找/检索

那你的rag在哪里?
·主要在聊天记录这里,通过prompt形式和大模型结合。

也就是说你并没有一个像openclaw那样的流程,单纯只是一个模仿语气的rag。那你更像是做一个数字分身?
·对,主要是prompt+rag查询检索聊天记录数据库。

那你上下文太长的时候,模型怎么记住前面的细节消息?
·通过手动更新聊天记录数据库。

没有别的方式?
·没有(汗流浃背了)

没有做检索、召回,大模型应该怎么阅读文件?
·单纯只是ocr过后送入大模型

也就是说,没法检索历史文件,或者说只能用文件名做检索?
·对

2. 模型微调实习经历

讲一下整个流程,从数据处理到模型微调到后面的效果和部署。
·背景需求:我们有电商视频违规素材数据集,但是不知道为什么违规,基本上只有违规这一个标签。我们要训练一个模型,帮助客户降低视频违规率,达到更高的流量。

打断:标签就只有违规吗?
·对的,所以需要找出为什么违规,因此决定使用gemini做数据蒸馏

为什么你觉得gemini蒸馏有用?
·因为我们测试过,把视频给Gemini3pro

打断:是告诉他是违规的还是让他指出是否违规?
·是后者。让gemini3pro确认哪里违规,再给人工检查。且参数量上来讲也比8B大很多。

你们怎么确认数据质量?
·我们让业务那边做了审核,基本确定可以。
·然后我们就继续把蒸馏好的数据送到gpt做校验,效果证明gemini和gpt的结果基本符合。后面就组织成数据集送入msswift做微调。

数据的规模怎么样?
·大概2k条视频,每条1~3min,用google的api测试过,一条视频平均3wtoken,文字可以忽略不计。(本来准备写一下估算公式的,结果被问题拉回去了)

有没有对比过模型前后的效果?
·有,一开始识别率其实只有百分之十几左右,调完到了94%,效果还是不错的。

Mfu有没有测?
·没有

微调的精度是多少?
·BF16

为什么不用FP32?
·(汗流浃背)因为显存会爆炸

我们这边一般也不用FP32,除了音频类型的模型对精度要求比较高,要用FP32才会使其容易收敛。如果有一个场景一定要用FP32,你会怎么做显存上的优化?
·(答不上来)

追问:你知道用FP32会自动开启TF32吧?你知道TF32吗?这种优化按说不会爆显存。
·(GG)不知道。。

你们有没有对deepspeed做精调?
·没有,主要在msswift的训练脚本上做调整,deepspeed用的是参数和优化器状态分片(扯淡八股)…主要是默认设置。

我觉得8B也算是一个小的模型了,为什么会显存不够用?按说8卡H20,760多GB的显存,应该够用的。为什么开启deepspeedzero3?为什么又爆显存?
·(汗流浃背)应该是因为我们输入太长

(打断)也就3wtoken
你们之后有没有在推理部署上做调优?比如考虑qps、并发数之类的做流量控制?
·没有,因为我们主要是替换基模,不直接面向大众开放…(糊弄)

也就是说,你在推理和微调这一块其实都不是很深入。(还说了一些redis层什么层的,完全没听懂。。。。)

3. 手撕

流量控制:有请求到达的时间序列以及时间窗口,限定每个时间窗口内只能有n个请求到达,要求滑动窗口实现。和api/网关的相关性强。

·腾讯会议内置ide,有基础的python函数补全。

·标准解法是双端队列,但是我写了个固定窗口。。。说是在实际实现中会有“毛刺”,所以一定要滑动窗口。

4. 反问

我的表现是不是太生涩了?
·(笑)没有,还算好的

我有哪些方面可以提升?
·我们是做偏工程方面的,特别是agent开发。最重视编码、工程能力。你以后可以多提升一下工程细节方面。以后可能设计重要,因为很多编码工作都给ai了。

以后的编程语言有什么建议?
·其实精通一门就好了,python转go是很容易的。

大概走流程多久发邮件?
·这个不太知道

5. 总结

Agent penguin其实和agent的相关度不高,且虽然写了rag但是经不住追问。要完善一下rag的设计与流程,特别是用户意图识别和rag的文档检索、长上下文压缩。可以去学习一下openclaw相关知识,最好搞个部署玩玩。他还说我这个项目更偏向是做一个数字分身,从设计的角度来讲,功能都应该符合数字分身的理念才对。可以在这方面精进。

钛动的工作需要更深入:
为什么显存会爆?
为什么说这个数量级、数据集可以不爆显存而使用FP32?TF32的优化要了解。
Deepspeed的使用要更深入了解。
训练过程中的mfu怎么监控?怎么提升?
推理部署的相关部分可以更深入,特别是流量控制、并发计算等等。
Vllm等推理部署方案需要更了解。。
并发场景下的“毛刺”是什么?应该怎么解决?

问的问题都基本上假设了你的实际背景,也就是不问虚的八股。。必须是你有的经历才可以说。。不好编

没有问学术方面的(比如transformer的架构和attention计算之类的),问的全部都是实际工程实现及其原理/优化。就连给的题目也是工程背景,这个pcg的面试官真的很务实,必须点赞。。面了快1h基本没有废话,很牛逼。

This post is licensed under CC BY 4.0 by the author.