chatglm3-6b部署及微调
chatglm3-6b部署及微调
- modelscope: https://modelscope.cn/models/ZhipuAI/chatglm3-6b/files
- github: https://github.com/THUDM/ChatGLM3
- 镜像: ubuntu20.04-cuda11.7.1-py38-torch2.0.1-tf1.15.5-1.8.1
- v100 16G现存 单卡
安装
软件依赖
# 非必要无需执行
# pip install --upgrade pippip install modelscope>=1.9.0
下载及调用
from modelscope import AutoTokenizer, AutoModel, snapshot_download
model_dir = snapshot_download("ZhipuAI/chatglm3-6b", revision = "v1.0.2")
tokenizer = AutoTokenizer.from_pretrained(model_dir, trust_remote_code=True)
model = AutoModel.from_pretrained(model_dir, trust_remote_code=True).half().cuda()
model = model.eval()
response, history = model.chat(tokenizer, "你好", history=[])
print(response)
response, history = model.chat(tokenizer, "晚上睡不着应该怎么办", history=history)
print(response)

微调
数据集: https://modelscope.cn/datasets/damo/MSAgent-Bench/summary
项目: https://github.com/modelscope/swift
项目下载
mkdir py
git clone https://github.com/modelscope/swift.git
cd swift
安装依赖:
# 已安装忽略
pip install ms-swift# 已安装忽略
pip install modelscope>=1.9.0# 设置pip全局镜像和安装相关的python包
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
git clone https://github.com/modelscope/swift.git
cd swift
pip install .[llm]
# 下面的脚本需要在此目录下执行
cd examples/pytorch/llm# 如果你想要使用deepspeed
pip install deepspeed -U# 如果你想要使用基于auto_gptq的qlora训练. (推荐, 效果优于bnb)
# 使用auto_gptq的模型: qwen-7b-chat-int4, qwen-14b-chat-int4, qwen-7b-chat-int8, qwen-14b-chat-int8
pip install auto_gptq optimum -U# 如果你想要使用基于bnb的qlora训练.
pip install bitsandbytes -U
脚本sft.sh
sft.sh
将脚本放在swift/examples/pytorch/llm/scripts/chatglm3_6b/lora_ddp_ds这个目录下
- 单显卡: CUDA_VISIBLE_DEVICES=0
- 模型ID: model_id_or_path ZhipuAI/chatglm3-6b
- 模型版本: model_revision v1.0.2
- dtype: 如果是老显卡比如V100 是不支持bf16的 需要指定为: fp16
- 模板类型: template_type chatglm3
- 数据集: dataset damo-agent-mini-zh 这里采用达摩院的agent
- lora_rank和lora_alpha 注意: lora_alpha一定要是lora_rank 2倍质量最高
- hub_token: 你的modelscope平台的token该参数只有在push_to_hub设置为True时才生效.
- gradient_accumulation_steps 根据你的服务器性能调整大小 性能不好则值相对较小 v100
- 剩余其他参数默认即可
# v100 16G 单卡
nproc_per_node=1PYTHONPATH=../../.. \
CUDA_VISIBLE_DEVICES=0 \
torchrun \--nproc_per_node=$nproc_per_node \--master_port 29500 \llm_sft.py \--model_id_or_path ZhipuAI/chatglm3-6b \--model_revision v1.0.2 \--sft_type lora \--tuner_backend swift \--template_type chatglm3 \--dtype fp16 \--output_dir output \--dataset damo-agent-mini-zh \--train_dataset_sample -1 \--num_train_epochs 1 \--max_length 4096 \--lora_rank 8 \--lora_alpha 16 \--lora_dropout_p 0.05 \--lora_target_modules AUTO \--gradient_checkpointing true \--batch_size 1 \--weight_decay 0. \--learning_rate 1e-4 \--gradient_accumulation_steps 16 \--max_grad_norm 0.5 \--warmup_ratio 0.03 \--eval_steps 100 \--save_steps 100 \--save_total_limit 2 \--logging_steps 10 \--push_to_hub false \--hub_model_id chatglm3-6b-lora \--hub_private_repo true \--hub_token 'token' \--deepspeed_config_path 'ds_config/zero2.json' \--only_save_model true \
运行脚本
注意: 要在 swift/examples/pytorch/llm 这个目录下进行 记得给脚本权限chmod +x llm/*.py
./scripts/chatglm3_6b/lora_ddp_ds/sft.sh
推理
infer.sh
将脚本放在swift/examples/pytorch/llm/scripts/chatglm3_6b/lora_ddp_ds这个目录下
# Experimental environment: v100
PYTHONPATH=../../.. \
CUDA_VISIBLE_DEVICES=0 \
python llm_infer.py \--model_id_or_path ZhipuAI/chatglm3-6b \--model_revision v1.0.2 \--sft_type lora \--template_type chatglm3 \--dtype fp16 \# --ckpt_dir "output/chatglm3-6b/vx_xxx/checkpoint-xxx" \--eval_human false \--dataset damo-agent-mini-zh \--max_length 2048 \--max_new_tokens 2048 \--temperature 0.9 \--top_k 20 \--top_p 0.9 \--do_sample true \--merge_lora_and_save false \
常见问题
1.显卡驱动
RuntimeError: The NVIDIA driver on your system is too old (found version 11080). Please update your GPU driver by downloading and installing a new version from the URL: http://www.nvidia.com/Download/index.aspx Alternatively, go to: https://pytorch.org to install a PyTorch version that has been compiled with your version of the CUDA driver.
解决方案
错误提示显卡驱动较老 其实可能是torch版本太高导致的问题 我们用的是2.0.1 请检查你的版本是否是2.0.1
https://pytorch.org/get-started/previous-versions/
# 查看torch版本
python
import torch
print(torch.__version__)# 查看CUDA版本
nvidia-smi# 卸载过高的版本
pip uninstall torch# 访问官方查看对应版本: https://pytorch.org/get-started/previous-versions/ 以cuda 11.8 pytorch:2.0.1 举例
conda install pytorch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 pytorch-cuda=11.8 -c pytorch -c nvidia
相关文章:
chatglm3-6b部署及微调
chatglm3-6b部署及微调 modelscope: https://modelscope.cn/models/ZhipuAI/chatglm3-6b/filesgithub: https://github.com/THUDM/ChatGLM3镜像: ubuntu20.04-cuda11.7.1-py38-torch2.0.1-tf1.15.5-1.8.1v100 16G现存 单卡 安装 软件依赖 # 非必要无需执行 # pip install -…...
Hive 知识点八股文记录 ——(二)优化
函数 UDF:用户定义函数 UDAF:用户定义聚集函数 UDTF:用户定义表生成函数 建表优化 分区建桶 创建表时指定分区字段 PARTITIONED BY (date string)指定分桶字段和数量 CLUSTERED BY (id) INTO 10 BUCKETS插入数据按分区、分桶字段插入 …...
计算机技术专业CSIT883系统分析与项目管理介绍
文章目录 前言一、学科学习成果二、使用步骤三、最低出勤要求四、讲座时间表五、项目管理 前言 本课程介绍了信息系统开发中的技术和技术,以及与管理信息技术项目的任务相关的方法和过程。 它研究了系统分析师、客户和用户在系统开发生命周期中的互补角色。 它涵盖…...
gitlab安装地址
镜像地址: Index of /gitlab-ce/yum/el7/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror wget Index of /gitlab-ce/yum/el7/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror rpm -i gitlab-ce-15.9.1-ce.0.el7.x86_64.rpm 一直提示 &#x…...
Spark处理方法_提取文件名中的时间
需求描述 通过读取目录下的类似文件的datapath路径的文件名及文件内容,需要将读取的每一个文件的文件名日期解析出来,并作为读取当前文件内容递归读取当前文件一个df列,列名为“时间”;后面就是读一个文件,解析一下时间…...
技术分享 | 测试平台开发-前端开发之数据展示与分析
测试平台的数据展示与分析,我们主要使用开源工具ECharts来进行数据的展示与分析。 ECharts简介与安装 ECharts是一款基于JavaScript的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表ÿ…...
NZ系列工具NZ06:VBA创建PDF文件说明
我的教程一共九套及VBA汉英手册一部,分为初级、中级、高级三大部分。是对VBA的系统讲解,从简单的入门,到数据库,到字典,到高级的网抓及类的应用。大家在学习的过程中可能会存在困惑,这么多知识点该如何组织…...
redis-cli 连接 sentinel架构的redis服务
之前一直用gui连接redis,今天在服务器连接发现redis-cli无法直接连接到redis-sentinel服务器,研究后发现多了几个步骤,如下: 假设有三个redis节点127.0.0.1,127.0.0.2,127.0.0.3,端口为9696先连接任意一个节点: redis-cli -h 12…...
使用github copilot
现在的大模型的应用太广了,作为程序员我们当然野可以借助大模型来帮我们敲代码。 下面是自己注册使用github copilot的过程。 一、注册github copilot 1. 需要拥有github账号 ,登录github之后,点右侧自己的头像位置,下面会出现…...
1438 绝对差不超过限制的最长连续子数组(单调队列)
题目 绝对差不超过限制的最长连续子数组 给你一个整数数组 nums ,和一个表示限制的整数 limit,请你返回最长连续子数组的长度,该子数组中的任意两个元素之间的绝对差必须小于或者等于 limit 。 如果不存在满足条件的子数组,则返…...
OpenCV入门9:图像增强和图像滤波
图像增强是一种通过对图像进行处理以改善其质量、对比度、清晰度等方面的技术。在OpenCV中,有多种图像增强的方法和函数可用。下面简要介绍一些常见的图像增强方法及其在OpenCV中的实现方式。 直方图均衡化(Histogram Equalization)ÿ…...
Pycharm常用快捷键和替换正则表达式
原生快捷键的使用: 1.CtrlF:查找 2.CtrlZ:返回上一步 3.Alt 鼠标左键选择:多行同时编辑(上、下、左、右键能够移动光标) 按住Ctrl,左键点击,定位光标 编辑过程 URL常用的替换正则表达式&am…...
C#,数值计算——函数计算,Epsalg的计算方法与源程序
1 文本格式 using System; namespace Legalsoft.Truffer { /// <summary> /// Convergence acceleration of a sequence by the algorithm.Initialize by /// calling the constructor with arguments nmax, an upper bound on the /// number of term…...
Delphi 12 重返雅典 (RAD Studio 12)
RAD Studio 12 的新功能: 以最新的平台版本为目标! RAD Studio 12 提供对 iOS 17(仅适用于 Delphi)、Android 14 和 macOS Sonoma 的官方支持。RAD Studio 12 还支持 Ubuntu 22 LTS 和 Windows Server 2022。 Delphi 源代码的多…...
手写链表C++
目录 一、链表基本概念以及注意事项 1.1 构造函数与析构函数 1.2 插入元素 1.3 重载运算符 二、小结 一、链表基本概念以及注意事项 在工作中,链表是一种常见的数据结构,可以用于解决很多实际问题。在学习中,掌握链表可以提高编程能力和…...
为什么我一直是机器视觉调机仔,为什么一定要学一门高级语言编程?
为什么我是机器视觉调机仔,为什么一定要学一门高级语言编程,以后好不好就业,待遇高不高,都是跟这项技术没关系,是跟这个技术背后的行业发展有关系。 你可以选择离机器视觉行业,也可以选择与高级语言相关…...
MongoDB单实例安装(Linux)
实战环境 centos7系统、64位 iptables和selinux关闭 mongodb简介 mongodb是个非关系型数据库,但操作跟关系型数据最类似。mysql是关系型数据库 mongodb是面向文档存储的非关系型数据库,数据以json的格式进行存储 mongodb可用来永久存储,也可用…...
各种业务场景调用API代理的API接口教程(附带电商平台api接口商品详情数据接入示例)
API代理的API接口在各种业务场景中具有广泛的应用,本文将介绍哪些业务场景可以使用API代理的API接口,并提供详细的调用教程和代码演示,同时,我们还将讨论在不同场景下使用API代理的API接口所带来的好处。 哪些业务场景可以使用API…...
React-hooks有哪些 包括用法是什么?
React Hooks是React 16.8版本引入的功能,它允许你在函数组件中使用状态(state)和其他React特性,而无需编写类组件。以下是一些常用的React Hooks及其用法: 1:useState:用于在函数组件中添加状态…...
根据DataFrame指定的列该列中如果有n个不同元素则将其转化为n行显示explode()
【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 根据DataFrame指定的列 该列中如果有n个不同元素 则将其转化为n行显示 explode() 选择题 以下代码两次输出结果分别为几行? import pandas as pd df pd.DataFrame({种类:[蔬菜,水…...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...
Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...
数据链路层的主要功能是什么
数据链路层(OSI模型第2层)的核心功能是在相邻网络节点(如交换机、主机)间提供可靠的数据帧传输服务,主要职责包括: 🔑 核心功能详解: 帧封装与解封装 封装: 将网络层下发…...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...
涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...
QT3D学习笔记——圆台、圆锥
类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体(对象或容器)QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质(定义颜色、反光等)QFirstPersonC…...
Qemu arm操作系统开发环境
使用qemu虚拟arm硬件比较合适。 步骤如下: 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载,下载地址:https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...
LangFlow技术架构分析
🔧 LangFlow 的可视化技术栈 前端节点编辑器 底层框架:基于 (一个现代化的 React 节点绘图库) 功能: 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...
Spring Security 认证流程——补充
一、认证流程概述 Spring Security 的认证流程基于 过滤器链(Filter Chain),核心组件包括 UsernamePasswordAuthenticationFilter、AuthenticationManager、UserDetailsService 等。整个流程可分为以下步骤: 用户提交登录请求拦…...
