LLMs之MindFormers:基于国产硬件华为Atlas针对GLM-4-9B实现模型全参微调(单机8卡)→模型推理(单卡多batch推理)

LLMs之MindFormers:基于国产硬件华为Atlas针对GLM-4-9B实现模型全参微调(单机8卡)→模型推理(单卡多batch推理)

目录

基于国产硬件华为Atlas针对GLM-4-9B实现模型全参微调(单机8卡)→模型推理(单卡多batch推理)

1、GLM-4模型描述

模型性能

模型文件

2、环境及数据准备

(1)、安装环境

(2)、数据准备

数据集下载

alpaca 数据预处理

(3)、模型权重准备

模型权重下载

模型权重转换

3、模型全参微调

单机训练

4、模型推理


基于国产硬件华为Atlas针对GLM-4-9B实现模型全参微调(单机8卡)→模型推理(单卡多batch推理)

1、GLM-4模型描述

GLM-4-9B 是智谱 AI 推出的最新一代预训练模型 GLM-4 系列中的开源版本。 在语义、数学、推理、代码和知识等多方面的数据集测评中,GLM-4-9B 及其人类偏好对齐的版本 GLM-4-9B-Chat 均表现出较高的性能。 除了能进行多轮对话,GLM-4-9B-Chat 还具备网页浏览、代码执行、自定义工具调用(Function Call)和长文本推理(支持最大 128K 上下文)等高级功能。 本代模型增加了多语言支持,支持包括日语,韩语,德语在内的 26 种语言。我们还推出了支持 1M 上下文长度(约 200 万中文字符)的模型。

@article{glm2024chatglm,title={ChatGLM: A Family of Large Language Models from GLM-130B to GLM-4 All Tools},author={Team GLM and Aohan Zeng and Bin Xu and Bowen Wang and Chenhui Zhang and Da Yin and Diego Rojas and Guanyu Feng and Hanlin Zhao and Hanyu Lai and Hao Yu and Hongning Wang and Jiadai Sun and Jiajie Zhang and Jiale Cheng and Jiayi Gui and Jie Tang and Jing Zhang and Juanzi Li and Lei Zhao and Lindong Wu and Lucen Zhong and Mingdao Liu and Minlie Huang and Peng Zhang and Qinkai Zheng and Rui Lu and Shuaiqi Duan and Shudan Zhang and Shulin Cao and Shuxun Yang and Weng Lam Tam and Wenyi Zhao and Xiao Liu and Xiao Xia and Xiaohan Zhang and Xiaotao Gu and Xin Lv and Xinghan Liu and Xinyi Liu and Xinyue Yang and Xixuan Song and Xunkai Zhang and Yifan An and Yifan Xu and Yilin Niu and Yuantao Yang and Yueyan Li and Yushi Bai and Yuxiao Dong and Zehan Qi and Zhaoyu Wang and Zhen Yang and Zhengxiao Du and Zhenyu Hou and Zihan Wang},year={2024},eprint={2406.12793},archivePrefix={arXiv},primaryClass={id='cs.CL' full_name='Computation and Language' is_active=True alt_name='cmp-lg' in_archive='cs' is_general=False description='Covers natural language processing. Roughly includes material in ACM Subject Class I.2.7. Note that work on artificial languages (programming languages, logics, formal systems) that does not explicitly address natural-language issues broadly construed (natural-language processing, computational linguistics, speech, text retrieval, etc.) is not appropriate for this area.'}
}

模型性能

以下模型性能均由Atlas 800T A2硬件环境下测试得出。

ConfigTaskDatasetsSeqLengthPhasePerformance
GLM-4-9Btext_generation-8192Predict256 tokens/s

以下模型性能均由Atlas 900 A2 PoDc硬件环境下测试得出。

ConfigTaskDatasetsSeqLengthPhasePerformance
GLM-4-9Btext_generationalpaca8192Finetune2339 tokens/s/p

模型文件

