chatGLM3微调

文章目录

  • 一、问答数据集生成器使用
    • 设置问题
    • 启动使用
    • 产出效果
  • 二、进行微调
    • 第一步:下载模型
    • 第二步:项目准备
      • 2.1 下载项目
      • 2.2 然后使用 pip 安装依赖
      • 2.3 开始
    • 第三步进行微调
      • 3.1安装相关依赖
      • 3.2准备数据集,并且上传
      • 3.3对数据集进行预处理
      • 3.4 进行微调
    • 第四步:进行测试
  • 四、微调2
    • 4.1下载LAMA
    • 4.2搭建环境
    • 4.3修改数据集
    • 4.4 开始训练
        • 4.4.1页面训练
        • 4.4.2直接脚本微调
    • 4.5模型合并
      • 命令行
      • 页面
    • 4.6 进行测试
      • 1、API 服务测试
      • 2、命令行测试
      • 3、浏览器测试
      • 4、web端进行测试

一、问答数据集生成器使用

感谢开源
项目地址:https://github.com/huang1332/finetune_dataset_maker.git
备用地址
https://gitee.com/yang_hu_cheng/finetune_dataset_maker.git

设置问题

在这里插入图片描述

启动使用

pip install streamlit
pip install openaistreamlit run dataset.py --server.port 2323

在这里插入图片描述

产出效果

在这里插入图片描述

二、进行微调

第一步:下载模型

  • local_dir_root :保存位置
  • ZhipuAI/chatglm3-6b:需要下载的模型
from modelscope.hub.snapshot_download import snapshot_downloadlocal_dir_root = "/root/autodl-tmp/models_from_modelscope"
snapshot_download('ZhipuAI/chatglm3-6b', cache_dir=local_dir_root)

第二步:项目准备

2.1 下载项目

git clone https://github.com/THUDM/ChatGLM3.git
cd ChatGLM3

2.2 然后使用 pip 安装依赖

可以创建一个环境(可省)

conda create --name chatchat python=3.10
conda activate chatchat

安装依赖

pip install -r requirements.txt

调整一下就可以用了
在这里插入图片描述

2.3 开始

启动第二个;好看一些

nohup streamlit run web_demo2.py > output.log &

在这里插入图片描述

也可以启动第一个

nohup python web_demo.py > output.log &

在这里插入图片描述

第三步进行微调

3.1安装相关依赖

pip install transformers==4.30.2 accelerate sentencepiece astunparse deepspeed

3.2准备数据集,并且上传

两个文件夹里面的内容都是一样的

在这里插入图片描述

 {"content": "类型#裤*版型#宽松*风格#性感*图案#线条*裤型#阔腿裤", "summary": "宽松的阔腿裤这两年真的吸粉不少,明星时尚达人的心头爱。毕竟好穿时尚,谁都能穿出腿长2米的效果宽松的裤腿,当然是遮肉小能手啊。上身随性自然不拘束,面料亲肤舒适贴身体验感棒棒哒。系带部分增加设计看点,还让单品的设计感更强。腿部线条若隐若现的,性感撩人。颜色敲温柔的,与裤子本身所呈现的风格有点反差萌。"}

在这里插入图片描述
在这里插入图片描述

3.3对数据集进行预处理

./scripts/format_advertise_gen.py --path "AdvertiseGen/train.json"

在这里插入图片描述
出现这个说明处理好了

在这里插入图片描述

预处理结束后其实就是对格式进行改造
在这里插入图片描述

3.4 进行微调

  • MAX_STEP(就是让大模型重复多少遍死记硬背)

  • BASE_MODEL_PATH:模型路径(最后有个\)

在这里插入图片描述
在这里插入图片描述

./scripts/finetune_ds_multiturn.sh  # 全量微调
./scripts/finetune_pt_multiturn.sh  # P-Tuning v2 微调
  1. 全量微调:

./scripts/finetune_ds_multiturn.sh 中的配置(MAX_SEQ_LEN=2048, DEV_BATCH_SIZE=16, GRAD_ACCUMULARION_STEPS=1)恰好用满 4 * 80GB 显存。

