项目
1、qwen大模型地部署和微调法律大模型(只需5G内存)
-
遇到问题1
- 部署模型之后,用户输入prompt之后提示error
- 解决:
- 当时看anaconda的traceback里面有一句:tensor on device meta is not on the expected device cpu,也就是模型没有正确部署到设备上,后面发现是环境配置有问题,安装的是CPU版本的torch,应该装CUDA 的torch,安装cuda版本的torch以后就正常了
-
遇到问题2
- 显存可能不足,所以选择了一个1.8B参数的,7B怕跑不动,虽然能够租显卡,但是当时因为是初试,所以选了个简单一点的进行尝试。
-
数据来源:
- DISC-Law-SFT,hugging face上的一个专门用于法律智能系统的,开源的监督式微调数据集
- 看了一下原始论文,该数据集的数据主要来源于公共法律NLP任务数据集、世界各地的法律原始文本,比如法律咨询、法律法规、裁判文书等、还借用了部分开源的法律指令数据集
-
遇到问题3
- 数据格式和千问的数据模式不太匹配,一个是id,reference,input,output,另一个是id,conversation。所以用python写了一个脚本,通过脚本加工处理成对应的input、output模式
-
遇到问题4
- 环境安装错误,安装deepspeed的时候报错,因为网络和环境配置问题,后面换源解决
- PEFT 主要用于 高效微调 模型,减少训练参数。
- DeepSpeed 主要用于 分布式训练加速 和 优化训练性能。
- 环境安装错误,安装deepspeed的时候报错,因为网络和环境配置问题,后面换源解决
-
为什么选择法律领域?
- 法律文本具有高度专业性,需要精确的术语理解和逻辑推理
- 案件分析需要结合法条、司法解释和判例进行多维度思考
- 法律咨询需求量大,AI助手可以提升法律服务效率
- 专业背景,能看懂
-
改进亮点:
1. 法律条文引用更准确
2. 考虑地域性司法解释差异
3. 排除其他罪名的逻辑更严谨
4. 推理过程更接近专业法律人思维
-
本次微调的DeepSeek-7B法律模型已展现出:
- 准确识别常见刑事罪名
- 提供符合法律逻辑的分析过程
-
LLM会产生误导性的 “幻觉”,依赖的信息可能过时,处理特定知识时效率不高,缺乏专业领域的深度洞察,同时在推理能力上也有所欠缺。
正是在这样的背景下,检索增强生成技术(Retrieval-Augmented Generation,RAG)应时而生,成为 AI 时代的一大趋势。
RAG 通过在语言模型生成答案之前,先从广泛的文档数据库中检索相关信息,然后利用这些信息来引导生成过程,极大地提升了内容的准确性和相关性。RAG 有效地缓解了幻觉问题,提高了知识更新的速度,并增强了内容生成的可追溯性,使得大型语言模型在实际应用中变得更加实用和可信。
博客网站
- hexo+github+netlify+cloudflare
- hexo博客生成框架
- 应用程序,将用户输入转化为一个网站目录,由一些html文件、css文件以及js文件组成的目录结构
- html超文本标记语言,是前端的结构层,从语意的角度去搭建网页结构
- css层叠样式表,前端的样式层,从美观的角度去修饰页面样式
- js是一种脚本语言,作为前端的行为层,从交互的角度去描述页面行为
- 用户通过一种相对简单的方式进行书写,框架负责帮助我们把这些简单的东西转化成一个完整的负责的前端界面
- 通过hexo,可以用yml进行博客设置,markdown来书写博客内容,hexo会帮我们把这些内容转化成一个完整的网站目录,存放在public文件夹当中
- 应用程序,将用户输入转化为一个网站目录,由一些html文件、css文件以及js文件组成的目录结构
- github文件托管平台,让我们把文件存储在云端,并提供相应的访问和修改的接口,访问和修改的接口是git
- netlify站点部署服务,将一个已经成形的网站目录部署到互联网上,让网络上的其他主机能够正常访问,最简单的当然是github自带的github pages,但是这个方式国内的访问速度极慢,用neflify作为部署站点的服务提供商,就可以享受到netlify本身的国外加速服务了。而netlify除了直接部署静态网站的功能之外,还支持动态地构建网站,也就是我们可以自定义一个构建网站的脚本,比如说后面会使用的npm run clean &&npm run build这个脚本,会清楚之前已经构建好的静态网站,然后从头重新构建,以防更新不到位,保证网站的实时更新
- cloudflare CDN加速服务,原理是通过多节点的缓存来提高网络内容的解析和访问速度,利用页面访问的局部性,客户端先访问最近的DNS服务结点,以获取目标内容所在的节点信息,然后根据这个信息去询问CDN服务器结点,由CDN负责从网络中寻找远端的实际存储内容的服务器进行内容的获取,然后将获取的内容缓存下来,这样的话下一次访问就会比较迅速了,从而实现了对网络内容的加速。
- hexo博客生成框架
个人陈述拷打
-
CS50
- python
- 人工智能
- 安全
- 伦理
- 前端三件套
- SQL
- 数据结构
- 算法
- C
- 内存
-
1、笔试
①hot100刷两遍、剑指offer(可能来不及),acwing语法基础课的dp习题
②大模型八股(包括机器学习、深度学习、Transformer、分词与嵌入、预训练与微调、解码策略与评估指标、模型训练与优化、强化学习、大模型应用、前沿大模型架构、多模态)+看呆博士做的笔记(视频内容+网页飞书文档的内容) -
2、PPT汇报
①个人简介+项目(感觉讲不了三分钟怎么办) -
3、英语问答
-
①简历相关、专业名词、日常问题
- 日常问题:自我介绍、家乡、家庭、兴趣爱好
- 自我介绍、家乡、家庭、兴趣爱好
- RW的英语口语提问是随机的,所有中文提问可能涉及的内容,老师都有可能用英语问,包括项目相关的提问。很多人担心听不懂问题,这确实是个难点,但如果不加强训练,临场很难快速反应。不过你的PPT只有3页,能让老师提问的内容有限,几场模拟面试下来,基本能把所有可能的英语提问都覆盖到。这样一来,上了面试场,只要老师说到关键词,你就能反应过来,即便没有完全听懂问题,自信表达即可——毕竟就算是母语环境,也有可能听错,无伤大雅。所以不用过度担心听不懂,真正需要担心的是自己的训练量。复试时,老师的提问会很慢、很清晰,我当时这种基础都能全部听懂,你们肯定也没问题。
总结一下口语备考核心:记思路、练表达,而非背完整回答;多做模拟面试,强化临场反应。
②简历里面的项目、都要会用英文说
③不会就礼貌申请换题
-
-
4、抽题环节
①不用特意准备,不会就如实说- 抽题环节都会考察哪些知识?(RW有抽题环节) 范围很广,机器学习、软件工程、数据库、408等都有可能涉及,但难度不算高,基本都是名词解释类的基础题。我整理的资料里有相关面经,大家利用碎片化时间看看即可,不用刻意花大量时间准备。如果抽到不会的题,诚恳道歉就好,对整体分数影响不大。
-
5、简历拷打
①吃透
②项目:清楚全流程+技术+问题解决方法,AI如实说模型和任务,突出自己的工作和两点- 项目介绍该怎么写? 核心原则:要实不要虚、要精不要泛。① 要实不要虚:涉及的技术,一定要写清楚在项目中如何应用,实现的效果最好有具体的指标数据支撑,不要只说“优化了检索效率”,要说明“将检索准确率提升了XX%”;② 要精不要泛:重点写项目核心部分,不要事无巨细全部堆砌,保证你写的每一个内容,都是老师可能提问的点——无论是技术原理、逻辑,还是同类产品的横向对比、技术的历史发展和未来优化方向,都要提前准备好。另外,如果有项目实际效果图,或者代码仓库链接,也可以放到PPT里,增加项目的真实性和专业性。
③为什么跨考
-
6、八股提问
①408+数据库+软件工程+机器学习+深度学习
②计算机网络>操作系统>计算机组成原理>AI>数据结构>软件工程>数据库,不会就大方承认 -
注:项目、刷题、英语口于、八股抓牢
-
面试流程:不同院校的面试流程有所不同,可以找直系学长学姐了解具体细节,这里我详细讲讲软微的面试流程,全程控制在12-15分钟,具体环节如下:PPT自我介绍→英语提问→抽题环节→(部分场次有笔试反问,笔试结束后最好查一下题解,看看是否有最优解,老师会通过反问给你提分的机会)综合提问。笔试部分可做可不做,我们当时是找了一个有ACM基础的小伙伴,每次模拟出3道题,限时30分钟做完,再开始面试。每个人分配一个编号,按固定规律提问,比如编号+1的同学负责英语提问,编号+2的同学负责八股抽查(抽题),编号+3的同学负责综合提问。后期大家熟悉流程后,就可以自由对面试者提问,尽量保证每场模拟的问题不重复,全面查漏补缺。刚开始大家准备不够充分,模拟时间可以稍长一些,重点保证面试质量;全部模拟结束后,进行简单总结,对于有明显薄弱点的同学,大家可以一起帮忙提建议,避免后续面试出现同样的问题。
-
Fantasy
比如说我准备了这一大段难道我要一字一句复述吗?那不可能,比如说我这个第一步重点什么?Build Foundation Build Foundation. Build foundation 你只要能记住这一个词,我觉得就足够。Build Foundation Literature. 比如说第一年我要干什么?build foundation 和 literature 那我怎么说,那你想一想。a focus on building。building my foundation for 什么什么方向,I plan to read read read literature read 什么样的,literature,随便加一个形容词。a lot of literature。To 怎么就你随便加一个,你想做的一些事情,你读了文献你要干什么?To improve myself. 我就最简单的,我们最怕是说不出口,鸦雀无声,所以说我跟大家讲这种训练方法,你先找到问题,你怎么思考?这些问题我从哪几个方面回答,然后我去找到对应的这些词,你看我这些词都可以去标注的,你看你自己做的时候,你用一个文档来把这些整理出来,然后你就找。每一个。
Fantasy
你看我拿笔拿一个每一个这个每个问题,它重点的词儿,比如说问题重点就是什么?foundation 第一步就是 Foundation Literature 第二步是什么?我要做 research?The joint research team to practice. 非常简单,然后最后一年我干什么我要干什么?graduation thesis。我要做毕业论文,我先记这个词,几个词,我相信这几个词,大家晚上回去,比如说睡觉之前,我想一想,今天讲那个,比如说我要准备这个。我怎么去回答 plan 研究生的计划,那就研一研三研一怎么样去打基础,看论文研二,我要去 research team 里面去 practice 研三,我要准备论文,你能够记住这些词。记住对应的英语,你自己试一试,你一定能讲出来,你大概编我们口语又不是要求你每每句一定要句语法都一样,你甚至能讲出来这些词。I will do。
Fantasy
比如说 I will do my 怎么样?Graduation as well. 那这一句话不是也能解出问题吗?我们英语口语切忌追求完美。我们并不是去考雅思什么的,我们只要能讲出口能有逻辑,我觉得就已经非常好,口语这一部分大家还有没有问题?我正好只现在讲一块儿回答。没问题,那我们再往后来就你没听清楚的话,你需要一点思考时间,那你就是用这些话术来带,比如说没听清就 repeat that question 需要思考时间说,Let me think a moment。
Fantasy
如果不会转移话题,他问一些什么,比如说有的比较厉害一点,学校他会问你专业问题,那这个专业问题,我们就没法在这里跟大家去讲,那要大家根据自己的专业去背相关的一些题目,比如说你没有背到,那你可以你你可以就直接说嘛。i’m not familiar very familiar with this aspect。By the hand, I’ll have some other understanding of. 你就是把你的背的给它写出来,然后给它把它讲出来,你最最起码要讲一点东西,不用怕说,你讲的跟这个问题没有关系,或者怎么怎么样的英语,只要你在讲,你不可能是零分。一定会有分的,没有老师会因为这个英语部分而去把你卡掉,重点还是后面的专业英语它只是一个走流程,那么大家要做的就是。
Fantasy
过除我们不敢开口的心态,我们去把这件事情去完成一个60分,这样我觉得就非常好,再简单介绍一下综合面试。综合面试老师到底招学生招什么,学生肯定基础比较好,然后能干活。这点是你解密或者是面试的时候反映出来。第三,态度问题态度稳不稳定,面试的时候他具体看什么?他肯定看的是你面试时候的状态,就比如说你面试同样的回答,你盯着老师的眼睛。然后大大方方的声音很洪亮,去回答和你眼神飘忽不定,也不敢跟老师直视讲话也比较小声,那么这种回答的。不管你内容怎么样,肯定是前者给老师的印象要好一点,就是大家,我觉得就像史蒂夫刚才说的,你即使不会打,你也要给老师表现一个积极乐观向上的心态。因为甚至有些问题,你答的怎么样,根本不是重要,可能老师就比较喜欢你这个人,他就喜欢你这种感。它对你的认可度就会更高。
- PPT 2-3分钟
- 英语问答2-3分钟
- 抽题缓解1-2分钟
- 简历拷打4-9分钟
- 为什么跨考:
- 正如个人陈述里面所说,在大学刚入学的时候,碰巧刷到哈佛大学CS50的计算机入门视频,看完觉得还挺有趣的,于是就开始尝试学习计算机的相关内容。
一些问题
cin.tie(0)原理
-
默认情况下,C++ 的
iostream和 C 的stdio(即cin/cout和scanf/printf)是 同步的。这意味着每当你使用cin或cout进行输入输出操作时,C++ 会确保它们和 C 的stdio库的scanf、printf等函数保持同步,以保证两者之间的兼容性。问题:
同步会带来额外的开销,因为每次进行 I/O 操作时,C++ 会确保两者(
cin/cout和scanf/printf)的缓冲区是一致的。这会导致 I/O 操作变得慢,尤其是在需要大量输入输出的情况下。解决方案:
ios::sync_with_stdio(0)会关闭这种同步,使得 C++ 的 I/O 流不再和 C 的 I/O 流同步,从而提升 I/O 操作的速度。ios::sync_with_stdio(0):0表示 禁用同步(即不再同步stdio和iostream)。1(或者不传参)表示 启用同步(即保持同步)。
2.
cin.tie(0)的作用:1
cin.tie(0);默认情况下,
cin和cout是绑定的,也就是说,每次你使用cin进行输入时,cout会被自动刷新,确保输出内容在输入之前显示。这个机制虽然保证了输出的顺序,但也会引入一定的性能开销。问题:
cin和cout绑定会导致每次输入之前刷新输出流,增加不必要的延迟,尤其是在大量输入时。解决方案:
cin.tie(0)会 解除cin和cout的绑定,这样就不会在每次输入前刷新cout,从而提升性能。3. 总结:
ios::sync_with_stdio(0):禁用cin/cout与scanf/printf的同步,使得它们之间不再保持一致,从而加速输入输出。cin.tie(0):解除cin和cout的绑定,避免在每次输入前不必要地刷新cout。
4. 使用场景:
这两条语句通常在程序中有大量输入输出操作时使用,比如处理大规模数据时。它们能显著提升程序的性能,尤其是在需要频繁读取或写入数据的情况下。
项目提问重点
- 写好PPT的项目介绍(建议在复试线出来前完成),并不断打磨,梳理面试要点,重点包含以下5点:
- 项目背景:最好有实用价值,且不烂大街,体现项目的意义。
- 技术架构:要熟悉到滚瓜烂熟,老师很容易追问架构细节。
- 遇到的问题:比如文档切分过长、检索召回不准、模型幻觉等,这是体现你思考的核心技术点。
- 你的解决方法:重点讲你的思考过程、付出的工作量,以及项目的创新点。
- 未来优化方向:体现你对前沿知识的探索,让老师看到你的学习能力和潜力。
- 项目:清楚全流程+技术+问题解决方法,AI如实说模型和任务,突出自己的工作和两点
- 项目介绍该怎么写? 核心原则:要实不要虚、要精不要泛。① 要实不要虚:涉及的技术,一定要写清楚在项目中如何应用,实现的效果最好有具体的指标数据支撑,不要只说“优化了检索效率”,要说明“将检索准确率提升了XX%”;② 要精不要泛:重点写项目核心部分,不要事无巨细全部堆砌,保证你写的每一个内容,都是老师可能提问的点——无论是技术原理、逻辑,还是同类产品的横向对比、技术的历史发展和未来优化方向,都要提前准备好。另外,如果有项目实际效果图,或者代码仓库链接,也可以放到PPT里,增加项目的真实性和专业性。
项目1(Agent方向):ai-reg-legal-demo-main
- 项目1:智能法律咨询RAG Agent系统
进入项目目录 cd ai-reg-legal-demo-main/ai-reg-legal-demo-main,安装依赖 pip install -r requirements.txt。去 https://platform.deepseek.com 注册账号获取API Key,编辑 .env 文件填入 DEEPSEEK_API_KEY=你的API密钥。(密钥我已经配好了 你不用改)运行 python ingest_docs.py law_files/ 构建向量库,等待Embedding模型下载和文档处理完成。测试基础版 python rag_query.py 劳动合同法中试用期有什么规定?,测试增强版 python simple_enhanced_rag.py 公司可以在试用期内随意辞退员工吗?。如果网络好可以试试完整版 python enhanced_rag_agent.py 试用期内员工可以随时离职吗?。 - 过程:
- 下载包,配置环境
- 生成embedding向量,存入向量库的时候出现错误。终端显示的报错信息是unable to infer type for attribute"chroma_server_nofile",也就是说这个字段类型无法推断,搜了一下相关信息,说可能是版本不兼容,也可能是本地的chroma库代码字段定义不完整,就两个都试了一下,一个是对环境(克罗马库和派单体可)重新安装,看是不是兼容问题,
- 运行ingest_docs.py的时候报错,生成embedding嵌入的时候构建向量库失败
- 依赖库的问题
项目背景
- 行业痛点:法律行业面临法规条文海量、更新快、检索难的问题。
技术局限:通用大模型在垂直领域存在“幻觉”现象,且无法实时获取最新的法律法规。
核心目标:利用 RAG(检索增强生成)技术,构建一个能够基于国家法律法规数据库及本地私有文档(PDF/Word)进行精准问答的系统,确保回答有据可依。
技术架构
遇到的问题
解决方法
未来优化方向
-
多Agent协作指的是多个“Agent”在系统中共同工作,通过分工合作来解决复杂问题。在这个框架中,通常有不同类型的Agent,例如规划Agent、搜索Agent和生成Agent,它们之间协同配合,共同完成任务。
- 规划Agent:负责制定任务的执行计划,确定如何组织和调配资源来完成任务。
- 搜索Agent:负责在大量信息中进行搜索和筛选,找到与任务相关的内容或资源。
- 生成Agent:根据已有的资源和信息,生成所需的输出或解决方案。
工具调用是指系统通过集成的工具或外部接口调用相应功能,来帮助完成任务或提供额外的支持。例如,可以调用数据库、文档生成工具、搜索引擎等工具来辅助任务的执行。
思维链是指系统通过一系列逻辑推理或操作步骤,模拟类似人类思维的过程,逐步完成复杂的问题解决。它可以帮助Agent在执行任务时,保持清晰的思考路径,使问题的解决更加系统和条理化。
项目2(LoRA微调):FineTuning-Qwen2.5-7b-main
ngxme/FineTuning-Qwen2.5-7b: 基于Qwen2.5模型、使用DISC-Law-SFT-Pair数据集微调的法律大模型
项目背景
技术架构
遇到的问题
解决方法
未来优化方向
面试可能问到的问题
- 为什么用千问2.5-7b,有什么优点
- 为什么用这个数据集,数据集的来源