GLM-4-9B-ChatGLM-4-9B 基于 mindformers 实现,主要涉及的文件有:

  1. 模型具体实现:

    mindformers/models/glm2            # glm4复用glm2的代码实现├── __init__.py├── convert_weight.py          # huggingface权重转ckpt实现├── glm2.py                    # 模型实现├── glm2_config.py             # 模型配置项├── glm2_modules.py            # 模组实现├── glm4_tokenizer.py          # tokenizer└── glm2_transformer.py        # transformer层实现
    
  2. 模型配置:

    configs/glm4├── predict_glm4_9b_chat.yaml        # Atlas 800T A2推理配置└── finetune_glm4_9b.yaml            # Atlas 800T A2微调配置
    

2、环境及数据准备

(1)、安装环境

MindFormers软硬件配套关系以及安装参考环境安装指南 和版本匹配关系。

(2)、数据准备

数据集下载

MindFormers提供alpaca数据集示例处理脚本制作微调示例数据集。

数据集名称适用模型适用阶段下载链接
alpacaglm4-9bFinetuneLink

数据预处理中所用的tokenizer.model可以参考模型权重下载进行下载。

alpaca 数据预处理

执行mindformers/tools/dataset_preprocess/glm4/alpaca_converter.py,将原始数据集转换为jsonl格式。

python mindformers/tools/dataset_preprocess/glm4/alpaca_converter.py \--data_path /path/alpaca_data.json \--output_path /path/alpaca_glm4_data.jsonl# 参数说明
data_path:   输入下载的文件路径
output_path: 输出文件的保存路径

执行mindformers/tools/dataset_preprocess/glm4/glm4_preprocess.py文件,进行数据预处理和Mindrecord数据生成。

python mindformers/tools/dataset_preprocess/glm4/glm4_preprocess.py \--input_glob /path/alpaca_glm4_data.jsonl \--vocab_file /path/tokenizer.model \--seq_length 8192 \--output_file /path/alpaca-messages.mindrecord# 参数说明
input_glob:   转换后的alpaca的文件路径
vocab_file:   tokenizer.model文件路径
seq_length:   输出数据的序列长度
output_file:  输出文件的保存路径

(3)、模型权重准备

模型权重下载

MindFormers提供已经转换完成的预训练权重、词表文件用于微调和推理,用户也可以下载HuggingFace官方权重经过模型权重转换 后进行使用。

模型名称MindSpore权重HuggingFace权重
GLM-4-9B-Chat/Link
GLM-4-9B/Link

注:词表文件为对应权重文件目录下tokenizer.model文件

模型权重转换

执行convert_weight.py转换脚本,将HuggingFace的权重转换为完整的ckpt权重。

python convert_weight.py --torch_ckpt_path TORCH_CKPT_DIR --mindspore_ckpt_path {path}/MS_CKPT_NAME# 参数说明
torch_ckpt_path:  下载HuggingFace权重的文件夹路径
mindspore_ckpt_path: 转换后的MindSpore权重文件保存路径

3、模型全参微调

MindFormers提供GLM4-9b单机多卡微调示例,过程中使用alpaca数据集对模型进行预训练,数据集可以参考数据集下载获得。

设置如下环境变量:

export MS_ASCEND_CHECK_OVERFLOW_MODE=INFNAN_MODE

单机训练

GLM4-9b单机8卡微调为例,使用配置文件configs/glm4/finetune_glm4_9b.yaml

执行如下命令启动微调任务。

bash scripts/msrun_launcher.sh "run_mindformer.py \--config configs/glm4/finetune_glm4_9b.yaml \--load_checkpoint /path/GLM4_9b.ckpt \--auto_trans_ckpt True \--train_dataset /path/alpaca.mindrecord \--run_mode finetune" 8

4、模型推理

MindFormers提供GLM-4-9B-Chat的快速推理脚本,脚本主要通过generate高阶接口实现,支持单卡多batch推理。 注意:需添加环境变量使能atb的PA算子:export MS_INTERNAL_DISABLE_CUSTOM_KERNEL_LIST=PagedAttention; export MS_LLM_SEQ_LENGTH_INDEX=1; export MS_LLM_FORCE_RESIZE_KERNELS=PagedAttention