这里就是用P-Tuning v2 微调

./scripts/finetune_pt_multiturn.sh

第四步:进行测试

python inference.py \--pt-checkpoint "/root/autodl-tmp/ChatGLM3-New/finetune_demo/output/advertise_gen_pt-20231121-175741-128-2e-2/" \--model /root/autodl-tmp/models_from_modelscope/ZhipuAI/chatglm3-6b/

微调成功。撒花
在这里插入图片描述

四、微调2

LLaMA

4.1下载LAMA

git clone https://github.com/hiyouga/LLaMA-Factory.git

4.2搭建环境

conda create -n llama_factory python=3.10
conda activate llama_factory
cd LLaMA-Factory
pip install -r requirements.txt

4.3修改数据集

编辑|新建数据集,可以选择这个,也可以自建
在这里插入图片描述
里面是json格式
在这里插入图片描述

查看数据集
在这里插入图片描述

4.4 开始训练

4.4.1页面训练

使用 启动 LLaMA Board。(该模式目前仅支持单卡训练)
默认端口号是7860

cd /root/autodl-tmp/LLaMA-Factory
CUDA_VISIBLE_DEVICES=0 python src/train_web.py 

在这里插入图片描述

4.4.2直接脚本微调
CUDA_VISIBLE_DEVICES=0 python src/train_bash.py \--stage sft \--model_name_or_path /root/autodl-tmp/models_from_modelscope/ZhipuAI/chatglm3-6b \--do_train True \--finetuning_type lora \--template chatglm3 \--flash_attn False \--shift_attn False \--dataset_dir data \--dataset self_cognition \--cutoff_len 1024 \--learning_rate 5e-05 \--num_train_epochs 3.0 \--max_samples 100000 \--per_device_train_batch_size 1 \--gradient_accumulation_steps 4 \--lr_scheduler_type cosine \--max_grad_norm 1.0 \--logging_steps 5 \--save_steps 100 \--warmup_steps 336 \--neft_alpha 0 \--train_on_prompt True \--upcast_layernorm False \--lora_rank 8 \--lora_dropout 0.1 \--lora_target query_key_value \--resume_lora_training True \--output_dir saves/ChatGLM3-6B-Chat/lora/2023-11-22-11-02-17 \--fp16 True \--val_size 0.247 \--evaluation_strategy steps \--eval_steps 100 \--load_best_model_at_end True \--plot_loss True 
CUDA_VISIBLE_DEVICES=0 python src/train_bash.py \--stage sft \--model_name_or_path /root/autodl-tmp/models_from_modelscope/ZhipuAI/chatglm3-6b/ \--do_train \--overwrite_output_dir \--template chatglm3 \

4.5模型合并

命令行

  1. model_name_or_path 原始模型路径
  2. template 模板
  3. finetuning_type 微调类型
  4. checkpoint_dir 训练模型结果
  5. export_dir 导出文件夹
python src/export_model.py \--model_name_or_path path_to_llama_model \--template default \--finetuning_type lora \--checkpoint_dir path_to_checkpoint \--export_dir path_to_export

举例

python src/export_model.py \--model_name_or_path /root/autodl-tmp/models_from_modelscope/ZhipuAI/chatglm3-6b/ \--template chatglm3 \--finetuning_type lora \--checkpoint_dir /root/autodl-tmp/LLaMA-Factory/export_chatglm3 \--export_dir lora_merge_chatglm3 

页面

在这里插入图片描述

4.6 进行测试

直接使用合并的模型
就不要用checkpoint_dir参数

1、API 服务测试

python src/api_demo.py \--model_name_or_path path_to_llama_model \--template default \--finetuning_type lora \--checkpoint_dir path_to_checkpoint

2、命令行测试

python src/cli_demo.py \--model_name_or_path path_to_llama_model \--template default \--finetuning_type lora \--checkpoint_dir path_to_checkpoint

举例

