deepseek-llamafactory模型微调并转为gguf
模型微调测试
基础设施配置
使用云计算平台

使用vscode进行配置

打开系统盘文件夹

llamafactory基础配置
git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
root@autodl-container-10a44fbcf4-b07c334b:~/autodl-tmp# cd LLaMA-Factory/
CITATION.cff MANIFEST.in README.md assets docker examples requirements.txt setup.py tests
LICENSE Makefile README_zh.md data evaluation pyproject.toml scripts src
root@autodl-container-10a44fbcf4-b07c334b:~/autodl-tmp/LLaMA-Factory
# - 创建虚拟环境对应目录,数据盘可以被保留
mkdir -p /root/autodl-tmp/conda/pkgs
conda config --add pkgs_dirs /root/autodl-tmp/conda/pkgs
mkdir -p /root/autodl-tmp/conda/envs
conda config --add envs_dirs /root/autodl-tmp/conda/envs
# - 创建 conda 虚拟环境(一定要 3.10 的 python 版本,不然和 LLaMA-Factory 不兼容)
conda create -n llama-factory python=3.10
root@autodl-container-10a44fbcf4-b07c334b:~/autodl-tmp/LLaMA-Factory# conda env list
# conda environments:
#
llama-factory /root/autodl-tmp/conda/envs/llama-factory
base /root/miniconda3
root@autodl-container-10a44fbcf4-b07c334b:~/autodl-tmp/LLaMA-Factory#
conda init
source /root/.bashrc
conda activate llama-factory
pip install -e ".[torch,metrics]"
(llama-factory) root@autodl-container-10a44fbcf4-b07c334b:~/autodl-tmp/LLaMA-Factory# llamafactory-cli version
----------------------------------------------------------
| Welcome to LLaMA Factory, version 0.9.2.dev0 |
| |
| Project page: https://github.com/hiyouga/LLaMA-Factory |
----------------------------------------------------------
(llama-factory) root@autodl-container-10a44fbcf4-b07c334b:~/autodl-tmp/LLaMA-Factory#
llamafactory-cli webui

也没端口转发就这样打开了,这个vscode还挺方便,我也不知道啥原理
再开一个终端
(base) root@autodl-container-10a44fbcf4-b07c334b:~/autodl-tmp# conda activate llama-factoy ry
(llama-factory) root@autodl-container-10a44fbcf4-b07c334b:~/autodl-tmp#
(llama-factory) root@autodl-container-10a44fbcf4-b07c334b:~/autodl-tmp# mkdir Hugging-Face
(llama-factory) root@autodl-container-10a44fbcf4-b07c334b:~/autodl-tmp# export HF_ENDPOINT=https://hf-mirror.com
(llama-factory) root@autodl-container-10a44fbcf4-b07c334b:~/autodl-tmp# export HF_HOME=/root/autodl-tmp/Hugging-Face
(llama-factory) root@autodl-container-10a44fbcf4-b07c334b:~/autodl-tmp#
(llama-factory) root@autodl-container-10a44fbcf4-b07c334b:~/autodl-tmp# pip install -U huggingface_hub
(llama-factory) root@autodl-container-10a44fbcf4-b07c334b:~/autodl-tmp# huggingface-cli download --resume-download deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B
下载好大模型
(base) root@autodl-container-10a44fbcf4-b07c334b:~/autodl-tmp# du -sh Hugging-Face/
3.4G Hugging-Face/
(base) root@autodl-container-10a44fbcf4-b07c334b:~/autodl-tmp# pwd
/root/autodl-tmp
(base) root@autodl-container-10a44fbcf4-b07c334b:~/autodl-tmp# ls
Hugging-Face LLaMA-Factory conda
(base) root@autodl-container-10a44fbcf4-b07c334b:~/autodl-tmp#
聊天测试


编写数据集
数据集定义
llama_factory - data - README_zh.md


训练模型

