ChatGLM2-6B微调过程说明文档

参考文档:

ChatGLM2-6B 微调(初体验) - 知乎

  1. 环境配置

下载anaconda,版本是Anaconda3-2023.03-0-Linux-x86_64.sh,其对应的python版本是3.10,试过3.7和3.11版本的在运行时都报错。

执行下面的命令安装anaconda

 sh Anaconda3-2023.03-0-Linux-x86_64.sh

进入安装过程,根据提示输入即可,会自动配置好环境变量和pip等

下载代码

git clone GitHub - hiyouga/ChatGLM-Efficient-Tuning: Fine-tuning ChatGLM-6B with PEFT | 基于 PEFT 的高效 ChatGLM 微调

cd ChatGLM-Efficient-Tuning

如果服务器不能联网,可以在自己电脑上下载好,上传到服务器的对应目录

安装依赖

pip install -r requirements.txt

  1. 下载模型

从 Hugging Face Hub 下载模型实现和参数 到本地,后期使用 只需要 从本地下载即可。

git lfs install

git clone https://huggingface.co/THUDM/chatglm2-6b

  1. 知识产权数据集准备

通过ChatGPT生成问答预料文本

例如:

prompt:

根据以下内容,生成10道简答题和答案,生成的答案需要详细,知识点完整:

在电影《天下无贼》中,演员刘德华和刘若英扮演的一对夫妇开着骗得的宝马轿车驶 入别墅区大门时,保安不但没有上前询问,反而立正敬礼。刘德华扮演的男主角将车倒回, 拍着宝马车问保安: “开好车你就不问,开好车就可以随便进入,开好车就一定是好人 吗?!”这个问题令人沉思。的确,观众们需要扪心自问:人们在追求以豪车、名表和名牌 服装等为象征的奢华生活和“面子”时,是否忽视了物质外壳之下的美丽灵魂?然而,电 影中的这一幕揭示了一个现实,如 “宝马”这样的驰名商标彰显了拥有者的身份与地位, 满足了消费者的心理需求,其作用有别于普通商标。与之相适应,商标法对驰名商标提供 了特别保护。

驰名商标是指经过长期使用或大量商业推广与宣传,在市场上享有很高知名度并为相 关公众所熟知的商标。与普通商标相比,驰名商标具有以下几个特点。

首先,驰名商标在相关公众中具有很高的知名度。

将返回的数据整理成md文档,如下图

每个章节生成的问题和回答数据达到5w字以上,全部生成完成之后,将文本内容处理成json格式,python代码如下:

import json
import os
import re


def process_md(md_text):
    qa_list = []

    # 使用正则表达式分割问题和答案
    qa_pairs = re.split(r'\n\n+', md_text)

    for pair in qa_pairs:
        question_match = re.match(r'^\s*(.*)\s*答:\s*(.*?)\s*$', pair, re.DOTALL)
        if question_match:
            #question = question_match.group(1)
            question = re.sub(r'^\d+\.\s*', '', question_match.group(1)).rstrip("\n")
            answer = question_match.group(2)
            qa = {
                "content": question,
                "summary": answer
            }
            qa_list.append(qa)
    return qa_list


def main():
    input_directory = "md_files"  # 替换为包含Markdown文件的目录
    output_directory = "formatted_qa"  # 输出文件的目录


    if not os.path.exists(output_directory):
        os.makedirs(output_directory)

    output_filename = os.path.join(output_directory, "content.json")
    output_file=open(output_filename, 'w', encoding='utf-8')

    for filename in os.listdir(input_directory):
        if filename.endswith(".md"):
            with open(os.path.join(input_directory, filename), 'r', encoding='utf-8') as file:
                md_text = file.read()

            qa_list = process_md(md_text)
            json.dump(qa_list, output_file, ensure_ascii=False, indent=2)
            print(f"转换完成,结果已保存到{output_filename}")
if __name__ == "__main__":
    main()

结果文档如下:

  1. ChatGLM2-6B模型微调

命令行训练

