Qwen1.5微调

引子

由于工作上需要,一直在用Qwen做大模型推理,有个再训练的需求,特此琢磨下Qwen的训练。OK,我们开始吧。

一、安装环境

查看显卡驱动版本

根据官网推荐

OK,docker在手,天下我有。

docker pull qwenllm/qwen:cu117

docker run -it --rm --gpus=all -v /mnt/code/LLM_Service/:/workspace qwenllm/qwen:cu117 bash

二、测试环境

1、数据集准备

2、下载代码

GitHub - QwenLM/Qwen1.5: Qwen1.5 is the improved version of Qwen, the large language model series developed by Qwen team, Alibaba Cloud.

cd /workspace/qwen1.5_train/Qwen1.5/examples/sft

3、配置

修改脚本,/workspace/qwen1.5_train/Qwen1.5/examples/sft/finetune.sh

执行命令, bash finetune.sh,报错如下:

修改如下:

报错,显卡不支持bf16,改为fp16精度

本地训练,修改脚本

继续报错,transformer没更新

git install transformer -i Simple Index

执行命令, bash finetune.sh

继续报错,accelerate版本不对

pip install accelerate==0.27.2

单机多卡,继续报错。

修改为单机单卡,重启容器,docker run -it --rm --gpus='"device=1"' -v /mnt/code/LLM_Service/:/workspace qwen:v1.0 bash

out of memory,修改为7B模型重新尝试,下载地址https://huggingface.co/Qwen/CodeQwen1.5-7B-Chat/tree/main

两条数据训练完成

4、显存占用

三、模型合并

from peft import PeftModel
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
"""
使用该脚本,将lora的权重合并到base model中
"""def merge_lora_to_base_model():model_name_or_path = '/workspace/model/Qwen1.5-7B-Chat'adapter_name_or_path = '/workspace/qwen1.5_train/Qwen1.5/examples/sft/output_qwen'save_path = 'finetune-qwen1.5-7b'tokenizer = AutoTokenizer.from_pretrained(model_name_or_path,trust_remote_code=True)model = AutoModelForCausalLM.from_pretrained(model_name_or_path,trust_remote_code=True,low_cpu_mem_usage=True,torch_dtype=torch.float16,device_map='auto')model = PeftModel.from_pretrained(model, adapter_name_or_path)model = model.merge_and_unload()tokenizer.save_pretrained(save_path)model.save_pretrained(save_path)if __name__ == '__main__':merge_lora_to_base_model()

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

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

相关文章

rancher-rke2 修改--service-cluster-ip-range

一、场景 因为需要部署新版本的ingress-nginx,而部署ingress-nginx的时候需要使用hostnetowrk以及nodeport的端口为80和443,service-node-port-range 默认为30000开始,部署会报错。 二、产生修改的需求 1、api-servier的配置文件位置 默认是没有的&…

LabVIEW学习记录 - 实时显示时间

LabVIEW操作 - 实时显示时间 在程序框图,选择函数->定时->格式化日期/时间字符串 该函数的使用手册说明: 鼠标选择“格式化日期/时间字符串”->创建->输入控件->输入格式 查看时间代码格式: 编程->定时->获取时间日…

Ali-Sentinel-入口控制

​ 归档 GitHub: Ali-Sentinel-入口控制 测试 // 在 demo-spring-webmvc 里新建测试类public class TestMain {public static void main(String[] args) throws InterruptedException {initFlowRules(); // 初始化规则while (true) {// 1.5.0 版本开始可以直接利用 try-with…

Stream流入门

Stream流:操作集合和数组的工具。 Stream的三类方法: 获取Stream流:创建一条流水线,并把数据放上去。中间方法:流水线上的操作,可以进行多次操作。终结方法:一个Stream流只能有一个终结方法,是…

Linux交换空间的创建使用

交换空间: 换出:将内存中不常用(冷数据)的放去硬盘里 换出:内存要使用这部分数据时,将硬盘的这部分数据放入内存 在内存和硬盘上用来交换数据的空间就是交换空间 创建交换空间的步骤 1.去磁盘上创建一个分…

想进大厂,请先想清楚这几个问题

今天被一个小伙伴问:“进大厂难吗?” 我想都不想回答:“简单啊~ 从北京郎家园,坐817或者816,终点站就是大厂。” 小伙伴翻了一个大大的白眼... “我是说工作上的事!” 瞬间懂了,工作场所&…

C语言 | Leetcode C语言题解之第47题全排列II