学习率:开车的油门,一脚油门会过终点,太少就很慢才达到终点(最优解)
训练轮数:太少会欠拟合(没有学到足够知识)太多会过拟合模型泛化能力下降,在训练数据表现很好但是新数据会很差
最大梯度范数:当梯度的值超过这个范围时会被截断,防止梯度爆炸现象 当成保险丝
最大样本数:每轮训练中最多使用的样本数 不设置,则拿整个数据集都去训练,但是十几万的时候就会特别多
计算类型:常见float32 float16 用float16会减少内存占用会速度快,但导致精度损失
截断长度:处理长文本时如果太长超过这个阈值的部分会被截断掉,避免内存溢出
批处理大小:由于内存限制,分批次处理
梯度累计:默认情况下模型会在每个 batch 处理完后进行一次更新一个参数,但你可以通过设置这个梯度累计,让他直到处理完多个小批次的数据后才进行一次更新
验证集比例:训练时数据会被分成训练集和验证集,80与20
学习率调节器:动态调节率,列如开车一开始加速,快到地方则降速

这些参数会导致过拟合

损失从2.7降低为0
损失曲线:降低太慢就加大学习率,如果学习结束还是下降趋势,还没到底就为欠拟合。降低太快降低学习率
检查点路径:保存的是模型在训练过程中的一个中间状态,包含了模型权重、训练过程中使用的配置(如学习率、批次大小)等信息,对LoRA来说,检查点包含了训练得到的 B 和 A 这两个低秩矩阵的权重

- 若微调效果不理想,你可以:
- 使用更强的预训练模型
- 增加数据量
- 优化数据质量(数据清洗、数据增强等,可学习相关论文如何实现)
- 调整训练参数,如学习率、训练轮数、优化器、批次大小等等
导出合并后的模型
- 为什么要合并:因为 LoRA 只是通过低秩矩阵调整原始模型的部分权重,而不直接修改原模型的权重。合并步骤将 LoRA 权重与原始模型权重融合生成一个完整的模型
- 先创建目录,用于存放导出后的模型
(base) root@autodl-container-10a44fbcf4-b07c334b:~# cd /root/autodl-tmp/
(base) root@autodl-container-10a44fbcf4-b07c334b:~/autodl-tmp# mkdir -p Models/deepseek-r1-1.5b-merged
(base) root@autodl-container-10a44fbcf4-b07c334b:~/autodl-tmp#

部署模型
conda create -n fastApi python=3.10
(base) root@autodl-container-10a44fbcf4-b07c334b:~/autodl-tmp/Models/deepseek-r1-1.5b-merged# conda activate fastApi
(fastApi) root@autodl-container-10a44fbcf4-b07c334b:~/autodl-tmp/Models/deepseek-r1-1.5b-merged#
conda install -c conda-forge fastapi uvicorn transformers pytorch
pip install safetensors sentencepiece protobuf
(fastApi) root@autodl-container-10a44fbcf4-b07c334b:~/autodl-tmp# mkdir App
(fastApi) root@autodl-container-10a44fbcf4-b07c334b:~/autodl-tmp# cd App/
(fastApi) root@autodl-container-10a44fbcf4-b07c334b:~/autodl-tmp/App# touch main.py
(fastApi) root@autodl-container-10a44fbcf4-b07c334b:~/autodl-tmp/App#
from fastapi import FastAPI
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
app = FastAPI()
# 模型路径
model_path = "/root/autodl-tmp/Models/deepseek-r1-1.5b-merged"
# 加载 tokenizer (分词器)
tokenizer = AutoTokenizer.from_pretrained(model_path)
### 分词器十分重要自动加载模型匹配分词器
# 加载模型并移动到可用设备(GPU/CPU)
device = "cuda" if torch.cuda.is_available() else "cpu"
model = AutoModelForCausalLM.from_pretrained(model_path).to(device)
@app.get("/generate")
async def generate_text(prompt: str):
# 使用 tokenizer 编码输入的 prompt
inputs = tokenizer(prompt, return_tensors="pt").to(device)
# 使用模型生成文本
outputs = model.generate(inputs["input_ids"], max_length=150)
# 解码生成的输出
generated_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
return {"generated_text": generated_text}
python -m uvicorn main:app --reload --host 0.0.0.0

