当前位置: 首页 > news >正文

基于LoRA和AdaLoRA微调Qwen1.5-0.5B-Chat

 本文只开放基于LoRA和AdaLoRA微调代码,具体技术可以自行学习。

Qwen1.5-0.5B-Chat权重路径:https://huggingface.co/Qwen/Qwen1.5-0.5B

数据集路径:https://github.com/DB-lost/self-llm/blob/master/dataset/huanhuan.json

1. 知识点

LoRA, AdaLoRA技术

具体技术可以去看论文

Python关键包版本【我使用python版本是:3.10.14】

torch  2.2.2

transformers  4.39.3

peft                 0.9.0

accelerate       0.29.3

2. 项目目录

data 存放训练数据

models/Qwen1.5-0.5B-Chat 存放 Qwen1.5-0.5B-Chat权重

output: 存放训练过程保存的模型权重

inference.py 推理文件

train_adalora.py AdaLoRA 微调代码

train_lora.py LoRA 微调代码

merge.py LoRA权重和Qwen1.5-0.5B-Chat权重合并脚本

其他文件忽略

3. LoRA微调代码

train_adalora.py 具体代码:

# coding:utf-8
"""LoRA Finetune Qwen1.5-0.5B-Chat"""from transformers import AutoTokenizer, AutoConfig, AutoModelForCausalLM, TrainingArguments, Trainer
from torch.utils.data import Dataset
import torch
from peft import LoraConfig, TaskType, get_peft_model
from typing import Dict
import transformers
import json
from transformers.trainer_pt_utils import LabelSmootherIGNORE_TOKEN_ID = LabelSmoother.ignore_indexmax_len = 512
data_json = json.load(open("./data/huanhuan.json", 'r', encoding='utf-8'))
train_json = []
lazy_preprocess = True
gradient_checkpointing = Truedef print_model_allarguments_name_dtype(model):for n, v in model.named_parameters():if v.requires_grad:print(f"trainable model arguments:{n}--{v.dtype}--{v.shape}")else:print(f"not trainable model arguments:{n}--{v.dtype}--{v.shape}")config = AutoConfig.from_pretrained("./models/Qwen1.5-0.5B-Chat",trust_remote_code=True)# kv cache 在推理的时候才用,训练时候不用
config.use_cache = Falsetokenizer = AutoTokenizer.from_pretrained("./models/Qwen1.5-0.5B-Chat",model_max_length=max_len,padding_side="right",use_fast=False
)model = AutoModelForCausalLM.from_pretrained("./models/Qwen1.5-0.5B-Chat",torch_dtype=torch.bfloat16,device_map="auto",config=config,low_cpu_mem_usage=True
)print("Original Model: ")
print_model_allarguments_name_dtype(model)config = LoraConfig(task_type=TaskType.CAUSAL_LM,target_modules=["q_proj", "k_proj", "v_proj", "o_proj"],r=64, # Lora 秩lora_alpha=16, # Lora alaph,具体作用参见 Lora 原理lora_dropout=0.05, # Dropout 比例bias='none'
)
model = get_peft_model(model, config)
print_model_allarguments_name_dtype(model)
model.print_trainable_parameters()# 不保存激活值
if gradient_checkpointing:model.enable_input_require_grads()def preprocess(sources,tokenizer: transformers.PreTrainedTokenizer,max_len: int,system_message: str = "You are a helpful assistant."
) -> Dict:roles = {"user": "<|im_start|>user", "assistant": "<|im_start|>assistant"}im_start = tokenizer('<|im_start|>').input_ids[0]im_end = tokenizer('<|im_end|>').input_ids[0]nl_tokens = tokenizer('\n').input_ids_system = tokenizer('system').input_ids + nl_token

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 每日一练 | Day 4
  • 逆向API接口加解密技术解析归纳
  • sais复杂推理能力评估笔记(一):baseline简介
  • 《亿级流量系统架构设计与实战》第二章 通用的高并发架构设计
  • jmeter 重试机制
  • 抽象代数精解【5】
  • 基于配置实现RoaringBitMap的交、差、并集处理
  • JavaSE第11篇:设计模式
  • Servlet(2)
  • C语言 | Leetcode C语言题解之第321题拼接最大数
  • 免费自动化AI视频剪辑工具
  • 深入解析Apache Flink中的事件时间与处理时间
  • 使用TensorRT对YOLOv8模型进行加速推理
  • 解决方案:Cannot write to ‘torch-2.0.1+cu118-cp310-cp310-linux_x86_64.whl.3’ (成功).
  • 我的256天创作纪念日
  • 4个实用的微服务测试策略
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • ECMAScript入门(七)--Module语法
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • js ES6 求数组的交集,并集,还有差集
  • PaddlePaddle-GitHub的正确打开姿势
  • Puppeteer:浏览器控制器
  • SwizzleMethod 黑魔法
  • 高程读书笔记 第六章 面向对象程序设计
  • 诡异!React stopPropagation失灵
  • 计算机在识别图像时“看到”了什么?
  • 前端js -- this指向总结。
  • 软件开发学习的5大技巧,你知道吗?
  • 异步
  • 再次简单明了总结flex布局,一看就懂...
  • 栈实现走出迷宫(C++)
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • ​一帧图像的Android之旅 :应用的首个绘制请求
  • # windows 安装 mysql 显示 no packages found 解决方法
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • $L^p$ 调和函数恒为零
  • (二十六)Java 数据结构
  • (附源码)springboot码头作业管理系统 毕业设计 341654
  • (强烈推荐)移动端音视频从零到上手(上)
  • (一)kafka实战——kafka源码编译启动
  • .NET 4.0中使用内存映射文件实现进程通讯
  • .NET Core 实现 Redis 批量查询指定格式的Key
  • .Net Core 微服务之Consul(二)-集群搭建
  • .NET NPOI导出Excel详解
  • .NET框架设计—常被忽视的C#设计技巧
  • .so文件(linux系统)
  • @我的前任是个极品 微博分析
  • [ C++ ] STL---仿函数与priority_queue
  • [51nod1610]路径计数
  • [AHOI2009]中国象棋 DP,递推,组合数
  • [C#基础]说说lock到底锁谁?
  • [C++]类和对象【上篇】
  • [CTO札记]盛大文学公司名称对联
  • [Enterprise Library]调用Enterprise Library时出现的错误事件之关闭办法
  • [hdu 2896] 病毒侵袭 [ac自动机][病毒特征码匹配]