百度 大模型开发 一面

1、自我介绍

2、项目介绍

3、介绍 NLP 中数据增强方式

NLP 中常见的数据增强方式主要有同义词替换、随机插入、随机删除、随机交换、回译、模板扩写、噪声注入、对抗样本增强和基于大模型的数据改写。同义词替换是把句子中的部分词替换成语义相近的词;随机插入和删除适合做轻量扰动;随机交换适合增强模型对局部顺序变化的鲁棒性;回译是把句子翻译成另一种语言再翻回来,能够保留大意但改变表述;模板扩写适合分类和信息抽取任务;噪声注入比如加入错别字、空格、标点变化,适合提升鲁棒性;对抗样本增强更偏训练阶段优化;现在更常见的是让大模型做改写、扩写、同义表达生成。

数据增强不能只追求数量,更重要的是标签一致性和语义不偏移。比如情感分类里,同义改写后情感标签不能变;命名实体识别里,增强不能破坏实体边界;问答任务里,问题改写后答案仍然要对应原文。

一个简单的同义词替换示例如下:

import random

def synonym_replace(text, synonym_dict, replace_prob=0.3):
    words = text.split()
    new_words = []
    for w in words:
        if w in synonym_dict and random.random() < replace_prob:
            new_words.append(random.choice(synonym_dict[w]))
        else:
            new_words.append(w)
    return "".join(new_words)

synonym_dict = {
    "喜欢": ["喜爱", "热爱"],
    "学习": ["研究", "钻研"]
}

text = "我喜欢学习大模型"
print(synonym_replace(text, synonym_dict))

4、大模型如何进行预训练,如何进行微调

大模型预训练本质上是在海量无监督文本上做自监督学习,让模型学到语言规律、知识表示和上下文建模能力。对于 decoder-only 架构,最常见的目标是 next token prediction,也就是给定前面的 token,预测下一个 token。训练时会把大规模语料分词后送入模型,通过自注意力机制建模上下文,再用交叉熵损失优化预测结果。

预训练阶段的数据规模通常非常大,可能是百亿、千亿甚至更高数量级 token。预训练完成后,模型具备通用语言能力,但不一定适合具体任务,所以需要微调。

微调一般分为监督微调和参数高效微调。监督微调就是用指令数据、问答数据、任务数据让模型学会按要求输出;参数高效微调典型方法是 LoRA、QLoRA,只更新少量参数,不更新全部模型权重,这样显存和训练成本更低。如果是业务场景,通常流程是先做 SFT,再结合具体需求做偏好对齐或者规则约束。

训练里常见参数包括 learning rate、batch size、epoch、warmup ratio、max length。学习率通常比预训练阶段低,SFT 常见在 (1e^{-5}) 到 (5e^{-5}) 之间;epoch 通常 2 到 5 轮;batch size 取决于显存;长文本任务还要注意 sequence length 和梯度累积。

5、什么是 RAG

RAG 是 Retrieval-Augmented Generation,也就是检索增强生成。它的核心思想是:先从外部知识库检索相关内容,再把检索结果和用户问题一起输入给大模型,让模型基于检索到的证据生成答案。

RAG 的主要优势有三个。第一,不需要频繁重新训练模型就能更新知识;第二,可以接入企业私有数据;第三,可以减少模型幻觉,提高答案可追溯性。一个完整的 RAG 流程通常包括文档解析、文本切分、向量化、索引构建、召回、重排、Prompt 组织和生成。

常见问题主要出现在三处。第一是 chunk 切分不合理,导致信息断裂或者召回噪声太大;第二是 embedding 模型不匹配,导致召回结果不准;第三是生成阶段约束不够,模型脱离检索内容自由发挥。

一个简化版 RAG 流程代码如下:

documents = [
    "机票报销需要行程单和发票",
    "酒店报销需要发票和入住明细",
    "火车票可以直接作为报销凭证"
]

def retrieve(query, docs):
    result = []
    for doc in docs:
        score = sum(1 for word in query if word in doc)
        result.append((score, doc))
    result.sort(reverse=True)
    return [x[1] for x in result[:2]]

query = "机票报销需要什么材料"
top_docs = retrieve(query, documents)
prompt = f"问题:{query}\n参考资料:{top_docs}\n请基于参考资料回答。"
print(prompt)

6、LoRA 和 QLoRA 是什么

LoRA 是一种参数高效微调方法。它的核心思想不是直接更新原始大模型的完整权重矩阵,而是在某些线性层旁边增加两个低秩矩阵 (A) 和 (B),把权重更新写成低秩分解形式:

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

AI-Agent面试实战专栏 文章被收录于专栏

本专栏聚焦 AI-Agent 面试高频考点,内容来自真实面试与项目实践。系统覆盖大模型基础、Prompt工程、RAG、Agent架构、工具调用、多Agent协作、记忆机制、评测、安全与部署优化等核心模块。以“原理+场景+实战”为主线,提供高频题解析、标准答题思路与工程落地方法,帮助你高效查漏补缺.

全部评论

相关推荐

03-11 20:19
已编辑
门头沟学院 Java
太压力了,面了2个多小时,本菜比已经被拷打的瑟瑟发抖面完两个小时后通知过了1.算法题三道(1)leetcode124&nbsp;二叉树中最大路径和hard题&nbsp;因为不久前才刷过撕出来了,又来了一道(2)leetcode&nbsp;300&nbsp;最长递增子序列变种除了递增之外还加了一个权重因素,但是思路没变,dp就行(3)寻找词汇库里符合固定长度前缀的匹配单词应该是他们自己题库的题。给了一串单词列表,然后又给了一个单词,一个下标,根据这个下标的前缀去单词列表里面找到所有匹配的单词再返回思路是创建一个单词前缀树,然后根据树找,但是可能是构件树数有问题没撕出来2.全方位项目拷打基本没有问八股,全部都是项目企业场景题,哎哟我操,完全不会。我就纯八股战士,结果没想到一道八股都没问反正尽可能把企业场景往八股上引吧。。1.&nbsp;微服务多点部署其中一个宕机了怎么办2.&nbsp;要是mq占据大量CPU该怎么排查?MySQL占据大量CPU该怎么排查?3.&nbsp;假如说让你实现视频点赞功能,你打算怎么设计?讲讲思路(我知道多级缓存,但是碰巧没背……寄)4.&nbsp;Redis延迟双删是什么,分布式锁,哨兵模式5.&nbsp;MySQL到es同步的延迟该怎么优化6.&nbsp;Rabbit&nbsp;mq的队列是怎么实现的?(这个完全没整明白,可能是队列的底层结构?&nbsp;反正我硬扯的讲了一下rabbit&nbsp;mq的架构)还扯了很多,但是往后完全就慌了),记住的是这些
不知道怎么取名字_:2小时确实有压力,持续性的脑力劳动啊
查看9道真题和解析
点赞 评论 收藏
分享
昨天 21:45
已编辑
重庆邮电大学 Java
牛客28845183...:没必要准备b端项目,可以开始投大厂了,现在投到笔试最少还要半个月,这段时间准备算法八股就可以了,想找实习可以来我主页试试拼多多,最近刚开名额很多,难度不大的,投递多一次机会
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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