bash scripts/examples/glm4/run_glm4_predict.sh CONFIG_PATH CKPT_PATH TOKENIZER# 参数说明
CONFIG_PATH: 模型配置文件路径
CKPT_PATH:   模型权重文件路径
TOKENIZER:   模型tokenizer文件路径

运行如下命令进行推理:

bash scripts/examples/glm4/run_glm4_predict.sh \path/to/glm4/predict_glm4_9b_chat.yaml \path/to/glm4.ckpt# 推理结果
# [gMASK] <sop> <|user|>
# 晚上睡不着应该怎么办 <|assistant|>
# 晚上睡不着觉可能会影响第二天的精神状态和工作效率。以下是一些建议,可以帮助改善睡眠质量:
#
# 1. **规律作息**:尽量每天同一时间上床睡觉和起床,包括周末。
#
# 2. **放松身心**:
#    - **深呼吸**:尝试深呼吸练习,帮助身体放松。
#    - **冥想**:通过冥想放松心情,减少焦虑。
#    - **热水澡**:睡前洗个热水澡有助于身体放松。
#
# 3. **避免刺激性饮料和食物**:睡前避免咖啡、茶、巧克力等含有咖啡因的食品和饮料。
#
# 4. **减少屏幕时间**:睡前减少使用手机、电脑等电子设备,因为屏幕发出的蓝光可能会干扰睡眠。
#
# 5. **舒适的环境**:确保卧室安静、黑暗和适宜的温度。
#
# 6. **适量运动**:白天进行适量的运动有助于晚上更好地入睡,但避免在睡前进行剧烈运动。
#
# 7. **避免白天打盹**:如果白天需要休息,尽量控制在30分钟以内。
#
# 8. **建立睡前仪式**:如阅读、听轻音乐等,帮助大脑逐渐进入睡眠状态。
#
# 9. **咨询专业人士**:如果上述方法都无效,建议咨询医生或睡眠专家。
#
# 10. **心理调适**:有时候,失眠可能与心理因素有关,如焦虑、抑郁等,这时需要寻求心理咨询。
#
# 请根据自己的实际情况尝试这些方法,并注意观察效果。如果失眠问题持续存在,建议及时就医。 <|user|># [gMASK] <sop> <|user|>
# 使用python编写快速排序代码 <|assistant|>
# 下面是一个使用Python编写的快速排序算法的实现。快速排序是一种分而治之的算法,它通过一个基准值将数组分为两个子数组,一个包含小于基准值的元素,另一个包含大于基准值的元素,然后递归地对这两个子数组进行排序。
#
# ```python
# def quick_sort(arr):
#     if len(arr) <= 1:
#         return arr
#     else:
#         pivot = arr[0]
#         less = [x for x in arr[1:] if x <= pivot]
#         greater = [x for x in arr[1:] if x > pivot]
#         return quick_sort(less) + [pivot] + quick_sort(greater)
#
# # 示例
# array = [3, 6, 8, 10, 1, 2, 1]
# sorted_array = quick_sort(array)
# print(sorted_array)
# ```
#
# 这段代码定义了一个`quick_sort`函数,它接受一个列表`arr`作为参数。如果列表的长度小于或等于1,则它已经是有序的,所以直接返回。否则,选择列表的第一个元素作为基准值`pivot`,然后创建两个新的列表`less`和`greater`,分别包含小于和大于基准值的元素。最后,递归地对`less`和`greater`进行快速排序,并将结果与基准值连接起来返回。
#
# 示例中的`array`是一个未排序的列表,调用`quick_sort(array)`后,会得到一个排序后的列表`sorted_array`。 <|user|>
#
# [gMASK] <sop> <|user|>
# 你好呀! <|assistant|>
# 你好👋!很高兴见到你,有什么可以帮助你的吗? <|user|>

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

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

相关文章

文件上传漏洞--理论

