11.QLoRA微调ChatGLM3-6B

实战 QLoRA 微调 ChatGLM3-6B 大模型

实战 PEFT QLoRA ChatGLM3-6B

请添加图片描述

微调数据集 AdvertiseGen

请添加图片描述

AdvertiseGen 数据集获取

请添加图片描述

使用ChatGLM3-6b Tokenizer处理数据

关于ig nore_label_id 的设置:

在许多自然语言处理和机器学习框架中, ig nore_label_id 被设置为-100 是一种常见的约定。 这个特殊的值用千标记在计算损失函数时应该被忽略的目标标签。 让我们详细了解一下这个选择的原因:

  1. 损失函数忽略特定值:训练语言模型时, 损失函数(例如交叉嫡损失)通常只计算对千模型预测重要或关键的标签的损失。 在某些况下, 你可能不希望某些标签对损失计算产生影晌。 例如, 在序列到序列的模型中, 输入部分的标签通常被设置为一个忽略值, 因为只有输出部分的标签对千训练是重要的。
  2. 为何选择-100: 这个具体的值是基千实现细节选择的。 在 PyTorch 的交叉嫡损失函数中, 可以指定一个ig nore_index 参数。 当损失函数看到这个索引值时, 它就会忽略对应的输出标签。 使用-100 作为默认值是因为它是一个不太可能出现在标签中的数字(特别是在处理分类间题时, 标签通常是从0开始的正整数)。
  3. 标准化和通用性:由于这种做法在多个库和框架中被采纳, -100 作为忽略标签的默认值已经变得相对标准化, 这有助于维护代码的通用性和可读性。

总的来说, 将ig nore_label_id 设置为-100 是一种在计算损失时排除特定标签影晌的便捷方式。 这在处理特定类型的自然语言处理任务时非常有用, 尤其是在涉及序列生成或修改的任务中。

自定义模型新增Adapter

当新的热门transformer网络架构(新模型)发布时, Huggingface社区会尽力快速将它们添加到PEFT 中。

具体来说, 在初始化相应的微调配置类(例如 LoraConfig)时, 我们需要显式指定在哪些层新增适配器(Adapter), 并将其设置正确。

ref: https 😕/hugg i ngf a ce.co/docs/peft/deve loper:_gu id es/custom_models

PEFT适配模块设置

在PEFT库的constants.py文件中定义了不同的PEFT 方法, 在各类大模型上的微调适配模块。

通常, 名称相同的模型架构也类似, 应用微调方法时的适配器设置也几乎一致。

例如, 如果新模型架构是mis tral模型的变体, 并且您想应用LoRA微调。 在

TRANSFORMERS_MODELS_TO_LORA_TARGET_MODULES_MAPPING中 mis t ral包含[“q_proj”, 11v_proj” ]。

这表示说, 对千 mis tral模型, LoRA的target_modules通常是[“q_proj”, 11v_p「oj ” ]。

关千使用 num_train_epochs 时, 训练总步数 st eps 的计算方法

  • 训练总步数: total_steps = steps/epoch* num_train_epochs
  • 每个epoch的训练步数: steps/epoch= num_train_examples / (batch_size * gradient_accumulation_steps)

以adgen数据集为例计算