训练的过拟合了
python3 /root/llama.cpp/convert_hf_to_gguf.py /mnt/c/Users/DK/Desktop/投喂的资料/deepseek-r1-1.5b-merged --outfile /root/test.gguf --outtype f16
modelfile文件已经被llamafactory定义
PS C:\Users\DK\Desktop\投喂的资料\deepseek-r1-1.5b-merged> ollama create haimianbb
gathering model components
copying file sha256:a998574673a76c152a2aabce1ab7eaf0c307990dc6c0badd964617afb9d79652 100%
copying file sha256:8dd737d110cceb8396782d1b0c9196655a4a78fee4de35f056b22d1f9e96bf96 100%
copying file sha256:59cda48bbe8bab9d61ffb410e6e3c07b6d98bff73cee7c88ff8b51f95f21ab1c 100%
copying file sha256:e20ddafc659ba90242154b55275402edeca0715e5dbb30f56815a4ce081f4893 100%
copying file sha256:6ce236e90057bbc36feee740e52666fc58103659d82063fc5ddb1355551e8148 100%
copying file sha256:b0e8dce267611e5e03ebf2cd16a8c3821bbfcad441415dd6875173788f518a56 100%
converting model
creating new layer sha256:ac67fabf626c9acf8fbfbc2b6391a8e1d9d1f4ed7f93e340627df1eb421ba7df
creating new layer sha256:741e943dbd4c7642ec2e10b275b4cc1a154d97550dce8a6288e1edf56bec5e8f
creating new layer sha256:b2ad9c47ff5fee622d61048a4fe3ba330b91d26bc04578fad9d10d143dc86322
writing manifest
success
PS C:\Users\DK\Desktop\投喂的资料\deepseek-r1-1.5b-merged>

