GLM4-9B-chat模型微调

文本记录GLM4-9B-Chat模型进行LoRA微调的过程。

一、环境:

  1. 操作系统: Ubuntu 22.04
  2. CUDA:     12.1
  3. GPU:        3090 x 2

  创建conda环境:

conda create -n glm4 python=3.10.14
conda activate glm4cd /home/data/chatglm4-finetune

二、数据准备

  运行data_process.py将数据处理为模型指定的格式:
    {"messages": [
    {"role": "user", "content": "你好"}, 
    {"role": "assistant", "content": "我是大爱同学,由码农丹宇研发"}
    ]
   }
   
   注意:输出的格式为.jsonl

  训练集或验证集的数据量不能少于50条。

  数据生成到/home/data/chatglm4-finetune/data/whoAreYou_fix/目录下,存在一个train.jsonl和dev.jsonl

三、安装依赖

 git clone https://github.com/THUDM/GLM-4.gitcd /home/data/chatglm4-finetune/GLM-4/basic_demopip install -r requirements.txtcd /home/data/chatglm4-finetune/GLM-4/finetune_demo注意修改requirements.txt中的datasets>2.20.0为datasets>=2.20.0pip install -r requirements.txt

四、修改配置参数

    修改config/lora.yaml中的参数,主要根据数据集的大小修改max_steps和save_steps

五、微调

   

cd /home/data/chatglm4-finetune/GLM-4/finetune_demo1.单机单卡:
CUDA_VISIBLE_DEVICES=0 python finetune.py  /home/data/chatglm4-finetune/data/whoAreYou_fix/  /home/data/model/zhipu/glm-4-9b-chat  configs/lora.yaml2.单机多卡/多机多卡:
export CUDA_VISIBLE_DEVICES=0,1
OMP_NUM_THREADS=1 torchrun --standalone --nnodes=1 --nproc_per_node=2  finetune.py /home/data/chatglm4-finetune/data/whoAreYou_fix/ /home/data/model/glm-4-9b-chat configs/lora.yaml 

六、使用微调后的模型进行推理

在完成微调任务之后,我们可以查看到 output 文件夹下多了很多个checkpoint-*的文件夹,这些文件夹代表了训练的轮数。
  
  checkpoint-*的文件夹的目录下面会有adapter_config.json文件,里面有一个基模型的路径base_model_name_or_path,记录着模型基座的路径。

cd finetune_demo
CUDA_VISIBLE_DEVICES=1 python inference.py output/checkpoint-3000/ --prompt "你是谁?"

七、合并模型

将基座模型和lora微调的增量模型合并成一个完整的大模型:
 

cd /home/data/chatglm4-finetune
# 第一个参数为微调后模型的路径,后面那个参数为合并后的模型输出路径
python merge_hf2.py /home/data/chatglm4-finetune/GLM-4/finetune_demo/output/checkpoint-16000/ --out-dir ./merge_model

 merge_hf2.py的源码参见上一篇微调文章。

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

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

相关文章

探索SoMeLVLM:面向社交媒体处理的大型视觉语言模型

SoMeLVLM: A Large Vision Language Model for Social Media Processing 论文地址: https://arxiv.org/abs/2402.13022https://arxiv.org/abs/2402.13022发表在ACL 2024 1.概述 在线社交媒体平台涌现出海量的文本与视觉内容,深刻揭示了人们如何交流、互动以及自我表达。随着通…

论文辅导 | 基于贝叶斯优化LSTM的锂电池健康状态评估方法

辅导文章 模型描述 在传统的 LSTM 神经网络中,超参数的取值对模型性能有很大影响,但人工调参很难得到最优解。 因此,本文加入了 BO 来迭代出最优超参数。 在利用LSTM 神经网络评估锂电池 SoH 的基础上,通过 BO来提高评估的精确度。 预测效果

ubuntu卸载python3,重装python2.7

卸载py3 Linux(Ubuntu)环境下安装卸载Python3(避免踩坑)_ubuntu卸载python-CSDN博客https://blog.csdn.net/BLee_0123/article/details/136075374 安装py2.7 Ubuntu上重装Python2(强烈建议在不删除数据情况下&#…

LLC开关电源开发:如何使用信号发生器与示波器设计环路

如何使用信号发生器与示波器设计环路 一、主回路二、小信号注入三、LLC 数字环路计算书一、主回路 如下图所示为系统整体架构,包括 LLC 主功率线路,采集线路、RC 滤波线路,DSP 运算。DSP 通过采集由差分运放转化而来的输出电压量(一阶 RC 滤除线路杂波),经数字环路产生特…

北方访问延迟低云主机选购指南:弹性云济南互通线路的优势

在选择云主机时,访问延迟是一个不可忽视的关键因素,特别是对于北方地区的企业来说,选择一款访问延迟低的云主机更是至关重要。快快网络弹性云济南互通线路凭借其独特的优势,成为了北方企业上云的理想选择。 一、弹性云济南互通线…