DatasetDict({ 
train: Dataset({ 
}) 
features: ['content', 'summary'], 
num_rows: 114599 
validation: Dataset({ 
}) 
}

代入超参数和配置进行计算:

num_train_epochs = 1 
num_train_examples = 114599 
batch_size = 16 
gradient_accumulation_steps = 4 
steps = num_train_epochs * num_train_examples / (batch_size * gradient_accumulation_steps) 
= 1 * 114599 / (16 * 4) 
= 1790

请添加图片描述

微调前后效果对比

ChatGLM-6B

输入:

类型#裙*版型#显瘦*风格#文艺*风格#简约*图案#印花*图案#撞色*裙下摆#压褶*裙长#连衣裙*裙领型#圆领

ChatGLM-6B微调前输出:
  • 版型:修身
  • 显瘦:True
  • 风格:文艺
  • 简约:True
  • 图案:印花
  • 撞色:True
  • 裙下摆:直筒或微喇
  • 裙长:中长裙
  • 连衣裙:True
ChatGLM-6B微调后输出:

一款简约而不简单的连衣裙, 采用撞色的印花点缀, 打造文艺气息, 简约的圆领, 修饰脸型。 衣袖和裙摆的压褶, 增添设计感, 修身的版型, 勾勒出窃究的身材曲线。

ChatGLM2-6B

输入:

类型#裙*版型#显瘦*风格#文艺*风格#简约*图案#印花*图案#撞色*裙下摆#压褶*裙长#连衣裙*裙领型#圆领

微调前:

这款裙子,版型显瘦,采用简约文艺风格,图案为印花和撞色设计,裙下摆为压褶裙摆,裙长为连衣裙,适合各种场合穿着,让你舒适自在。 圆领设计,优雅清新,让你在任何场合都充满自信。 如果你正在寻找一款舒适、 时尚、 优雅的裙子,不妨考虑这款吧!

微调后:

这款连衣裙简约的设计, 撞色印花点缀, 丰富了视觉, 上身更显时尚。 修身的版型, 贴合身形, 穿着舒适不束缚。 圆领的设计, 露出精致锁骨, 尽显女性优雅气质。 下摆压褶的设计, 增添立体感, 行走间更显飘逸。 前短后长的设计, 显得身材比例更加完美。 文艺的碎花设计, 更显精致

ChatGLM3-6B

input_text ='类型#裙*版型#显瘦*风格#文艺*风格#简约*图案#印花*图案#撞色*裙下摆#压褶*裙长护巠衣裙*裙领型#囡领'  
print(f'输入: \n{input_text}') 
tokenizer = AutoTokenizer.from_pretrained(config.base_model_name_or_path, trust_remote_code=True)

输入:

类型#裙*版型#显瘦*风格#文艺*风格#简约*图案#印花*图案#撞色*裙下摆#压褶*裙长#连衣裙*裙领型#圆领

response, history= base_model.chat(tokenizer=tokenizer, query=input_text} 
print(f'ChatGLM3-6B微调前: \n{response}'}
response, history= base_model.chat(tokenizer=tokenizer, query=input_text} 
print(f'ChatGLM3-6B微调前: \n{response}'}

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

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

相关文章

计算机网络实验(鲁东大学)-cisco-逃课

逃课脚本4-1第二关 以4-1 第二关为例 点开图形化界面,点开工具箱 点复制粘贴 把逃课代码复制粘贴进,点击保存 回到图形化界面,任意位置打开终端 点击shiftctrlv(其他方式粘贴进终端也可)后敲击回车,在…

[大模型]Phi-3-mini-4k-Instruct Lora 微调

本节我们简要介绍如何基于 transformers、peft 等框架,对 Phi-3-mini-4k-Instruct 模型进行 Lora 微调。Lora 是一种高效微调方法,深入了解其原理可参见博客:知乎|深入浅出 Lora。 这个教程会在同目录下给大家提供一个 nodebook 文件&#x…

sslh一键在一个端口上运行多个服务(KALI工具系列二十三)

目录 1、KALI LINUX 简介 2、sslh工具简介 3、信息收集 3.1 目标主机IP(win) 3.2 KALI的IP 4、操作示例 4.1 监听特定端口 4.2 配置SSH 4.3 配置apache 4.4 配置sshl 4.5 验证配置 5、总结 1、KALI LINUX 简介 Kali Linux 是一个功能强大、…

基于线性核函数的SVM数据分类算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于线性核函数的SVM数据分类算法matlab仿真,通过程序产生随机的二维数据,然后通过SVM对数据进行分类,SVM通过编程实现&#x…

[大模型]Phi-3-mini-4k-instruct langchain 接入

环境准备 在 autodl 平台中租赁一个 3090 等 24G 显存的显卡机器,如下图所示镜像选择 PyTorch–>2.0.0–>3.8(ubuntu20.04)–>11.8 。 接下来打开刚刚租用服务器的 JupyterLab,并且打开其中的终端开始环境配置、模型下载和运行演示。 创建工作…

RabbitMQ实践——配置Prometheus和Grafana报表

大纲 启用rabbitmq_prometheus插件安装启动Prometheus创建用户下载并解压修改配置启动 安装启动grafana安装启动配置数据源 在《RabbitMQ实践——在Ubuntu上安装并启用管理后台》中我们已经安装成功RabbitMQ及其管理后台。在此基础上,我们将打通它和Prometheus、Gra…

PHP地方门户分类信息网站源码讯客分类信息系统源码(含手机版)

源码介绍 1.上传程序到网站根目录,访问http://域名/install/index.php 进行安装,不要直接打开网址,先直接安装; 2.安装完成后 后台恢复数据即可 默认帐号密码都是admin http://域名/admin/ 3.不要删除任何文件,因为删除文件或者修改代码可能造成错误 运…

渗透测试练习题解析 6 (CTF web)

1、[HCTF 2018]admin 1 考点:二次注入 先注册一个账号看看,注册 admin 会提示该用户名已存在,那我们就换一个用户名 观察页面功能,存在一个修改密码,开始的思路是想看看能否通过该密码功能抓包然后修改用户名为 admin …

键盘、鼠标、轴体选购指南

起因 买了块27寸的屏幕msi,一旦入坑爬不起来了。 这不是要配个键盘么。 鼠标的左键也不够灵敏,不知道是电池不足还是使用时间太久,也萌生换的念头。有一个重要原因也是跟电脑和鼠标垫整体不搭。 搜集信息 原本的一个键盘是ikbc国产牌子&am…

Intellij IDEA开发Android项目打包生成APK

在 IntelliJ IDEA 左上方中选择 “Build” -> “Generate Signed Bundle / APK…”选择“APK”——“Next”——“Create New…”(Password随便填123456即可) “Next”——选择release(APK生成后默认存放在本项目的release文件夹里&#x…

【产品经理】订单处理2

本次讲解订单初始化成功到ERP系统过程中的后续环节。 一、根据客服备注更新订单信息 初始化订单过程中,若订单中的客服备注信息对订单进行更新,包括可能改收货信息、改商品、加赠品、指定快递等。 注意:更新订单的过程中要注意订单当前状…

Python | Leetcode Python题解之第150题逆波兰表达式求值

题目: 题解: class Solution:def evalRPN(self, tokens: List[str]) -> int:op_to_binary_fn {"": add,"-": sub,"*": mul,"/": lambda x, y: int(x / y), # 需要注意 python 中负数除法的表现与题目不一…

电子制造业数字化整体解决方案

电子制造行业有特殊的着重点: 高精度要求:电子制造需要极高的精度和质量控制,因为电子组件和电路板的尺寸通常非常小,且对错误和缺陷非常敏感。 快速技术迭代:电子行业的技术迅速发展,产品生命周期短&…

刷题笔记2:用位运算找“只出现一次的一个数”

1. & 和 | 的基本操作 137. 只出现一次的数字 II - 力扣(LeetCode) 先对位运算的操作进行复习: 1、>> 右移操作符 移位规则:⾸先右移运算分两种: 1. 逻辑右移:左边⽤0填充,右边丢…

基于机器学习和奇异值分解SVD的电池剩余使用寿命预测(Python)

采用k-最近邻KNN和随机森林算法建立预测模型。 import pandas as pd from sklearn.model_selection import train_test_split from sklearn.svm import SVC # Support Vector Classifier from sklearn.preprocessing import StandardScaler from sklearn.metrics import accu…

LLaMA Factory多卡微调的实战教程(持续更新)

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

Apache HttpClient总览

一、重大版本 Apache HttpClient 4.x 系列 • HttpClient 4.0(发布于2008年左右):这是一个重要的里程碑,标志着HttpClient从Jakarta Commons项目转移到Apache HttpComponents项目。4.0版进行了大量的重构,引入了新…

【OpenVINO™】使用 OpenVINO™ C++ 异步推理接口部署YOLOv8 ——在Intel IGPU 上实现80+FPS视频推理

​ OpenVINO Runtime支持同步或异步模式下的推理。Async API的主要优点是,当设备忙于推理时,应用程序可以并行执行其他任务(例如,填充输入或调度其他请求),而不是等待当前推理首先完成。 当我们使用异步API…

ubuntu20.04设置共享文件夹

ubuntu20.04设置共享文件夹 一,简介二,操作步骤1,设置Windows下的共享目录2,挂载共享文件夹3,测试是否挂载成功 一,简介 在公司电脑上,使用samba设置共享文件夹,IT安全部门权限不通…

PythonWeb项目-Django+vue宾馆管理系统功能介绍

本项目源码:基于Python的Django-vue宾馆管理系统源码-参考文档资源-CSDN文库 项目关键技术 开发工具:Pycharm 编程语言: Python 数据库: MySQL5.7 框架:Django、vue 前端:Vue、ElementUI 关键技术:Django、vue、MYSQL…