单卡3090 选用lora微调ChatGLM3-6B

news2024/9/21 15:26:55

环境配置

Python 3.10.12
transformers 4.36.2
torch 2.0.1

下载demo代码

  1. 在官方网址https://github.com/THUDM/ChatGLM3/blob/main/finetune_demo 下载demo代码
  2. cd 进入文件夹 pip install -r requirements.txt 安装一些包
    在这里插入图片描述

基本知识

SFT 全量微调: 4张显卡平均分配,每张显卡占用 48346MiB 显存
P-TuningV2 微调: 1张显卡,占用 18426MiB 显存
LORA 微调: 1张显卡,占用 14082MiB 显存

微调数据文件格式因需求不同而有所差别:
微调模型的对话能力
微调模型的对话和工具能力

此处demo选用AdvertiseGen 数据集
新建convert.py 将AdvertiseGen 转为AdvertiseGen _fix

convert.py 代码官方给了,代码如下:

import json
from typing import Union
from pathlib import Path


def _resolve_path(path: Union[str, Path]) -> Path:
    return Path(path).expanduser().resolve()


def _mkdir(dir_name: Union[str, Path]):
    dir_name = _resolve_path(dir_name)
    if not dir_name.is_dir():
        dir_name.mkdir(parents=True, exist_ok=False)


def convert_adgen(data_dir: Union[str, Path], save_dir: Union[str, Path]):
    def _convert(in_file: Path, out_file: Path):
        _mkdir(out_file.parent)
        with open(in_file, encoding='utf-8') as fin:
            with open(out_file, 'wt', encoding='utf-8') as fout:
                for line in fin:
                    dct = json.loads(line)
                    sample = {'conversations': [{'role': 'user', 'content': dct['content']},
                                                {'role': 'assistant', 'content': dct['summary']}]}
                    fout.write(json.dumps(sample, ensure_ascii=False) + '\n')

    data_dir = _resolve_path(data_dir)
    save_dir = _resolve_path(save_dir)

    train_file = data_dir / 'train.json'
    if train_file.is_file():
        out_file = save_dir / train_file.relative_to(data_dir)
        _convert(train_file, out_file)

    dev_file = data_dir / 'dev.json'
    if dev_file.is_file():
        out_file = save_dir / dev_file.relative_to(data_dir)
        _convert(dev_file, out_file)


convert_adgen('data/AdvertiseGen', 'data/AdvertiseGen_fix')

最后运行完convert.py ,会出现如下图格式:在这里插入图片描述