什么是文件上传漏洞&#xff1f; Web应用允许用户上传文件&#xff0c;但是没有对上传的文件进行严格的过滤和检测&#xff0c;导致网站执行了文件中包含的恶意代码。 漏洞的基本利用方式是&#xff1a; 成功上传包含恶意代码的文件&#xff0c;并在服务端成功执行该文件。 …

物联网(RFID)全景:被装信息化监控应用与挑战

一、被装物联网信息化建设的动因 信息化改革在20世纪80年代中期启航&#xff0c;旨在提升被装保障的效率。随着时间的推移&#xff0c;硬件的广泛运用和软件的快速迭代&#xff0c;装备业务在规划、制造、分发以及战时支援等核心环节&#xff0c;已经与信息系统深度融合&#x…

解决C盘空间不足的三种方案

方案一&#xff1a;网上盛传的C盘磁盘碎片整理&#x1f9e9;&#xff08;原理&#xff1a;将分散的文件片段整理到相邻的磁盘区域&#xff0c;减少文件的碎片化程度&#xff09;(效果不明显) 方案二&#xff1a;把其他盘的空间给C盘 &#x1f4bd;&#xff08;效果显著&#xf…

[项目代码] YOLOv5 铁路工人安全帽安全背心识别 [目标检测]

YOLOv5是一种单阶段&#xff08;one-stage&#xff09;检测算法&#xff0c;它将目标检测问题转化为一个回归问题&#xff0c;能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法&#xff08;如Faster R-CNN&#xff09;&#xff0c;YOLOv5具有更高的…

有什么初学算法的书籍推荐?

对于初学算法的读者&#xff0c;以下是一些值得推荐的书籍&#xff1a; 1、算法超简单&#xff1a;趣味游戏带你轻松入门与实践 作者&#xff1a;童晶 著 推荐理由&#xff1a;本书把趣味游戏应用于算法教学&#xff0c;提升读者的学习兴趣&#xff0c;并通过可视化的图解和动…

卸载一直显示在运行的应用

GX_work2: 打开文件 CtrlA全选卸载&#xff0c;他会显示有正在运行的软件点击跳过 然后打开被跳过的文件&#xff0c;CtrlA全选卸载 可能还是会显示有正在运行的软件点击跳过 直到出现.exe应用&#xff0c;最后打开任务管理器搜索此.exe应用&#xff0c;关闭它 最后完全卸载…

问:MySQL主从同步的机制梳理?

MySQL主从复制是一种数据库复制技术&#xff0c;通过将一个MySQL数据库服务器&#xff08;主节点&#xff09;的数据复制到一个或多个其他MySQL数据库服务器&#xff08;从节点&#xff09;&#xff0c;实现数据的自动同步。这种技术不仅提高了数据的可用性&#xff0c;还能通过…

基于BILSTM及其他RNN序列模型的人名分类器

数据集Kaggle链接 NameNationalLanguage | Kaggle 数据集分布: 第一列为人名,第二列为国家标签 代码开源地址 Kaggle代码链接 https://www.kaggle.com/code/houjijin/name-nationality-classification Gitee码云链接 人名国籍分类 Name Nation classification: using BI…

期权懂|期权新手入门教学:期权合约有哪些要素?

期权小懂每日分享期权知识&#xff0c;帮助期权新手及时有效地掌握即市趋势与新资讯&#xff01; 期权新手入门教学&#xff1a;期权合约有哪些要素&#xff1f; 期权合约&#xff1a;是指约定买方有权在将来某一时间以特定价格买入或卖出约定标的物的标准化或非标准化合约。期…

Oracle OCP认证考试考点详解082系列16

题记&#xff1a; 本系列主要讲解Oracle OCP认证考试考点&#xff08;题目&#xff09;&#xff0c;适用于19C/21C,跟着学OCP考试必过。 76. 第76题&#xff1a; 题目 解析及答案&#xff1a; 以下哪三项活动会被记录在数据库的警报日志中&#xff1f; A. 块损坏错误 数据库…

【Linux篇】面试——用户和组、文件类型、权限、进程

