在昇腾开发环境合并baichuan2-13B模型的lora文件

概述

别人使用lora的方式对baichuan2-13b的模型进行了微调训练,希望我能部署到mindie服务中。

lora微调后生成的文件如下:

# ls checkpoint-lora
adapter_config.json        optimizer.pt  rng_state.pth  special_tokens_map.json   tokenizer_config.json  trainer_state.json
adapter_model.safetensors  README.md     scheduler.pt   tokenization_baichuan.py  tokenizer.model        training_args.bin# cat checkpoint-lora/adapter_config.json
{"alpha_pattern": {},"auto_mapping": null,"base_model_name_or_path": "/home/xxxxx/baichuan-inc/Baichuan2-13B-Chat", #这里是微调基础模型路径"bias": "none","fan_in_fan_out": false,"inference_mode": true,"init_lora_weights": true,"layers_pattern": null,"layers_to_transform": null,。。。。。。。。。。
}

测试合并前的lora模型

加载合并前的lora模型,需要用AutoPeftModelForCausalLM.from_pretrained生成model实例,其它地方和正常模型都一样。

import torch
import torch_npu
from torch_npu.npu import amp
from torch_npu.contrib import transfer_to_npu
from transformers import AutoModelForCausalLM, AutoTokenizer
from transformers.generation.utils import GenerationConfig
from peft import AutoPeftModelForCausalLMmodel_path="/home/xxxx/baichuan-inc/Baichuan2-13B-Chat/"
lora_path="/home/xxxx/baichuan-inc/checkpoint-lora/"tokenizer = AutoTokenizer.from_pretrained(model_path,revision="v2.0",use_fast=False,trust_remote_code=True)
model = AutoPeftModelForCausalLM.from_pretrained(lora_path,revision="v2.0",device_map="auto",torch_dtype=torch.float16,trust_remote_code=True).half().npu().eval()model.generation_config = GenerationConfig.from_pretrained(model_path, revision="v2.0")messages = []
messages.append({"role": "user", "content": "讲一个100字左右的故事"})response = model.chat(tokenizer, messages)
print(response)

将lora微调后的模型合并到baichuan2-13b的基础模型

下面的代码从model_path加载基础模型,从lora_path加载lora模型,最终将合并后的文件保存到merge_path。

import torch
import torch_npu
from torch_npu.npu import amp
from torch_npu.contrib import transfer_to_npu
from transformers import AutoModelForCausalLM, AutoTokenizer
from transformers.generation.utils import GenerationConfig
from peft import PeftModelmodel_path="/home/xxxx/baichuan-inc/Baichuan2-13B-Chat/"
lora_path="/home/xxxx/baichuan-inc/checkpoint-lora/"
merge_path="/home/xxxx/baichuan-inc/Baichuan2-13B-Chat-lora-merge"print(f"Loading the Base model from {model_path}")
tokenizer = AutoTokenizer.from_pretrained(model_path,revision="v2.0",use_fast=False,trust_remote_code=True)
base_model = AutoModelForCausalLM.from_pretrained(model_path,revision="v2.0",device_map="auto",torch_dtype=torch.float16,trust_remote_code=True)#trust_remote_code=True).eval().half().npu()print(f"Loading the LoRA from {lora_path}")
lora_model = PeftModel.from_pretrained(base_model,lora_path,torch_dtype=torch.float16,)print("Applying the LoRA")
model = lora_model.merge_and_unload()print(f"Saving the target model to {merge_path}")
model.save_pretrained(merge_path)
print(f"Saving the tokenizer to {merge_path}")
tokenizer.save_pretrained(merge_path)

查看合并后的模型目录:

# ls Baichuan2-13B-Chat-lora-merge/ -lh
total 26G
-rw-r----- 1 root root  780 Jun 24 16:16 config.json
-rw------- 1 root root 1.6K Jun 24 16:16 configuration_baichuan.py
-rw-r----- 1 root root  285 Jun 24 16:16 generation_config.json
-rw------- 1 root root 2.9K Jun 24 16:16 generation_utils.py
-rw-r----- 1 root root 4.6G Jun 24 16:16 model-00001-of-00006.safetensors
-rw-r----- 1 root root 4.6G Jun 24 16:16 model-00002-of-00006.safetensors
-rw-r----- 1 root root 4.6G Jun 24 16:16 model-00003-of-00006.safetensors
-rw-r----- 1 root root 4.7G Jun 24 16:16 model-00004-of-00006.safetensors
-rw-r----- 1 root root 4.6G Jun 24 16:17 model-00005-of-00006.safetensors
-rw-r----- 1 root root 3.0G Jun 24 16:17 model-00006-of-00006.safetensors
-rw------- 1 root root  32K Jun 24 16:16 modeling_baichuan.py
-rw-r----- 1 root root  23K Jun 24 16:17 model.safetensors.index.json
-rw------- 1 root root 9.0K Jun 24 16:16 quantizer.py
-rw-r----- 1 root root  544 Jun 24 16:17 special_tokens_map.json
-rw------- 1 root root 8.9K Jun 24 16:17 tokenization_baichuan.py
-rw-r----- 1 root root  918 Jun 24 16:17 tokenizer_config.json
-rw-r----- 1 root root 2.0M Jun 24 16:17 tokenizer.model

合并后的模型目录和原来的基础模型差不多,文件大小也差不多。

测试合并lora之后的模型文件

import torch
import torch_npu
from torch_npu.npu import amp
from torch_npu.contrib import transfer_to_npu
from transformers import AutoModelForCausalLM, AutoTokenizer
from transformers.generation.utils import GenerationConfigmodel_path="/home/xxxx/baichuan-inc/Baichuan2-13B-Chat-lora-merge"  #这里用的是合并后的模型tokenizer = AutoTokenizer.from_pretrained(model_path,revision="v2.0",use_fast=False,trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(model_path,revision="v2.0",device_map="auto",torch_dtype=torch.float16,trust_remote_code=True).half().npu().eval()model.generation_config = GenerationConfig.from_pretrained(model_path, revision="v2.0")messages = []
messages.append({"role": "user", "content": "讲一个100字左右的故事"})response = model.chat(tokenizer, messages)
print(response)

其它说明

测试mindie过程发现模型保存为bfloat16会有问题,所以上述代码中我都是使用float16。

参考资料

LLM - LoRA 模型合并与保存

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

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

相关文章

只知道无人机能航拍,你已经out啦!!!

无人机行业应用相当广泛,涵盖了航拍、植保、测绘、巡检、安防、物流等多个领域。并且随着科技的不断发展,无人机技术也在不断创新和完善。无人机行业的应用具有多重优势,这些优势使得无人机在众多领域中得以广泛应用并取得显著的成效。 航拍…

【投稿优惠|权威主办】2024年图像、地质测绘与遥感技术国际学术会议(ICIGSRST 2024)

【投稿优惠|权威主办】2024年图像、地质测绘与遥感技术国际学术会议(ICIGSRST 2024) 2024 International Conference on Image, Geological Surveying and Remote Sensing Technology(ICIGSRST 2024) ▶会议简介 2024年图像、地质…

应用监控eBPF 版调研

参考: https://www.toutiao.com/article/7327353509735596559/?appnews_articletamp1717488680&use_new_style1&req_id20240604161119838096AAE4AD4F44788E&group_id7327353509735596559&wxshare_count1&tt_fromweixin&utm_sourceweixin&…

vue自定义指令在同一个页面生效一次

vue自定义指令在同一个页面生效一次,在使用自定义指令做el-sele下滑分页时遇到vue自定义指令只生效了一次,是因为放在了v-if中使用,换成v-show就好了

kafka集群生产性能调优业务场景

kafka集群生产性能调优业务场景 Kafka 集群的生产性能调优可以通过多种途径实现,包括硬件配置优化、Kafka 配置参数调优、客户端配置优化、操作 系统和网络配置优化等。以下是详细的调优途径和适用场景: 1. 硬件配置优化 1.1 磁盘 SSD:使用 SSD 而不是 HDD 来提高磁盘 I/…

毕昇jdk教程

毕昇jdk教程指南链接:Wiki - Gitee.com

springboot 网上商城系统-计算机毕业设计源码08789