数据集eg. :
Old:{“content”: “类型#上衣材质#牛仔布颜色#白色风格#简约图案#刺绣衣样式#外套衣款式#破洞”, “summary”: “简约而不简单的牛仔外套,白色的衣身十分百搭。衣身多处有做旧破洞设计,打破单调乏味,增加一丝造型看点。衣身后背处有趣味刺绣装饰,丰富层次感,彰显别样时尚。”}
New:{“conversations”: [{“role”: “user”, “content”: “类型#裙*裙长#半身裙”}, {“role”: “assistant”, “content”: “这款百搭时尚的仙女半身裙,整体设计非常的飘逸随性,穿上之后每个女孩子都能瞬间变成小仙女啦。料子非常的轻盈,透气性也很好,穿到夏天也很舒适。”}]}

下载ChatGLM3-6B模型

由于chatglm3-6b 是用modelscope 下载
姑新建python文件,内容如下:

from modelscope import snapshot_download
model_dir = snapshot_download("ZhipuAI/chatglm3-6b", revision = "v1.0.0")
print(model_dir)

所以/media/zr/Data/Models/LLM/chatglm3-6b == print(model_dir)

微调,执行:

新建sh文件,内容如下:

CUDA_VISIBLE_DEVICES=0 NCCL_P2P_DISABLE="1" NCCL_IB_DISABLE="1" python finetune_hf.py  data/AdvertiseGen_fix  /media/zr/Data/Models/LLM/chatglm3-6b  configs/lora.yaml

注意此处的/media/zr/Data/Models/LLM/chatglm3-6b 要换成 你自己下载的chatglm3-6b的路径

使用微调的数据集进行推理:执行

新建sh文件,内容如下:

 CUDA_VISIBLE_DEVICES=0 NCCL_P2P_DISABLE="1" NCCL_IB_DISABLE="1" python inference_hf.py output/checkpoint-3000/ --prompt "类型#裙*版型#显瘦*材质#网纱*风格#性感*裙型#百褶*裙下摆#压褶*裙长#连衣裙*裙衣门襟#拉链*裙衣门襟#套头*裙款式#拼接*裙款式#拉链*裙款式#木耳边*裙款式#抽褶*裙款式#不规则"

输出:这款连衣裙采用了网纱拼接的压褶设计,视觉上很显瘦,搭配木耳边套头设计,更具有性感的气质。不规则的裙摆,更具有灵动性。而拉链设计,方便穿脱。百褶裙摆,优雅而灵动。

如图所示:
在这里插入图片描述

参考:

官方教程十分详细,值得一看,且里面还有许多参数说明。
https://github.com/THUDM/ChatGLM3/blob/main/finetune_demo/README.md
https://github.com/THUDM/ChatGLM3/blob/main/finetune_demo/lora_finetune.ipynb

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

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

相关文章

13年计算机考研408-数据结构

解析: 这个降序链表不影响时间复杂度,因为是链表,所以你想要升序就使用头插法,你想要降序就使用尾插法。 然后我们来分析一下最坏的情况是什么样的。 因为m和n都是两个有序的升序序列。 如果刚好m的最大值小于n的最小值&#xff0…

AI宠物拟人化新玩法,教你如何用0成本打造爆款创意内容!

近年来,随着AI技术的快速发展,各种创新玩法不断涌现,尤其是在内容创作领域,AI带来的变革尤为显著。 **其中,宠物拟人化逐渐成为社交媒体上的一大热门话题。**通过AI生成工具,我们不仅可以将宠物拟人化&…

Snapchat API 访问:Objective-C 实现示例

Snapchat 是一个流行的社交媒体平台,它允许用户发送和接收短暂存在的图片和视频。对于开发者来说,访问 Snapchat API 可以为应用程序添加独特的社交功能。本文将介绍如何在 Objective-C 中实现对 Snapchat API 的访问,并提供一个详细的代码示…

GD32F103单片机-EXTI外部中断

GD32F103单片机-EXTI外部中断 一、EXTI及NVIC介绍二、编程实验2.1 相关库函数2.2 实验代码 一、EXTI及NVIC介绍 GD32和STM32的EXTI基本相似,具体见STM32F1单片机-外部中断GD32的EXTI包括20个相互独立的边沿检测电路请求产生中断或事件,4位优先级配置寄存…

热像仪是如何工作的?

红外热像仪是一种非接触式设备,能够检测红外能量(热量)并将其转变成可见光图像。让我们深入了解红外热像仪的科学原理,以及借助红外热像仪我们能够看到的隐形世界。 捕捉红外波,而不是可见光 首先必须清楚的是&#…

windows环境下配置MySQL主从启动失败 查看data文件夹中.err发现报错unknown variable ‘log‐bin=mysql‐bin‘

文章目录 问题解决方法 问题 今天在windows环境下配置MySQL主从同步,在修改my.ini文件后发现MySQL启动失败了 打开my.ini检查参数发现没有问题 [mysqld] #开启二进制日志,记录了所有更改数据库数据的SQL语句 log‐bin mysql‐bin #设置服务id&#x…

Vue(13)——router-link

router-link vue-router提供了一个全局组件router-link(取代a标签) 能跳转,配置to属性指定路径(必须)。本质还是a标签。默认会提供高亮类名,可以直接设置高亮样式 右键检查,发现多了两个类: 可以直接写样式…

Java数据结构专栏介绍

专栏导读 在软件工程的世界里,数据结构是构建高效、可靠程序的基石。"Java数据结构"专栏致力于为Java开发者提供一个全面、深入的学习平台,帮助他们掌握各种数据结构的原理、实现及其在Java中的应用。通过这个专栏,读者将能够提升…

IPsec-Vpn

网络括谱图 IPSec-VPN 配置思路 1 配置IP地址 FWA:IP地址的配置 [FW1000-A]interface GigabitEthernet 1/0/0 [FW1000-A-GigabitEthernet1/0/0]ip address 10.1.1.1 24 [FW1000-A]interface GigabitEthernet 1/0/2 [FW1000-A-GigabitEthernet1/0/2]ip address

分布式Id生成策略-美团Leaf

之前在做物流相关的项目时候,需要在分布式系统生成运单的id。 1.需求: 1.全局唯一性:不能出现重复的ID。(基本要求) 2.递增:大多数关系型数据库(如 MySQL)使用 B 树作为索引结构。…

web前端-HTML常用标签-综合案例

如图&#xff1a; 代码如下&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document&…

mysql时间戳格式化yyyy-mm-dd

格式化到 年月日 # 将时间换成列名就行&#xff1b;当前是秒级时间戳&#xff0c;如果是毫秒的 / 1000即可 # SELECT FROM_UNIXTIME(1602668106666.777888999 / 1000,%Y-%m-%d) AS a; # SELECT FROM_UNIXTIME(列名 / 1000,%Y-%m-%d) AS a; SELECT FROM_UNIXTIME(1602668106.666…

Linux 系统进程理解——标识符,状态

目录 进程描述-pcb 并行与并发 概念&#xff1a; 课本概念&#xff1a;程序的一个执行实例&#xff0c;正在执行的程序等 内核观点&#xff1a;担当分配系统资源&#xff08;CPU时间&#xff0c;内存&#xff09;的实体 这短短的两行就概括了进程&#xff0c;但是进程的内在…

Mysql分组取最新一条记录

文章目录 Mysql分组取最新一条记录1. 数据准备1. 方法1&#xff1a;使用子查询获取每个组的最大时间戳&#xff0c;然后再次查询获取具体记录&#xff08;如果时间戳是唯一的&#xff09;2. 方法2&#xff1a;使用窗口函数&#xff08;MySQL 8.0&#xff09;3. 方法3&#xff1…

ClickHouse 与 Quickwit 集成实现高效查询

1. 概述 在当今大数据分析领域&#xff0c;ClickHouse 作为一款高性能的列式数据库&#xff0c;以其出色的查询速度和对大规模数据的处理能力&#xff0c;广泛应用于在线分析处理 (OLAP) 场景。ClickHouse 的列式存储和并行计算能力使得它在处理结构化数据查询时极具优势&…

F28335 的外部中断实验

1 外部中断介绍 1.1 外部中断简介 1.2 外部中断相关寄存器 (1)外部中断控制寄存器(XINTnCR) (2)外部 NMI 中断控制寄存器

多模态大模型MiniCPM-V技术学习

目前性价比最高的多模态模型 Minicpm-V-2.6参数8B&#xff0c;int4版本推理显存仅7GB&#xff0c;并且在幻觉数据集上效果好于其他模型&#xff0c;测试下来效果非常好&#xff0c;官方演示里面还给出了手机上端侧运行的图片和视频推理示例 p.s.Qwen2-VL和Minicpm-V-2.6头对头…

从小白到大神:C语言预处理与编译环境的完美指南(上)

从小白到大神&#xff1a;C语言预处理与编译环境的完美指南&#xff08;下&#xff09;-CSDN博客 新鲜出炉~~&#x1f446;&#x1f446;&#x1f446;&#x1f446;&#x1f446;下篇在这里&#x1f446;&#x1f446;&#x1f446;&#x1f446;&#x1f446;&#x1f446;&…

echarts图表刷新

图表制作完成&#xff0c;点击刷新图标&#xff0c;可以刷新。 <div class"full"><div id"funnel" class"normal"></div><div class"refreshs"><div class"titles_pic"><img src"./…

数据飞轮崛起:数据中台真的过时了吗?

一、数据中台的兴起与困境 随着大数据技术的不断发展&#xff0c;我见证了企业数据能力建设的演变。从数据中台的兴起&#xff0c;到如今数据飞轮模式的热议&#xff0c;企业的数据管理理念经历了巨大的变化。起初&#xff0c;数据中台作为解决数据孤岛、打破部门壁垒的“救星…