python src/cli_demo.py \--model_name_or_path  /root/autodl-tmp/models_from_modelscope/ZhipuAI/chatglm3-6b/ \--template chatglm3 \--finetuning_type lora \--checkpoint_dir /root/autodl-tmp/LLaMA-Factory/saves/ChatGLM3-6B-Chat/lora/2023-11-22-11-02-17

3、浏览器测试

python src/web_demo.py \--model_name_or_path path_to_llama_model \--template default \--finetuning_type lora \--checkpoint_dir path_to_checkpoint

4、web端进行测试

刷新模型断点,选择训练好的模型
在这里插入图片描述

选择chat

在这里插入图片描述

加载模型

在这里插入图片描述
结果产出
在这里插入图片描述

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

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

相关文章

如何使用技术SEO来优化评论

你在网上购买吗?我的意思是,在当今时代,谁不这样做?作为买家,无论您想购买什么,您都了解全面和高质量评论的价值。这是您在决定是否购买产品时考虑的重要因素。 这就是为什么许多人在网上购物之前使用评论…

移动端click事件、touch事件、tap事件的区别

在移动端,有三种常见的事件类型,click事件、touch事件、tap事件。它们的区别如下: click事件:click事件是在用户点击屏幕的时候触发,如果是移动设备,则会在用户点击屏幕的同时触发touch事件。但是&#xff…

【开源】基于Vue和SpringBoot的康复中心管理系统

项目编号: S 056 ,文末获取源码。 \color{red}{项目编号:S056,文末获取源码。} 项目编号:S056,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 普通用户模块2.2 护工模块2.3 管理员…

uni-app中vue3+setup实现下拉刷新、上拉加载更多效果

在小程序或各类app中,下拉刷新和上拉加载更多是极为常见和使用非常频繁的两个功能,通过对这两个功能的合理使用可以极大的方便用户进行操作。 合理的设计逻辑才能更容易挽留住用户,因为这些细节性的小功能点就变得极为重要起来。 那么在uni…

基于WEB的停车场管理系统的设计和实现【附源码】

基于WEB的停车场管理系统的设计和实现 摘 要 随着现代社会的快速发展,人民生活水平快速提高,汽车的数量飞速增加,与此同时停车问题也越来越受到人们的关注,为了实现对停车场进行有效的管理,结合一些停车场的模式和现状…

游戏被攻击了怎么办

随着网络技术和网络应用的发展,网络安全问题显得越来越重要,在创造一个和谐共赢的互联网生态环境的路途中总是会遇到各种各样的问题。最常见的当属于DDOS攻击(Distributed Denial of Service)即分布式阻断服务。由于容易实施、难以…

【LeetCode刷题】--40.组合总和II

40.组合总和II 本题详解&#xff1a;回溯算法 class Solution {public List<List<Integer>> combinationSum2(int[] candidates, int target) {int len candidates.length;List<List<Integer>> res new ArrayList<>();if (len 0) {return re…

深度学习之基于YoloV5车辆和行人目标检测系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介YOLOv5 简介YOLOv5 特点 车辆和行人目标检测系统 二、功能三、系统四. 总结 一项目简介 # 深度学习之基于 YOLOv5 车辆和行人目标检测系统介绍 深度学习在…

2023 年 亚太赛 APMCM 国际大学生数学建模挑战赛 |数学建模完整代码+建模过程全解全析

当大家面临着复杂的数学建模问题时&#xff0c;你是否曾经感到茫然无措&#xff1f;作为2022年美国大学生数学建模比赛的O奖得主&#xff0c;我为大家提供了一套优秀的解题思路&#xff0c;让你轻松应对各种难题。 cs数模团队在亚太赛 APMCM前为大家提供了许多资料的内容呀&…

【西行纪年番】孙悟空对战阴界王,素衣奄奄一息,巨灵拳霸气一击