apk反编译修改教程系列-----去除apk软件更新方法步骤列举 记录八种最常见的去除方法

在前面几期博文中 有说明去除apk软件更新的步骤方法。我们在对应软件反编译去除更新中要灵活运用。区别对待。同一个软件可以有不同的去除更新方法可以适用。今天的教程对于软件更新去除列举几种经常使用的修改步骤。 通过基础课程可以了解 1-----软件反编译更新去除的几种常…

Java中Callable的应用

在Java中,Callable接口是一种用于并发编程的接口,它与Runnable类似,但有一些重要的区别和优势。Callable接口提供了一种在多线程环境下执行任务并返回结果的方法。以下是一些Callable接口的常见应用场景和使用示例: Callable vs.…

【脚本工具库】随机删除数据 - 图像和标签对应(附源码)

在处理数据集时,我们有时需要随机删除一定数量的图像及其对应的标签文件,以达到平衡数据集或进行其他数据处理的目的。手动删除这些文件不仅耗时,而且容易出错。为了解决这个问题,我们可以编写一个Python脚本,使用os和…

Kubernetes网络性能测试

Kubernetes 网络性能测试 基于已经搭建的Kubernetes环境,来测试其网络性能。 1. 测试准备 1.1 测试环境 测试环境为VMware Workstation虚拟机搭建的一套K8S环境,版本为1.19,网络插件使用flannel。 hostnameip备注k8s-master192.168.0.51…

Streamlit搭建聊天UI

使用Streamlit搭建聊天UI是一个快速而有效的方法,用于构建数据科学和机器学习项目的交互式界面。以下是一个基于参考文章提供的信息,关于如何使用Streamlit搭建聊天UI的详细步骤和要点: 1. 导入必要的库 首先,你需要导入Streamlit库以及任何你计划使用的语言模型库(如Op…

北邮《计算机网络》蒋老师思考题及答案-传输层

蒋yj老师yyds! 答案自制,仅供参考,欢迎质疑讨论 问题一览 传输层思考题P2P和E2E的区别使用socket的c/s模式通信,流控如何反映到编程模型三次握手解决什么问题举一个两次握手失败的例子为什么链路层是两次握手而非三次?…

在整合spring boot+layui中解决Could not parse as expression: “的问题

首先查看报错信息,这里提示我们78行有问题 这里是[[]] 这个内联表达式出了问题,在当前所在的script标签中加入th:inlinenone,然后重启项目,成功解决!

2>/dev/null 怎么理解

2>/dev/null 是一个重定向操作符,用于将命令执行过程中产生的错误输出(标准错误流)重定向到 /dev/null,从而忽略这些错误信息。 具体来说,Linux 系统中的文件描述符有以下几种: 0:标准输入…

RabbitMQ使用交换机进行消息转发

使用交换机进行转发到队列 第一步:创建队列 第二步:创建交换机 第三步:交换机绑定队列 第四步:修改消息生产者发送业务 第五步:修改消息接收者业务代码 RabbitListener(queues "fanout.queue1")public vo…

人工智能与大数据:新时代的技术融合与未来展望

引言 在信息化和数字化迅猛发展的今天,人工智能(AI)和大数据(Big Data)已成为推动社会变革和技术进步的两大支柱。随着互联网的普及、计算能力的提升以及数据获取手段的多样化,AI和大数据技术的应用愈发广泛…

守护公共安全,从可燃气体报警器检验周期开始:国家法规的解读

在现代社会,安全始终是首要考虑的问题。随着工业化、城市化的快速发展,各种潜在的安全隐患也逐渐浮现,尤其是可燃气体泄漏所带来的火灾和爆炸风险。 为了确保公众和企业的生命财产安全,可燃气体报警器作为一种重要的安全监测设备…

达梦(DM8)数据库备份与还原(逻辑备份)二

一、达梦数据库的逻辑备份分四种级别的导出(dexp)与导入(dimp)的备份 第一种是:数据库级:导出或导入数据库中所有的对象。主要参数是:FULL 第二种是:用户级别:导出或导…

软件工程——保护手段

软件工程——保护手段 1 容灾 容灾保护,也称为容灾(Disaster Tolerance),是指在自然灾害、设备故障、人为操作破坏等灾难发生时,通过一系列技术手段和策略,保证生产系统的数据尽量少丢失,同时…

中霖教育怎么样?中霖教育好吗?

中霖教育怎么样?中霖教育好吗? 中霖教育包括师资力量、课程设置、教学方法等都是经过不断完善来制定的,我们拥有专业且经验丰富的师资队伍,在教学过程中更注重个性化教学方式,针对每个学员的需求和学习情况制定专属的学习计划。 无论是在…

MySQL角色使用详解

在MySQL数据库管理系统中,角色是一种命名的权限集合,类似于用户账户,可以向其授予或撤销权限。通过将权限集以角色的形式分配给用户账户,MySQL提供了一种概念化和实现所需权限分配的便捷方式,替代了单独授予每个权限的…