引用B站堂吉诃德拉曼查的英豪
deepseek-llamafactory模型微调并转为gguf的更多相关文章
- Torchvision模型微调
Torchvision模型微调 本文将深入探讨如何对 torchvision 模型进行微调和特征提取,所有这些模型都已经预先在1000类的magenet数据集上训练完成.将深入介绍如何使用几个现代的C ...
- [Pytorch框架] 4.1 Fine tuning 模型微调
文章目录 4.1 Fine tuning 模型微调 4.1.1 什么是微调 为什么要微调 迁移学习 Transfer Learning 二者关系 4.1.2 如何微调 4.1.3 注意事项 4.1.3 ...
- DL开源框架Caffe | 模型微调 (finetune)的场景、问题、技巧以及解决方案
转自:http://blog.csdn.net/u010402786/article/details/70141261 前言 什么是模型的微调? 使用别人训练好的网络模型进行训练,前提是必须和别人 ...
- L23模型微调fine tuning
resnet185352 链接:https://pan.baidu.com/s/1EZs9XVUjUf1MzaKYbJlcSA 提取码:axd1 9.2 微调 在前面的一些章节中,我们介绍了如何在只有 ...
- PyTorch专栏(八):微调基于torchvision 0.3的目标检测模型
专栏目录: 第一章:PyTorch之简介与下载 PyTorch简介 PyTorch环境搭建 第二章:PyTorch之60分钟入门 PyTorch入门 PyTorch自动微分 PyTorch神经网络 P ...
- 超详细的Tensorflow模型的保存和加载(理论与实战详解)
1.Tensorflow的模型到底是什么样的? Tensorflow模型主要包含网络的设计(图)和训练好的各参数的值等.所以,Tensorflow模型有两个主要的文件: a) Meta graph: ...
- [深度学习] caffe分类模型训练、结果可视化、部署及量化笔记
本文为本人caffe分类网络训练.结果可视化.部署及量化具体过程的心得笔记.caffe目前官方已经停止支持了,但是caffe是目前工业落地最常用的深度学习框架,用的人挺多.其实主要怕自己忘了,弄个备份 ...
- 零样本文本分类应用:基于UTC的医疗意图多分类,打通数据标注-模型训练-模型调优-预测部署全流程。
零样本文本分类应用:基于UTC的医疗意图多分类,打通数据标注-模型训练-模型调优-预测部署全流程. 1.通用文本分类技术UTC介绍 本项目提供基于通用文本分类 UTC(Universal Text C ...
- BIP_开发案例07_将原有Report Builer报表全部转为XML Publisher形式(案例)
2014-05-31 Created By BaoXinjian
- Caffe-5.2-(GPU完整流程)训练(依据googlenet微调)
上一篇使用caffenet的模型微调.但由于caffenet有220M太大,測试速度太慢.因此换为googlenet. 1. 训练 迭代了2800次时死机,大概20分钟. 使用的是2000次的模型. ...
随机推荐
- 【uni-app】【01】底部导航栏与页面切换
1.(配置文件在哪)uni-app 路由控制是在 pages.json文件中的. 2.(基本配置项有哪些)初学的时候主要有三个配置项,①pages ② globalStyle ③ tabbar [!T ...
- 【高清视频方案分享】12G-SDI与CameraLink输入输出,基于RK3588J+FPGA工业平台
CameraLink协议介绍 CameraLink是一种用于机器视觉和工业成像应用的标准化数字接口协议.它由自动化成像协会(Automated Imaging Association)开发,旨在解决传 ...
- Qt/C++视频监控安卓版/多通道显示视频画面/录像存储/视频播放安卓版/ffmpeg安卓
一.前言 随着监控行业的发展,越来越多的用户场景是需要在手机上查看监控,而之前主要的监控系统都是在PC端,毕竟PC端屏幕大,能够看到的画面多,解码性能也强劲.早期的手机估计性能弱鸡,而现在的手机性能不 ...
- Qt数据库应用6-数据图文混排
一.前言 除了能够打印基本的文字信息数据到pdf和纸张,越来越多的应用需求还要求能够导出图片,并且要支持图文混排,相当于doc文档类似,当然也不会是太复杂的,类似于打印报表一样,有表格形式的文字描述, ...
- Qt编写安防视频监控系统19-日志查询
一.前言 日志查询功能是基础功能,主要分两块,一个是本地日志查询,包括运行日志.报警日志.操作日志:一个是设备日志查询,就是通过SDK去拉去NVR设备的日志信息,包括系统操作.配置操作.报警操作.录像 ...
- 即时通讯技术文集(第43期):直播技术合集(Part3) [共13篇]
为了更好地分类阅读 52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第 43 期. [-1-] 直播系统聊天技术(一):百万在线的美拍直播弹幕系统的实时推送技术实践 ...
- JMeter JDBC 请求实战宝典
<JMeter JDBC 请求实战宝典> 宝子们,今天咱就来唠唠 JMeter 里超厉害的 JDBC 请求,这玩意儿就像是数据库世界的神奇魔杖,能帮咱把数据库里的各种秘密(数据)都挖出来, ...
- Python学习(六)——配套《PyTorch深度学习实战》
1. NumPy介绍 这张图片介绍了Python中两个非常重要的科学计算库:NumPy和SciPy,以及它们的核心功能和特性. NumPy NumPy(Numerical Python)是一个开源的P ...
- 解决Playwright访问https证书问题
# 参数说明 ignore_https_errors=True 访问https地址解决安全证书 viewport={"width": 1920, "height" ...
- 一个DataGridView辅助类
DataGridView是在用C#做windows界面程序时常用到的控件,DataGridView的功能非常多,用起来也非常复杂 例如1. 我想在每行前面显示行编号,则需要先设置RowHeadersV ...