1.1 大模型微调技术简介
模型微调也被称为指令微调(Instruction Tuning)或者有监督微调(Supervised Fine-tuning, SFT),该方法利用成对的任务输入与预期输出数据,训练模型学会以问答的形式解答问题,从而解锁其任务解决潜能。经过指令微调后,大语言模型能够展现出较强的指令遵循能力,可以通过零样本学习的方式解决多种下游任务。
然而,值得注意的是,指令微调并非无中生有地传授新知,而是更多地扮演着催化剂的角色,激活模型内在的潜在能力,而非单纯地灌输信息。
相较于预训练所需的海量数据,指令微调所需数据量显著减少,从几十万到上百万条不等的数据,均可有效激发模型的通用任务解决能力,甚至有研究表明,少量高质量的指令数据(数千至数万条)亦能实现令人满意的微调效果。这不仅降低了对计算资源的依赖,也提升了微调的灵活性与效率。
1.2 轻量化微调技术简介
由于大模型的参数量巨大, 进行全量参数微调需要消耗非常多的算力。为了解决这一问题,研究者提出了参数高效微调(Parameter-efficient Fine-tuning),也称为轻量化微调 (Lightweight Fine-tuning),这些方法通过训练极少的模型参数,同时保证微调后的模型表现可以与全量微调相媲美。
常用的轻量化微调技术有LoRA、Adapter 和 Prompt Tuning。
1.3 LoRA技术简介
LoRA 是通过低秩矩阵分解,在原始矩阵的基础上增加一个旁路矩阵,然后只更新旁路矩阵的参数。
参考资料
LoRA paper
大模型轻量级微调(LoRA):训练速度、显存占用分析
【深度学习】混合精度训练与显存分析
全网最全-混合精度训练原理
1.4 Streamlit技术简介
Streamlit是一个Python库,允许您创建交互式的数据科学和机器学习Web应用程序。使用Streamlit,您可以快速轻松地创建自定义Web应用程序,让用户与您的数据和模型进行交互。
Streamlit旨在简单直观,专注于通过几行代码轻松创建美观和功能强大的应用程序。它包括广泛的内置小部件和工具,用于显示数据,处理用户输入和创建自定义可视化。
Streamlit是一个基于tornado框架的快速搭建Web应用的Python库,封装了大量常用组件方法,支持大量数据表、图表等对象的渲染,支持网格化、响应式布局。简单来说,可以让不了解前端的人搭建网页。 相比于同类产品PyWebIO,Streamlit的功能更加全面一些。
官方文档:https://docs.streamlit.io/
Streamlit提供了多种部署选项,包括使用Docker容器、云服务平台(如AWS、GCP和Azure等)以及本地服务器等。你可以根据自己的需求选择合适的部署方式。
# 安装 streamlit pip install streamlit==1.24.0
1.5 源2.0-2B 微调实战
Task 4:源大模型微调实战.ipynb
双击打开Task 4:源大模型微调实战.ipynb
,
按顺序运行所有单元格
如果提示显存不够,尝试点击重启内核,清空显存。
环境准备
git lfs install
git clone https://www.modelscope.cn/datasets/Datawhale/AICamp_yuan_baseline.git
cp AICamp_yuan_baseline/Task\ 4:源大模型微调实战/* .
模型下载
Yuan2-2B-Mars支持通过多个平台进行下载,因为我们的机器就在魔搭,所以这里我们直接选择通过魔搭进行下载。模型在魔搭平台的地址为 IEITYuan/Yuan2-2B-Mars-hf。
数据处理
模型训练
效果验证及测试
Yuan2.0 AI简历助手
控制台运行
streamlit run "Task 4 案例:AI简历助手.py" --server.address 127.0.0.1 --server.port 6006
运行排错,及UI界面修改
OutOfMemoryError: CUDA out of memory. Tried to allocate 32.00 MiB. GPU
碰到这个问题,直接尝试重启
完整效果图
测试数据
关闭PAI实例(很重要)
运行完成后,别忘了回到魔搭,【关闭】实例,否则会一直消耗你的试用额度!