摘 要 随着互联网趋势的到来,各行各业都在考虑利用互联网将自己推广出去,最好方式就是建立自己的互联网系统,并对其进行维护和管理。在现实运用中,应用软件的工作规则和开发步骤,采用Java技术建设网上商城系统。 本设…

算法课程笔记——点积叉积

算法课程笔记——点积叉积

Kotlin设计模式:享元模式(Flyweight Pattern)

Kotlin设计模式:享元模式(Flyweight Pattern) 在移动应用开发中,内存和CPU资源是非常宝贵的。享元模式(Flyweight Pattern)是一种设计模式,旨在通过对象重用来优化内存使用和性能。本文将深入探…

docker不要乱改工作路径,可能啥都会丢

买的国内某云服务器,系统盘比较小,数据盘稍微大点,啥都安装好了才发现docker实例存在了系统盘里面,寻思挪一下吧,好家伙,挪完了啥都丢了,我是这样移动的。 1.先把docker停了 sudo systemctl …

2023年零信任落地关键词:整合、身份、普及

2023年,全球企业纷纷加快了落地零信任的步伐。虽然落地的功能、落地的场景不尽相同,但企业对零信任的诉求、落地零信任的优先级却殊途同归,不同的零信任产品的应用场景也日益明晰。 全面整合和协同运行,是2023年企业用户对零信任…

一文搞懂Linux多线程【上】

目录 🚩引言 🚩再次理解页表 🚩初识线程 🚩线程和pthread库 🚀线程创建 🚩线程的资源共享问题 🚩线程的优缺点 🚩引言 今天,我们开始学习Linux中的线程部分。Lin…

大语言模型(LLMs)能够进行推理和规划吗?

大语言模型(LLMs),基本上是经过强化训练的 n-gram 模型,它们在网络规模的语言语料库(实际上,可以说是我们文明的知识库)上进行了训练,展现出了一种超乎预期的语言行为,引…

awk练习

作业:监控内存,cpu和硬盘的根目录,超过80%提示用户,写成函数库的行,每天早上 的8.50分,执行一次脚本。 [roottest3 opt]# vim zuoye.sh #函数库yingpan () {YP$(df -h | awk NR2{print $5})if [[ $YP &…

在Ubuntu服务器上安装配置和优化Zerotier:一步步指南

嗨,大家好!今天我要在Ubuntu上部署和测试Zerotier。使用的是阿贝云的免费云服务器,这台免费云服务器真不错,1核CPU、1G内存、10G硬盘和5M带宽的配置,让我们在测试和开发中游刃有余。对一个奶爸黑客来说,阿贝…

Lodash-js工具库

1. Lodash 简介 Lodash 是一个现代 实用工具库,提供了许多有用的函数,帮助开发者处理常见的编程任务,如数组操作、对象处理、字符串处理等。Lodash 使得代码更简洁、更高效,极大地提高了开发效率。Lodash 的设计灵感来自于 Under…

react学习——09react中props属性

1、基本使用 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><!-- 移动端适配--><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>1_props基…

行业原型:智能资产管理平台-个人资产服务

​行业原型预览链接&#xff1a;&#xff08;请与班主任联系获取原型文档&#xff09; 文件类型&#xff1a;.rp 支持版本&#xff1a;Axrure RP 8 文档名称&#xff1a;金融&#xff1a;智能资产管理平台&#xff08;个人资产服务&#xff09; 文件大小&#xff1a;1.75 MB 智…

光伏发电项目是如何提高开发效率的?

随着全球对可再生能源需求的持续增长&#xff0c;光伏发电项目的高效开发成为关键。本文将深入探讨如何在实际操作中提高光伏发电项目的开发效率。 一、优化选址流程 1、数据收集与分析&#xff1a;利用卫星地图和遥感技术&#xff0c;收集目标区域的光照资源、地形地貌、阴影…

chrome 使用本地替换功能替换接口返回内容

前言 在web开发或测试过程中&#xff0c;我们经常会需要修改接口返回值来模拟数据进行开发或测试。 常用的方式一般通过抓包工具&#xff0c;如charles&#xff0c;或fildder 的功能。 例如我们可以使用charles打断点的方式&#xff0c;或者使用charles的map local 功能进行…