swift自定义数据集微调Qwen-7B大模型,转换模型后使用ollama跑起来

前文:swift微调Qwen-7B大模型-CSDN博客

我详细介绍了swift如何进行微调,但数据集均来自魔搭社区,如何想训练自定义数据集,实际上也很简单。

一、自定义数据集微调

export MKL_THREADING_LAYER=GNU \ 
CUDA_VISIBLE_DEVICES=0,1,2,3 \
NPROC_PER_NODE=4 \
swift sft --model_type qwen2-7b-instruct \--model_id_or_path /root/.cache/modelscope/hub/qwen/Qwen2-7B-Instruct \--sft_type lora \--dtype AUTO \--dataset AI-ModelScope/alpaca-gpt4-data-zh#200 \--self_cognition_sample 3000 \--model_name 阿盛 Master Coder \--model_author 盛世芳华 LLM_ROME \--num_train_epochs 1 \--lora_rank 8 \--lora_alpha 32 \--lora_dropout_p 0.05 \--lora_target_modules ALL \--gradient_checkpointing true \--batch_size 1 \--weight_decay 0.1 \--learning_rate 1e-4 \--gradient_accumulation_steps 16 \--output_dir output

微调时,只需指定--dataset为本地csv文件路径即可,csv文件的格式如下:

instruction是问题,input大概能理解为问题背景,output为答案,数据集准备好以后就可以直接进行训练。 

参考:ms-swift/docs/source/LLM/自定义与拓展.md at main · modelscope/ms-swift (github.com)

前文在训练时很慢,原因是就用了一张卡,多卡训练时一定要记着加上:

export MKL_THREADING_LAYER=GNU \ 
CUDA_VISIBLE_DEVICES=0,1,2,3 \
NPROC_PER_NODE=4

二、推理

CUDA_VISIBLE_DEVICES=0,1,2,3 swift infer --ckpt_dir output/qwen2-7b-instruct/v2-20240826-101129/checkpoint-48

常识用CLI推理,问问它:“贝贝是谁”,可以正确回答出我的答案,说明微调生效。

三、合并Lora

CUDA_VISIBLE_DEVICES=0,1,2,3 swift export --ckpt_dir output/qwen2-7b-instruct/v2-20240826-101129/checkpoint-48 --merge_lora true

执行后,生成./output/qwen2-7b-instruct/v2-20240826-101129/checkpoint-48-merged目录

包含了模型文件。

四、安装ollama

玩大模型的朋友都认识ollama,它的好处不言而喻,想要把合并后的模型跑在ollama中,就需要将模型转换为ollama需要的模型格式。

curl -fsSL https://ollama.com/install.sh | sh

安装成功后,启动ollama服务

ollama serve

五、下载ollama、llm源码

之所以需要下载ollama的源码,是因为需要源码编译来进行模型的转换。

git clone https://github.com/ollama/ollama.git
cd ollama
git submodule init
git submodule update llm/llama.cpp

5.1安装环境依赖

python -m venv llm/llama.cpp/.venv
source llm/llama.cpp/.venv/bin/activate
pip install -r llm/llama.cpp/requirements.txt

5.2构建量化工具

cd llm/llama.cpp/
make

可参考:llama.cpp/docs/build.md at 1e6f6554aa11fa10160a5fda689e736c3c34169f · ggerganov/llama.cpp (github.com)

编译成功后,会在目录下看到很多工具:

如果编译时报错,请先安装:

apt install cmake
apt install ccache

六、模型转化

用convert-hf-to-gguf.py 转换模型:

python ../ollama/llm/llama.cpp/convert_hf_to_gguf.py output/qwen2-7b-instruct/v2-20240826-101129/checkpoint-48-merged --outtype f16 --outfile converted.bin

其中output/qwen2-7b-instruct/v2-20240826-101129/checkpoint-48-merged就是lora合并后的文件夹路径,--outtype f16是不损失精度,--outfile converted.bin是转换后的文件名。

结束后,得到了converted.bin文件,大小14.2G

七、模型量化

一个7b的模型,12.4G还是有点大,使用模型量化工具进行量化,这里我使用4比特量化。

../ollama/llm/llama.cpp/llama-quantize converted.bin quantized.bin q4_0

最终得到quantized.bin,文件大小4.1G。

八、构建ollama包

ollama包可以理解为Dockfile,创建Modelfile文件,文件内容:

FROM quantized.bin# set the temperature to 0.7 [higher is more creative, lower is more coherent]
PARAMETER temperature 0.7
PARAMETER top_p 0.8
PARAMETER repeat_penalty 1.05
TEMPLATE """{{ if .System }}<|im_start|>system
{{ .System }}<|im_end|>
{{ end }}{{ if .Prompt }}<|im_start|>user
{{ .Prompt }}<|im_end|>
{{ end }}<|im_start|>assistant
{{ .Response }}<|im_end|>"""
# set the system message
SYSTEM """
You are a helpful assistant.
"""