Hello,小伙伴们&#xff0c;我是拾荒君。 《西行纪年番》第20集已更新。为了救回素衣&#xff0c;孙悟空想尽办法&#xff0c;最后他拜托沙悟净帮忙&#xff0c;终于成功把自己传送到阴界。原来&#xff0c;素衣的魂魄被阴界王藏在了他制造的人偶之中。沙悟净提醒孙悟空必须在…

8.2 Windows驱动开发:内核解锁与强删文件

在某些时候我们的系统中会出现一些无法被正常删除的文件&#xff0c;如果想要强制删除则需要在驱动层面对其进行解锁后才可删掉&#xff0c;而所谓的解锁其实就是释放掉文件描述符&#xff08;句柄表&#xff09;占用&#xff0c;文件解锁的核心原理是通过调用ObSetHandleAttri…

Axios使用方式

ajax是JQUERY封装的XMLHttprequest用来发送http请求 Axios简单点说它就是一个js库,支持ajax请求,发送axios请求功能更加丰富,丰富在哪不知道 1.npm使用方式 vue项目中 npm install axios 2.cdn方式 <script src"https://unpkg.com/axios/dist/axios.min.js">…

【三维几何学习】自制简单的网格可视化软件 — Mesh Visualization

自制简单的网格可视化软件 — Mesh Visualization 引言一、整体框架1.1 三角形网格1.2 界面管理1.3 VTK可视化界面 二、核心源码2.1 三角形网格&#xff1a;TriMesh类2.2 界面Widget_Mesh_Manager2.3 VTK可视化2.4 main 引言 使用PyQt自制简单的网格可视化软件 - 视频展示 本是…

Node.js入门指南(一)

目录 Node.js入门 什么是Node.js Node.js的作用 Node.js安装 Node.js编码注意事项 Buffer(缓冲器&#xff09; 定义 使用 fs模块 概念 文件写入 文件读取 文件移动与重命名 文件删除 文件夹操作 查看资源状态 路径问题 path模块 Node.js入门 什么是Node.js …

2023最新面试题

第一家 自我介绍介绍一下最近一个&#xff08;最熟悉的一个&#xff09;项目 项目几个人在负责 项目实际在用了吗&#xff0c;哪个平台在用啊&#xff08;在哪里上线&#xff09; 你认为你自己做的项目里面哪个比较难做呢&#xff0c;项目里面有什么难点&#xff1f;常用的是V…

安卓隐私指示器学习笔记

最近了解到Google 在Android12上新增了权限指示器&#xff0c;可以在信号栏的右侧显示当前访问录音机和Camera的应用&#xff0c;点击后可以跳转到相应应用的权限界面&#xff0c;消费者可以控制权限的开启和关闭。国内手机厂商最近几年都在增加隐私看板供能&#xff0c;消费者…

java 中汉字转拼音

需要引入的jar <!-- pinyin --><dependency><groupId>com.belerweb</groupId><artifactId>pinyin4j</artifactId><version>2.5.0</version></dependency> 实现工具类 package com.julong.util;import java.util.regex…

编程语言发展史:高级语言的兴起

一、高级语言的定义 高级语言是相对于汇编语言而言的&#xff0c;它是一种更加抽象、更加易于理解和使用的计算机编程语言。高级语言的特点是语法简单、易于学习、易于使用、可读性强、可移植性好等。高级语言的出现极大地提高了程序员的工作效率&#xff0c;同时也使得计算机…

Qt connect()方法Qt::ConnectionType

connect() Qt&#xff0c;绑定信号和槽原型&#xff1a; static QMetaObject::Connection connect(const QObject *sender, const char *signal,const QObject *receiver, const char *member, Qt::ConnectionType Qt::AutoConnection);static QMetaObject::Connection conn…

JSP:Javabean

起初&#xff0c;JavaBean的目的是为了将可以重复使用的代码进行打包&#xff0c;在传统的应用中&#xff0c;JavaBean主要用于实现一些可视化界面&#xff0c;如一个窗体、按钮、文本框等&#xff0c;这样的JavaBean称之可视化的JavaBean。 随着技术的不断发展与项目的需求&am…