题目: 题解: int* vis;void backtrack(int* nums, int numSize, int** ans, int* ansSize, int idx, int* perm) {if (idx numSize) {int* tmp malloc(sizeof(int) * numSize);memcpy(tmp, perm, sizeof(int) * numSize);ans[(*ansSize)] tmp;return…

OssUtil工具上传文件

安装、上传、下载 1. 安装ossutil sudo -v ; curl https://gosspublic.alicdn.com/ossutil/install.sh | sudo bash2. 配置ossutil ossutil config3. 验证是否已成功安装ossutil ossutil 如果屏幕中输出ossutil所有支持的命令,表明已成功安装ossutil。# 完整上传 os…

ruoyi-nbcio-plus基于vue3的flowable修正加签与跳转的前端问题

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 http://122.227.135.243:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a…

idea 中导入的项目maven不自动下载依赖包

导入之后不会自动引入依赖包,如下图,external libraries 下没有依赖 解决方案:重新更新下maven的Local repository 即可

MMSeg搭建自己的网络

配置结构 首先,我们知道MMSeg矿机的配置文件很多,主要结构如下图所示。 在configs/_base_下是模型配置、数据集配置、以及一些其他的常规配置和运行配置,四类。 configs/all_config目录下存放,即是将四种配置聚合在一起的一个总…

产品推荐 | BittWare基于Altera Agilex“M FPGA的lA-860m加速卡

01 产品概述 BittWare的lA-860m是一款Altera Agilex“M系列FPGA卡,针对吞吐量和内存密集型应用进行了优化。M 系列 FPGA 具有广泛的内存层次结构,包括集成高带宽存储器 (HBM2e) 和硬内存片上网络 (NoC)&am…

自动化测试超详细总结

简介 软件测试是软件开发过程中一个必不可少的环节。传统的软件测试方式通常是手动测试,即由专业的测试人员通过手动操作软件应用程序来验证其功能和性能。然而,这种方式存在许多缺点,例如时间耗费、测试结果不稳定、测试覆盖率不够高等。 为…

百种提权及手段一览系列第3集

特权升级的危险是显而易见的。通过提升权限,攻击者可以绕过网络安全措施,从而损害数据完整性、机密性和系统可用性。对于组织而言,这可能会导致数据泄露、系统停机以及潜在的法律和声誉后果。识别权限升级的迹象并部署预防性网络安全措施对于…

Vue3 + Element-Plus 对接高德地图实现搜索提示选址、点击地图选址、自我定位功能(最新)

Vue3 Element-Plus 对接高德地图实现搜索提示选址、点击地图选址、自我定位功能&#xff08;最新&#xff09; 1、效果展示2、实现代码2.1 GaoDeMap.vue2.2 SystemDialog.vue2.3 UnusedList.vue.vue 1、效果展示 2、实现代码 2.1 GaoDeMap.vue <template><div style…

书生·浦语 大模型(学习笔记-5)XTuner 微调 LLM:1.8B、多模态、Agent

一&#xff1a;两种微调 增量与训练和指令微调的区别 二、数据的一生 原始数据转换为标准格式数据 添加对话模板&#xff0c;直接调用即可&#xff0c;会拼接 三、微调方案 三种加载对比 四、XTuner 五、8GB 显存玩转 LLM 五、InternLM2 1.8B模型&#xff08;相关知识&#x…

GAN 生成对抗神经网络

GAN 文章目录 GANGAN的结构GAN的目标函数GAN的训练GAN的优势和不足优势不足 GAN的结构 GAN的设计灵感来源于博弈论中的零和博弈&#xff08;Zero-sum Game&#xff09;&#xff0c;在零和博弈中&#xff0c;参与双方的收益是完全相反的&#xff0c;一方的收益必然导致另一 方的…

pymilvus执行多向量搜索

pymilvus执行多向量搜索 从 Milvus 2.4 开始&#xff0c;引入了多向量支持和混合搜索框架&#xff0c;单个collection可以支持10个向量字段。不同的向量字段可以表示不同的方面、不同的embedding模型甚至表征同一实体的不同数据模态。该功能在综合搜索场景中特别有用&#xff…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-1.3

前言&#xff1a; 本文是根据哔哩哔哩网站上视频“正点原子[第二期]Linux之ARM&#xff08;MX6U&#xff09;裸机篇”的学习笔记&#xff0c;在这里会记录下正点原子Linux ARM MX6ULL 开发板根据配套的哔哩哔哩学习视频所作的实验和笔记内容。本文大量的引用了正点原子哔哔哩网…

Python的上下文管理器(以PIL库为例)

在Python中&#xff0c;上下文管理器是一种支持上下文管理协议的对象&#xff0c;这种协议包括两个方法&#xff1a;__enter__()和__exit__()。这些方法使对象能够在代码块开始时执行一些设置或初始化工作&#xff08;通过__enter__()&#xff09;&#xff0c;以及在代码块结束…