最关键的就是第一句:FROM quantized.bin(文件名一定要和你量化后的文件名对的上)

九、构建部署包

ollama create test2 -f Modelfile

然后ollama看一下当前有哪些模型:

ollama list

test1是之前我创建的未经量化的模型,test2是量化后的。

十、运行模型

ollama run test2

速度很快,一切正常。

参考:

Ollama 构建自定义模型包 - 简书 (jianshu.com)

ollama 使用自定义大模型_ollama 自定义模型-CSDN博客

什么是Base模型?什么是chat模型?什么是instruct?什么是4Bit?_instruct模型和base模型的区别-CSDN博客 将 HuggingFace 模型转换为 GGUF 及使用 ollama 运行 —— 以 Qwen2-0.5B 为例_qwen2 gguf-CSDN博客

Ollama运行qwen2:7b 输出乱码_ollama run qwen2:7b-CSDN博客

ollama运行qwen2:7b一直输出大写字母G ·问题 #485 ·QwenLM/Qwen2 (github.com)

Ollama创建微调模型_ollama微调模型-CSDN博客

Ollama 导入模型指南 (zhihu.com)

基于SWIFT微调专属于自己的大模型 - 知乎 (zhihu.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/413535.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

本地编写Markdown格式文件,浏览器查看

编写准备 下载VsCode并安装&#xff0c;打开后在内部安装Markdown All in One、Markdown Preview Enhanced、Paste Image三个插件。新建一个文件夹用以后期保存你的笔记等文件在左侧新建文件&#xff0c;.md结尾&#xff0c;即完成创建右侧可实时的查看你的编写结果&#xff0…

大模型赋能风控运营:效率跃升的密码

一、大模型助力风控运营的背景与趋势 大模型兴起的背景 随着金融行业的迅速发展和数据量的爆炸式增长&#xff0c;传统的风控运营手段逐渐难以满足复杂多变的风险形势。大数据、人工智能等技术的不断进步&#xff0c;为大模型在风控运营领域的应用提供了技术支撑。金融机构面…

【算法】演员~评论家方法

一、引言 演员-评论家算法&#xff08;Actors-Critics Method&#xff09;是一种用于并发编程中的同步机制&#xff0c;用于解决多线程环境下的资源竞争问题。与传统的锁和信号量等同步工具不同&#xff0c;演员-评论家方法采用更加灵活的协作策略。算法结合了策略梯度&#xf…

PyQt5:pycharm设置及使用

前言 PyQt5 是一个用于创建图形用户界面的 Python 库&#xff0c;它是 Qt 应用程序框架的 Python 绑定。Qt 是一个广泛使用的跨平台 C 框架&#xff0c;PyQt5 允许开发者使用 Python 编写图形界面应用程序&#xff0c;而不必直接使用 C。 为了方便地使用它&#xff0c;我尝试在…

【MySQL进阶之路】数据库的操作

目录 创建数据库 字符集和校验规则 查看数据库支持的字符集 查看数据库支持的字符集校验规则 指定字符集和校验规则 在配置文件中配置 查看数据库 显示创建语句 修改数据库 删除数据库 数据库的备份和恢复 备份整个数据库 备份特定表 备份多个数据库 备份所有数据…

【大模型】LangChain基础学习

前言:LangChain是一个用于构建端到端语言模型应用的框架 目录 1. 基础知识2. 基本使用2.1 安装2.2 启动示例2.3 使用prompt2.4 输出解析器 3. 相关应用3.1 RAG 参考文献 1. 基础知识 六大组件 模型&#xff08;Models&#xff09;&#xff1a;包含各大语言模型的LangChain接口…

Redis从入门到入门(上)

1.Redis概述 文章目录 1.Redis概述1.1 什么是Redis1.2 Redis的应用场景 2.Linux下Redis的安装与使用2.1 Redis下载2.2 Redis的启动2.3 Redis配置2.4 连接Redis 1.1 什么是Redis Redis是用C语言开发的一个开源的高性能键值对&#xff08;key-value&#xff09;数据库&#xff0…

MATLAB生成COE文件

MATLAB代码 % 参数设置 N 4096; % 数据点数量 t linspace(0, 2*pi, N); % 时间向量 width 12; % 位宽% 正弦波&#xff0c;幅度在0到5之间 sine_wave 2.5 * sin(t) 2.5;% 三角波&#xff0c;幅度在0到5之间 tri_wave 5 * (1 - abs(mod(t/(2*pi)*4, 2) - 1));% 方波&…

springboot集成七牛云上传文件

大体思路 上传 前端上传MultipartFile file 文件 进行名字空值校验和格式校验&#xff0c;大概就是判断后缀是不是属于jpg.png 生成唯一uuid名称&#xff0c;然后拿着这个文件名和图片文件File调接口 接口参数为 输入流inputstream&#xff0c;将file化流传输文件名上传t…

多线程+连接池+代理 运行一段时间线程阻塞,如何解决??

&#x1f3c6;本文收录于《CSDN问答解惑-专业版》专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收…

<Rust>egui学习之小部件(四):如何在窗口中添加滚动条Scroll部件?

前言 本专栏是关于Rust的GUI库egui的部件讲解及应用实例分析&#xff0c;主要讲解egui的源代码、部件属性、如何应用。 环境配置 系统&#xff1a;windows 平台&#xff1a;visual studio code 语言&#xff1a;rust 库&#xff1a;egui、eframe 概述 本文是本专栏的第四篇博…

今日算法:蓝桥杯基础题之“切面条”

你好同学&#xff0c;我是沐爸&#xff0c;欢迎点赞、收藏、评论和关注&#xff01;个人知乎 从今天开始&#xff0c;一起了解算法&#xff0c;每日一题&#xff0c;从 JavScript 的技术角度进行解答&#xff0c;如果你对算法也感兴趣&#xff0c;请多多关注哦。 问题描述 一…

【深度学习与NLP】——深度卷积神经网络AlexNet

目录 一、卷积神经网络的发展历程 二、简要介绍 三、代码实现 四、缺点和过时的地方 一、卷积神经网络的发展历程 早期理论基础阶段&#xff08;20 世纪 60 年代 - 80 年代&#xff09;&#xff1a; 1968 年&#xff0c;Hubel 和 Wiesel 通过对猫视觉神经的研究&#xff0…

Hibernate 批量插入速度慢的原因和解决方法

由于业务需要一次性连续写入超过10k条以上的新数据&#xff0c;当对象超过10个成员变量以后&#xff0c;整个写入过程居然需要长达35秒&#xff0c;这个速度是不能接受的&#xff0c;故此研究了一下怎么开启Hibernate批量写入的功能。 我这边使用的是Hibernate 5.6.15 在网上…

Python 从入门到实战3(列表的简单操作)

我们的目标是&#xff1a;通过这一套资料学习下来&#xff0c;通过熟练掌握python基础&#xff0c;然后结合经典实例、实践相结合&#xff0c;使我们完全掌握python&#xff0c;并做到独立完成项目开发的能力。 上篇文章我们通过python小栗子来学习python基础知识语法&#xff…

C语言中的“#”和“##”

目录 开头1.什么是#?2.什么是##?3.#和##的实际应用输出变量的名字把两个符号连接成一个符号输出根据变量的表达式…… 下一篇博客要说的东西 开头 大家好&#xff0c;我叫这是我58。在今天&#xff0c;我们要学一下关于C语言中的#和##的一些知识。 1.什么是#? #&#xff0…

《黑神话:悟空》:30%抽成真相

《黑神话&#xff1a;悟空》自建服务器出售&#xff1f;揭秘游戏界的30%抽成真相&#xff01; 近年来&#xff0c;随着游戏行业的迅猛发展&#xff0c;游戏开发商与发行平台之间的利益分配问题逐渐成为业界关注的焦点。其中&#xff0c;《黑神话&#xff1a;悟空》作为一款备受…

JS基础之【基本数据类型与类型间的隐式显示转换】

&#x1f680; 个人简介&#xff1a;某大型国企高级前端开发工程师&#xff0c;7年研发经验&#xff0c;信息系统项目管理师、CSDN优质创作者、阿里云专家博主&#xff0c;华为云云享专家&#xff0c;分享前端后端相关技术与工作常见问题~ &#x1f49f; 作 者&#xff1a;码…

streamlit+wordcloud使用pyinstaller打包遇到的一些坑

说明 相比常规的python程序打包&#xff0c;streamlit应用打包需要额外加一层壳&#xff0c;常规app.py应用运行直接使用 python app.py就可以运行程序了&#xff0c;但streamlit应用是需要通过streamlit命令来运行 streamlit app.py所以使用常规的pyinstaller app.py打包是…

云同步的使用

云同步技术是一种在多个设备或系统之间保持数据一致性的技术&#xff0c;它通常依赖于云存储服务来实现。在Java中&#xff0c;实现云同步功能通常需要与云服务提供商的API进行交互&#xff0c;如Amazon S3、Google Cloud Storage、Microsoft Azure Blob Storage等。 以下是一个…