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.hqwc.cn/news/205991.html

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

相关文章

外卖配送小程序商城的效果如何

线下餐饮店非常多,主要以同城生意为主,在线上电商和外卖平台的冲击下,传统商家仅通过传统方式经营很难宣传拓客及转化等,线上是必要的渠道,但入驻第三方平台又会有各种困扰,抽成/佣金/流量费/激烈竞争等。 …

SSM客户管理系统CRM开发mysql数据库web结构java编程计算机网页源码eclipse项目

一、源码特点 SSM 客户管理系统CRM是一套完善的信息系统,结合springMVC框架完成本系统,对理解JSP java编程开发语言有帮助系统采用SSM框架(MVC模式开发),系统具有完整的源代码和数据库,系统主要采用B/S模…

Socket通信之网络协议基本原理

一台机器将自己想要表达的内容,按照某种约定好的格式发送出去,当另外一台机器收到这些信息后,也能够按照约定好的格式解析出来,从而准确、可靠地获得发送方想要表达的内容。这种约定好的格式就是网络协议(Networking P…

【STM32外设系列】JW01三合一空气质量检测模块

🎀 文章作者:二土电子 🌸 关注公众号获取更多资料! 🐸 期待大家一起学习交流! 文章目录 一、JW01模块简介二、数据格式介绍三、程序设计3.1 串口初始化3.2 串口接收中断服务函数3.3 数据解析函数 四、其他…

Sublime Text 3运行 Python文件出现中文打印乱码的解决方式

很多小伙伴在下载安装好sublime这个编辑器后发现,它虽然能够用来打开python脚本和创建文件编写代码,但是却不能够来运行python代码和程序。所以下面这一篇文章就是会来分享一下,sublime编辑器无法运行python的解决方法,感兴趣的话…

数据库数据恢复—MongoDB数据库文件拷贝出现错误的数据恢复案例

MongoDB数据库数据恢复环境: 一台Windows Server操作系统的虚拟机,虚拟机上部署有MongoDB数据库。 MongoDB数据库故障&检测: 在未关闭MongoDB服务的情况下,工作人员将MongoDB数据库文件拷贝到其他分区,然后将原数…

谷歌Freshness新鲜度算法:如何利用它提升网站排名?

今天我们就来深入了解下Google Freshness算法核心,结合案例研究和实用技巧,为我们自己的网站优化提供一些思路。 Google新鲜度算法和QDF Google的新鲜度算法和查询需求的新鲜度(Query Deserves Freshness, QDF)模型是为了改善特…

DLL文件的使用

DLL文件就是动态库文件,搞个例子就懂了,搞两个工程,一个工程生成DLL,一个工程调用DLL。 生成DLL工程 打开Visual Studio 2019,版本高了可能不行,创建新项目。 搜索DLL,动态链接库。 给项目起个…

如何用CHAT写励志文章?

问CHAT:写一篇以《过了60岁要积极面对身体疾病的坎儿》为题目,写一篇300字励志文章 CHAT回复: 标题:《过了60岁要积极面对身体疾病的坎儿》 人生,有时会像一趟不期而遇的旅程,各自带着乐观或悲观、阳光或…

SPSS系统聚类

前言: 本专栏参考教材为《SPSS22.0从入门到精通》,由于软件版本原因,部分内容有所改变,为适应软件版本的变化,特此创作此专栏便于大家学习。本专栏使用软件为:SPSS25.0 本专栏所有的数据文件请点击此链接下…

OpenAI再次与Altman谈判;ChatGPT Voice正式上线

11月22日,金融时报消息,OpenAI迫于超过700名员工联名信的压力,再次启动了与Sam Altman的谈判,希望他回归董事会。 在Sam确定加入微软后,OpenAI超700名员工签署了一封联名信,要求Sam和Greg Brockman&#x…

什么是邮件签名证书?

邮件签名证书是一种证书,可以证明发送者的身份,并提供数据完整性和不可否认性的保障。接下来,我们将详细讨论这种证书的特点和用途。 概念 邮件签名证书是一种特殊类型的数字证书,允许发送者在电子邮件上签名和加密,…