说说百度大模型算法工程师二面经历

百度大模型算法工程师面试题

应聘岗位:百度大模型算法工程师

面试轮数:第二轮

整体面试感觉:偏简单

面试过程回顾

1. 自我介绍

在自我介绍环节,我清晰地阐述了个人基本信息、教育背景、工作经历和技能特长,展示了自信和沟通能力。

2. Leetcode 题

具体题意记不清了,但是类似 【208. 实现 Trie (前缀树)】

  • 题目内容

Trie(发音类似 “try”)或者说 前缀树 是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景,例如自动补完和拼写检查。

  • 请你实现 Trie 类:

  • Trie() 初始化前缀树对象。

  • void insert(String word) 向前缀树中插入字符串 word 。

  • boolean search(String word) 如果字符串 word 在前缀树中,返回 true(即,在检索之前已经插入);否则,返回 false 。

  • boolean startsWith(String prefix) 如果之前已经插入的字符串 word 的前缀之一为 prefix ,返回 true ;否则,返回 false 。

  • 示例:

输入   ["Trie", "insert", "search", "search", "startsWith", "insert", "search"]   [[], ["apple"], ["apple"], ["app"], ["app"], ["app"], ["app"]]   输出   [null, null, true, false, true, null, true]      解释   Trie trie = new Trie();   trie.insert("apple");   trie.search("apple");   // 返回 True   trie.search("app");     // 返回 False   trie.startsWith("app"); // 返回 True   trie.insert("app");   trie.search("app");     // 返回 True   
  • 提示:

  • 1 <= word.length, prefix.length <= 2000

  • word 和 prefix 仅由小写英文字母组成

  • insert、search 和 startsWith 调用次数 总计 不超过 3 * 104 次

  • 题目解答

class Trie(object):       def __init__(self):           self.children = [None]*26           self.is_end = False          def insert(self, word):           """           :type word: str           :rtype: None           """           node = self           for c in word:               c = ord(c)-ord("a")               if not node.children[c]:                   node.children[c] = Trie()               node = node.children[c]           node.is_end = True          def searchPrefix(self, prefix):           node = self            for c in prefix:               c = ord(c)-ord("a")               if not node.children[c]:                   return None                node = node.children[c]           return node           def search(self, word):           """           :type word: str           :rtype: bool           """           node = self.searchPrefix(word)           return node is not None and node.is_end           def startsWith(self, prefix):           """           :type prefix: str           :rtype: bool           """           return self.searchPrefix(prefix) is not None      # Your Trie object will be instantiated and called as such:   # obj = Trie()   # obj.insert(word)   # param_2 = obj.search(word)   # param_3 = obj.startsWith(prefix)   

3. 技术问题回答

3.1 结合 GNN 科研项目进行提问
  1. 样本构建的流程是怎样的,并且为什么 GCN 相较于其他方法在效果上更胜一筹?

  2. 节点特征指的是什么?

3.2 结合 基于 RAG 的医学问答项目进行提问
  1. 查询流程?

  2. 使用什么向量数据库?

  3. 介绍一下 RAG 原理?

  4. RAG 如何解决多实体提问问题?

    `用户提问:感冒和咳嗽需要吃什么药?`
3.3 结合多模态科研项目进行提问
  1. Prompt是如何生成的,优化目标是什么,任务是什么?

  2. OCR 抽取效果不好,需要怎么排查问题?

3.4 技术问题
  1. 您是否使用过Pytorch提供的预训练模型,例如torchvision、transformers以及OpenAI开源的ClIP?对分布式训练有经验么?

回答:学过但是没用过

  1. RNN与GNN之间有哪些区别,以及它们各自适用于哪些场景?

回答:

RNN与GNN的区别:   1. 数据类型:      - RNN 设计用于处理序列数据,即数据点按时间顺序排列,如时间序列分析、语音识别和自然语言处理。      - GNN 专门用于处理图结构数据,图由节点和边组成,代表实体及其关系,如社交网络、交通网络和分子结构。   2. 结构和工作原理:      - RNN 的核心是循环单元,它能够在序列的每个时间步上保持信息的状态,但是长序列会导致梯度消失或梯度爆炸问题,影响学习长期依赖。      - GNN 通过节点和边的特征以及图结构本身的信息,利用特殊的邻居节点更新机制来学习图中的特征表示,更好地捕捉节点间的依赖关系。   3. 长期依赖问题:      - RNN 在处理长序列时存在长期依赖问题,虽然有LSTM(长短期记忆网络)等变体来缓解这一问题,但本质上是序列模型。      - GNN 通过图结构天然地能够捕捉节点间的依赖关系,因此在处理具有明确关系的数据时更为有效。      各自适用的场景:   - RNN 适用于处理时间序列数据、文本序列等,如股票价格预测、语音识别、机器翻译(序列到序列的任务)。   - GNN 适用于处理结构化数据,如社交网络分析、推荐系统、生物信息学(如蛋白质结构预测)、地理信息系统等,其中实体和关系是数据的核心组成部分。   总的来说,RNN适合处理时间或顺序上的数据,而GNN适合处理具有明确结构关系的数据。两者各有优势,选择哪种模型取决于具体问题和数据的特点。   
  1. GPT和BERT在文本表征方面有哪些结构和工作原理上的差异?