CUDA_VISIBLE_DEVICES=0 python src/train_bash.py \

    --stage sft \

    --model_name_or_path /home/liq/zw/chatglm2/chatglm2-6b \

    --do_train \

    --dataset zscq \

    --dataset_dir ./data \

    --finetuning_type lora \

    --output_dir /home/liq/zw/data/chatglm2-6b-lora-zscq \

    --per_device_train_batch_size 1 \

    --gradient_accumulation_steps 1 \

    --lr_scheduler_type cosine \

    --logging_steps 10 \

    --save_steps 1000 \

    --learning_rate 5e-5 \

    --num_train_epochs 3.0 \

    --fp16

开始训练

训练完成

命令行测试

python src/cli_demo.py \

    --model_name_or_path /home/liq/zw/chatglm2/chatglm2-6b \

    --checkpoint_dir /home/liq/zw/data/chatglm2-6b-lora-zscq/checkpoint-19000 \

    --quantization_bit 4

进入问答界面

输入问题,得到对应回答

导出微调模型

python src/export_model.py \

    --model_name_or_path /home/liq/zw/chatglm2/chatglm2-6b \

    --checkpoint_dir /home/liq/zw/data/chatglm2-6b-lora/checkpoint-19000 \

    --output_dir /home/liq/zw/chatglm2-6b-lora-zscq2

查看模型内容

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

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

相关文章

Linux文件与路径

Linux文件与路径 1、文件结构 ​ Windows和Linux文件系统区别 ​ 在windows平台下,打开“此电脑”,我们可以看到盘符分区 ​ 每个驱动器都有自己的根目录结构,这样形成了多个树并列的情形 ​ 但是在 Linux 下,我们是看不到这些…

linux系统初始化本地git,创建ssh-key

step1, 在linux系统配置你的git信息 sudo apt install -y git//step1 git config --global user.name your_name // github官网注册的用户名 git config --global user.email your_email //gitub官网注册绑定的邮箱 git config --list //可以查看刚才你的配置内容…

Spring之@Autowired 属性多实现和单实现源码解析