目录 一、权限管理 1. 用户和组 &#xff08;1&#xff09;相关概念 &#xff08;2&#xff09;用户命令 ① useradd&#xff08;添加新的用户账号&#xff09; ② userdel&#xff08;删除帐号&#xff09; ③ usermod&#xff08;修改帐号&#xff09; ④ passwd&…

论文阅读《机器人状态估计中的李群》

目录 摘要1 介绍2 微李理论2.1 李群2.2 group actions2.3 正切空间和李代数 摘要 李群是一个古老的数学抽象对象&#xff0c;可以追溯到19世纪&#xff0c;当时数学家 Sophus Lie奠定了连续变换群理论的基础。多年后&#xff0c;它的影响已经蔓延到科学和技术的各个领域。在机…

智能零售柜商品识别

项目源码获取方式见文章末尾&#xff01; 600多个深度学习项目资料&#xff0c;快来加入社群一起学习吧。 《------往期经典推荐------》 项目名称 1.【基于CNN-RNN的影像报告生成】 2.【卫星图像道路检测DeepLabV3Plus模型】 3.【GAN模型实现二次元头像生成】 4.【CNN模型实现…

综合案例铁锅炖(CSS项目大杂烩)

小工具&#xff1a;snipaste 全世界最好用的截图工具来了 Snipaste是一个强大简单的截图工具&#xff0c;方便的点就在于可以把截图贴回屏幕上 常用快捷方式有这些&#xff1a; 1.F1截图&#xff0c;同时测量大小&#xff0c;设置箭头&#xff0c;文字书写 2.F3在桌面置顶显示…

稀疏视角CBCT重建的几何感知衰减学习|文献速递-基于深度学习的病灶分割与数据超分辨率

Title 题目 Geometry-Aware Attenuation Learning forSparse-View CBCT Reconstruction 稀疏视角CBCT重建的几何感知衰减学习 01 文献速递介绍 稀疏视角锥形束计算机断层扫描&#xff08;CBCT&#xff09;重建的几何感知学习方法 锥形束计算机断层扫描&#xff08;CBCT&a…

河南省的一级科技查新机构有哪些?

科技查新&#xff0c;简称查新&#xff0c;是指权威机构对查新项目的新颖性作出文献评价的情报咨询服务。这一服务在科研立项、成果鉴定、项目申报等方面发挥着至关重要的作用。河南省作为中国的重要科技和教育基地&#xff0c;拥有多个一级科技查新机构&#xff0c;为本省及全…

https网站 请求http图片报错:net::ERR_SSL_PROTOCOL_ERROR

问题描述 场景&#xff1a; https网站&#xff0c;请求http图片资源报错&#xff1a;net::ERR_SSL_PROTOCOL_ERROR 原因&#xff1a; Chrome 81 中&#xff0c;对混合内容资源加载策略进行了改变&#xff0c;会自动升级到 https:// &#xff0c;如果无法通过 https:// 加载&am…

【机器学习】机器学习中用到的高等数学知识-3.微积分 (Calculus)

3. 微积分 (Calculus) 导数和梯度&#xff1a;用于优化算法&#xff08;如梯度下降&#xff09;中计算损失函数的最小值。偏导数&#xff1a;在多变量函数中优化目标函数。链式法则&#xff1a;在反向传播算法中用于计算神经网络的梯度。 导数和梯度&#xff1a;用于优化算法…

华为大咖说 | 浅谈智能运维技术

本文分享自华为云社区&#xff1a;华为大咖说 | 浅谈智能运维技术-云社区-华为云 本文作者&#xff1a;李文轩 &#xff08; 华为智能运维专家 &#xff09; 全文约2695字&#xff0c;阅读约需8分钟 在大数据、人工智能等新兴技术的加持下&#xff0c;智能运维&#xff08;AI…

WebStorm 如何调试 Vue 项目

前言 在日常开发和各种教程中&#xff0c;最常见的 debug 方式就是在代码中插入 console.log 语句&#xff0c;然后在 Chrome 控制台中查看日志。显而易见&#xff0c;插入console.log 的效率不高&#xff0c;那是否有更高效的 debug 方式呢&#xff1f;断点调试允许开发者在代…