回答:BERT是Transformer Encoder,属于自监督训练方式,然后两大预训练任务,主要用于下游任务抽特征,GPT是Decoder,自回归训练,主要是预测下一个词的分布,依赖大语料库,GPT-3可以表现出Few-shot/zero-shot learning

  1. 因为说了BERT好训练一些,问了为什么?

回答:说了GPT任务对简单、比较依赖语料库的大小,BERT的MLM比较直觉且个人能训练,GPT只有openai等公司有成品

  1. 说一说你对 Zero-shot和Few-shot的理解

回答:Few-shot先给定任务范式描述,Zero-shot就是直接做

  1. 怎么看待计算机网络和操作系统在DL中的作用

回答:谈了DL研究一些计算机网路的问题,比如网络拓扑、交换机拓扑等,分布式训练时会有通信,也会用到进程相关知识

  1. 你来调优一个BERT模型适应一个数据集或任务会怎么做

回答:固定BERT,训练分类头或者使用Adapter

  1. 训练完模型后准确率很低,怎么优化

回答:首先检查代码结构和分类器的网络结构和BERT量级是否匹配,学习率+余弦退火调整,改为Adapter,检查数据集质量,验证阶段代码是否有误

  1. 有一批文本数据,来源和质量不太一样,使用时如何处理

回答:反问文本来源不同是否混合或完全分开,结合多模态融合的技术,增加一个学习任务,对不同来源的文本表示进行线性变换投影到相同的特征空间中

个人本次面试总结

百度的面试篇项目面一点,整体效果还行,面试官给人感觉比较温和。

附上技术清单

在这里,我们想要强调的是:成功求职并不是一件难事,关键在于你是否做好了充分的准备。通过学习和掌握AI技术的相关知识和技能,了解面试中可能出现的问题和技巧,你就能够在面试中展现出自己的专业素养和实力,赢得面试官的青睐和认可。因此,让我们一起努力,用知识和技能武装自己,迎接AI时代的挑战和机遇吧!
有需要的朋友可以扫描下方二维码,免费获取更多相关资料!
请添加图片描述

最后,祝愿所有转行、求职的同学都能够在AI产品面试中取得优异的成绩,找到心仪的工作!加油!

大模型基础面

在这里插入图片描述

大模型进阶面

在这里插入图片描述

大模型微调面

在这里插入图片描述

大模型langchain面

在这里插入图片描述

大模型推理面

在这里插入图片描述

更多面试题分享

在这里插入图片描述

  • 26
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
抱歉,根据提供的引用内容,没有提到大模型算法工程师训练模型的具体流程图。但是,我可以为您介绍一般的算法工程师训练模型的流程。算法工程师训练模型的一般流程如下: 1. 数据收集和预处理:算法工程师首先需要收集和准备用于训练的数据集。这包括数据的收集、清洗、标注和划分等预处理步骤。 2. 特征工程:在训练模型之前,算法工程师通常需要对原始数据进行特征提取和转换,以便更好地表示数据的特征。这可能涉及到特征选择、特征缩放、特征编码等操作。 3. 模型选择和训练:算法工程师需要选择适合问题的模型,并使用训练数据对模型进行训练。这包括定义模型的结构、选择合适的损失函数和优化算法,并进行迭代训练以优化模型的参数。 4. 模型评估和调优:在模型训练完成后,算法工程师需要使用测试数据对模型进行评估,以了解模型的性能。如果模型的性能不满足要求,算法工程师可能需要调整模型的超参数、改进特征工程或重新设计模型结构。 5. 模型部署和优化:一旦模型训练和调优完成,算法工程师需要将模型部署到实际应用中。这可能涉及到将模型集成到生产环境中、优化模型的推理速度和资源消耗等。 请注意,这只是一般的算法工程师训练模型的流程,具体的流程可能因应用场景和问题而有所不同。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值