Autowired使用过程中遇到疑问,通过源码解析原因 一、起因1、当person只有一个实现类时,TestController中,Person属性随意取名。2、当有Person两个实现类时,TestController中,属性名称必须和实现类名一致(ma…

B 树和 B+树 的区别

文章目录 B 树和 B树 的区别 B 树和 B树 的区别 了解二叉树、AVL 树、B 树的概念 B 树和 B树的应用场景 B 树是一种多路平衡查找树,为了更形象的理解。 二叉树,每个节点支持两个分支的树结构,相比于单向链表,多了一个分支。 …

使用C#和HtmlAgilityPack打造强大的Snapchat视频爬虫

概述 Snapchat作为一款备受欢迎的社交媒体应用,允许用户分享照片和视频。然而,由于其特有的内容自动消失特性,爬虫开发面临一些挑战。本文将详细介绍如何巧妙运用C#和HtmlAgilityPack库,构建一个高效的Snapchat视频爬虫。该爬虫能…

vulfocus apache-cve_2021_41773 漏洞复现

vulfocus apache-cve_2021_41773 漏洞复现 名称: vulfocus/apache-cve_2021_41773 描述: Apache HTTP Server 2.4.49、2.4.50版本对路径规范化所做的更改中存在一个路径穿越漏洞,攻击者可利用该漏洞读取到Web目录外的其他文件,如系统配置文件、网站源码…

tabs切换,当点击tabItem时候,改变选中样式,以及content内容区域

效果图展示&#xff1a; html原生代码&#xff1a; <div><div class"buttons-row nav-select riskType" style"padding: 10px;"><div class"shoucang-title-box flex-start"><div class"shoucang-title-item active&q…

案例034:基于微信小程序的课堂助手系统

文末获取源码 开发语言&#xff1a;PHP 框架&#xff1a;PHP 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序运行软件&#xff1a;微信开…

【Python数据结构与算法】--- 递归算法的应用 ---[乌龟走迷宫] |人工智能|探索扫地机器人工作原理

&#x1f308;个人主页: Aileen_0v0 &#x1f525;系列专栏:PYTHON数据结构与算法学习系列专栏&#x1f4ab;"没有罗马,那就自己创造罗马~" 目录 导言 解决过程 1.建立数据结构 2.探索迷宫: 算法思路 递归调用的“基本结束条件” 3.乌龟走迷宫的实现代码: …

Python大数据考题

Python大数据考题&#xff1a; 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;可能很多算法学生都得去找开发&#xff0c;测开 测开的话&#xff0c;你就得学数据库&#xff0c;sql&#xff0c;oracle&#xff0c;尤其sql要…

RCS2000发布任务

得有货架 任务配置-任务模板配置-编辑 任务配置-任务模板配置-配置 状态已完成 复制呼叫站点 运营管理-控制调度-任务调度 主任务类型编号是任务模板编号&#xff08;任务配置-任务模板配置&#xff09; AGV编号是agv设备编号&#xff08;AGV配置-AGV配置&#xff09; 货架编…

408—电子笔记分享

一、笔记下载 链接&#xff1a;https://pan.baidu.com/s/1bFz8IX6EkFMWTfY9ozvVpg?pwddeng 提取码&#xff1a;deng b站视频&#xff1a;408-计算机网络-笔记分享_哔哩哔哩_bilibili 包含了408四门科目&#xff08;数据结构、操作系统、计算机组成原理、计算机网络&#xff09…

三、Lua变量

文章目录 一、变量分类二、变量赋值三、索引 一、变量分类 lua变量分为全局变量&#xff0c;局部变量。 全局变量&#xff1a;默认&#xff0c;全局有效。 局部变量&#xff1a;从作用范围开始到作用范围结束&#xff0c;需加local 修饰。 a1function ff()local b1 endprint(a…

4G自动变焦云台球机摄像头如何解决低功耗问题?

目前也很多4G球机&#xff0c;不过对于工业的应用&#xff0c;可能还需要有针对性的球机方案&#xff1f; 比如,大家关心的功耗问题&#xff0c;在无电无网的情况下&#xff0c;偏远山区&#xff0c;对于一些油田的管控&#xff0c;输线电路可视化监控&#xff0c;天然气管道的…

Spring如何在多线程下保持事务的一致性

Spring如何在多线程下保持事务的一致性 方法&#xff1a;每个线程都开启各自的事务去执行相关业务&#xff0c;等待所有线程的业务执行完成&#xff0c;统一提交或回滚。 下面我们通过具体的案例来演示Spring如何在多线程下保持事务的一致性。 1、项目结构 2、数据库SQL CR…

自动标注好用吗?基于SAM和Label Studio搭建半自动实例分割标注平台

文章目录 一、半自动标注二、缺点三、安装方法1、 python版本要求2、下载playground3、SAM安装4、SAM权重下载5、安装label-studio-ml6、启动SAM接口7、SAM启动日志8、安装并启动label-studio9、label-studio启动日志 四、半自动标注使用方法1、创建project并导入数据2、标签设…

P8A002-CIA安全模型-配置Linux描述网络安全CIA模型之可用性案例

【预备知识】 可用性(Availability) 数据可用性是一种以使用者为中心的设计概念,易用性设计的重点在于让产品的设计能够符合使用者的习惯与需求。以互联网网站的设计为例,希望让使用者在浏览的过程中不会产生压力或感到挫折,并能让使用者在使用网站功能时,能用最少的努力…

请问大家在都在什么场景用到嵌入式数据库?

请问大家在都在什么场景用到嵌入式数据库&#xff1f; 嵌入式数据库在许多场景中都有广泛的应用。这些数据库通常被设计成轻量级、占用资源少且易于集成到其他应用程序中。以下是一些常见的场景和领域&#xff0c;在这些场景中嵌入式数据库被广泛使用&#xff1a;最近很多小伙伴…

记录一个mqtt错误

在vue-admin-template 中引入mqtt 安装不报错&#xff0c;引入试过 import mqtt from mqtt import * as mqtt from mqtt/dist/mqtt.min; import {connect} from mqtt 一直报错&#xff1a; 就表示不理解&#xff0c;网上也没查到相应的资料&#xff0c;请告诉我我不是第一个遇…

FTP服务器搭建

1.FTP服务器概述 FTP服务器&#xff08;File Transfer Protocol Server&#xff09;是一种提供文件传输服务的服务器。FTP是一种标准的网络协议&#xff0c;用于在计算机之间进行文件传输。FTP服务器允许用户通过FTP协议上传、下载、删除和管理文件&#xff0c;从而使文件在不同…