我是过年某985研二,过完年打算找大厂实习 offer,本文章主要记录了本小菜研找实习的坎坷历程。
应聘岗位:昆仑天工大模型算法工程师
面试轮数:第一面
1. 自我介绍
在自我介绍环节,我清晰地阐述了个人基本信息、教育背景、工作经历和技能特长,展示了自信和沟通能力。
2. 技术问题
2.1 如何理解过拟合欠拟合?
-
欠拟合是指模型不能在训练集上获得足够低的误差。换句换说,就是模型复杂度低,模型在训练集上就表现很差,没法学习到数据背后的规律
-
过拟合是指训练误差和测试误差之间的差距太大。换句换说,就是模型复杂度高于实际问题,模型在训练集上表现很好,但在测试集上却表现很差。模型对训练集"死记硬背"(记住了不适用于测试集的训练集性质或特点),没有理解数据背后的规律,泛化能力差。
2.2 如何避免过/欠拟合?
-
欠拟合基本上都会发生在训练刚开始的时候,经过不断训练之后欠拟合应该不怎么考虑了。但是如果真的还是存在的话,可以通过增加网络复杂度或者在模型中增加特征,这些都是很好解决欠拟合的方法。
-
要想解决过拟合问题,就要显著减少测试误差而不过度增加训练误差,从而提高模型的泛化能力。我们可以使用正则化(Regularization)方法。
2.3 那什么是正则化呢?
正则化是指修改学习算法,使其降低泛化误差而非训练误差。
2.4 常见的正则化有哪些?
-
(1)直接提供正则化约束的参数正则化方法,如L1/L2正则化;
-
(2)通过工程上的技巧来实现更低泛化误差的方法,如提前终止(Early stopping)和Dropout;
-
(3)不直接提供约束的隐式正则化方法,如数据增强等。
2.5 为什么transformer比rnn强?
RNN由于存在循环结构,每个时间步的计算都要依赖上一个时间步的隐藏状态,导致计算复杂度较高,而且容易出现梯度消失或梯度爆炸的问题,导致训练效率低下。Transformer采用自注意力机制进行特征提取,可以并行计算,提高训练效率。
2.6 llama 怎么扩大上下文窗口?
引入了位置插值(Position Interpolation,PI)来对某些现有的预训练 LLM(包括 LLaMA)的上下文窗口进行扩展。结果表明,LLaMA 上下文窗口从 2k 扩展到 32k,只需要小于 1000 步的微调。
2.7 什么是大模型外推性?
外推性是指大模型在训练时和预测时的输入长度不一致,导致模型的泛化能力下降的问题。例如,如果一个模型在训练时只使用了512个 token 的文本,那么在预测时如果输入超过512个 token,模型可能无法正确处理。这就限制了大模型在处理长文本或多轮对话等任务时的效果。
2.8 什么是大模型外推性?
参考:Transformer升级之路:2、博采众长的旋转式位置编码 https://spaces.ac.cn/archives/8265
3. Leetcode 题
具体题意记不清了,但是类似 【239. 滑动窗口最大值】
- 题目内容
给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。
返回 滑动窗口中的最大值 。
示例 1:输入:nums = [1,3,-1,-3,5,3,6,7], k = 3
输出:[3,3,5,5,6,7]
解释:
滑动窗口的位置 最大值
--------------- -----
[1 3 -1] -3 5 3 6 7 31 [3 -1 -3] 5 3 6 7 31 3 [-1 -3 5] 3 6 7 51 3 -1 [-3 5 3] 6 7 51 3 -1 -3 [5 3 6] 7 61 3 -1 -3 5 [3 6 7] 7
示例 2:输入:nums = [1], k = 1
输出:[1]
-
提示:
-
1 <= nums.length <= 105
-
-104 <= nums[i] <= 104
-
1 <= k <= nums.length
-
解答
class Solution:def maxSlidingWindow(self, nums: List[int], k: int) -> List[int]:# step 1:定义 双端队列deque = collections.deque()res = []# step 2:遍历数组for i,num in enumerate(nums):# 保证 双项队列中的所有值都要在窗口范围内while deque and i-deque[0]>=k:deque.popleft()# 变量的最前端(也就是 window.front())是此次遍历的最大值的下标while deque and nums[deque[-1]]<num:deque.pop()# 入队deque.append(i)# 保存窗口最大值if i>=k-1:res.append(nums[deque[0]])return res
技术交流
技术要学会分享、交流,不建议闭门造车。一个人走的很快、一堆人可以走的更远。
建立了大模型面试&技术交流群, 大模型学习资料、数据代码、技术交流提升, 均可加知识星球交流群获取,群友已超过2000人,添加时切记的备注方式为:来源+兴趣方向,方便找到志同道合的朋友。
方式①、微信搜索公众号:机器学习社区,后台回复:技术交流
方式②、添加微信号:mlc2060,备注:技术交流
用通俗易懂的方式讲解系列
- 用通俗易懂的方式讲解:不用再找了,这是大模型最全的面试题库
- 用通俗易懂的方式讲解:这是我见过的最适合大模型小白的 PyTorch 中文课程
- 用通俗易懂的方式讲解:一文讲透最热的大模型开发框架 LangChain
- 用通俗易懂的方式讲解:超全总结!大模型算法岗面试指南来了!
- 用通俗易懂的方式讲解:基于 LangChain + ChatGLM搭建知识本地库
- 用通俗易懂的方式讲解:基于大模型的知识问答系统全面总结
- 用通俗易懂的方式讲解:ChatGLM3 基础模型多轮对话微调)
- 用通俗易懂的方式讲解:最火的大模型训练框架 DeepSpeed 详解来了
- 用通俗易懂的方式讲解:这应该是最全的大模型训练与微调关键技术梳理
- 用通俗易懂的方式讲解:Stable Diffusion 微调及推理优化实践指南
- 用通俗易懂的方式讲解:大模型训练过程概述
- 用通俗易懂的方式讲解:专补大模型短板的RAG
- 用通俗易懂的方式讲解:大模型LLM Agent在 Text2SQL 应用上的实践
- 用通俗易懂的方式讲解:大模型 LLM RAG在 Text2SQL 上的应用实践
- 用通俗易懂的方式讲解:大模型微调方法总结
- 用通俗易懂的方式讲解:涨知识了,这篇大模型 LangChain 框架与使用示例太棒了
- 用通俗易懂的方式讲解:掌握大模型这些优化技术,优雅地进行大模型的训练和推理!