寒武纪芯片MLU370-M8完成GLM2-6B多轮对话Ptuning-v2

2023-10-27 18:10

本文主要是介绍寒武纪芯片MLU370-M8完成GLM2-6B多轮对话Ptuning-v2,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 前言
  • 一、环境准备
    • 1.云平台环境准备
    • 2.私有库安装
    • 3.快速模型下载
    • 4.代码修改
  • 二、开始运行
    • 1.启动脚本
    • 2.运行状态
  • 总结


前言

前几篇讲到了有关大模型在寒武纪卡上推理,是不是觉得越来越简单了,接下来上干活知识,基于寒武纪卡完成大模型微调,以及后面还会讲到基于寒武纪卡完成数字人训练+推理,敬请期待。

废话不多说,我们现在开始


一、环境准备

1.云平台环境准备

云平台环境选择:(这里得夸一下现在云平台PLUS完美升级,可以直接平台vscode操作,方便的很)
在这里插入图片描述
选择mlu370-M8卡 + pytorch 1.9 py3.7环境 存储卷记得挂哦,你问我平台在哪里?私聊我或者别的博客微信咨询
在这里插入图片描述
显示运行中,然后直接vscode运行就可以了

2.私有库安装

有时候我在想如果直接把编译好的库给大家是不是更方便,想想算了,还是教操作吧,感受国产卡得易操作上手

源码下载

git clone https://github.com/THUDM/ChatGLM2-6B.git  

transformers==4.30.2安装

git clone https://github.com/huggingface/transformers.git  #4.30.2
python /torch/src/catch/tools/torch_gpu2mlu.py -i transformers-4.30.2/  #算子转换
pip install -e ./transformers-4.30.2_mlu/ -i http://pypi.mirrors.ustc.edu.cn/simple/ --trusted-host pypi.mirrors.ustc.edu.cn

accelerate安装

git clone https://github.com/huggingface/accelerate.git #0.20.2
python /torch/src/catch/tools/torch_gpu2mlu.py -i accelerate-0.20.2/ #算子转换的pip install -e ./accelerate-0.20.2_mlu/ -i http://pypi.mirrors.ustc.edu.cn/simple/ --trusted-host pypi.mirrors.ustc.edu.cn

deepspeed 安装要联系me

常规库安装

pip install modelscope cpm_kernels rouge_chinese nltk jieba datasets sentencepiece -i http://pypi.mirrors.ustc.edu.cn/simple/ --trusted-host pypi.mirrors.ustc.edu.cn

3.快速模型下载

用魔塔社区快速下载

# 备注:最新模型版本要求modelscope >= 1.9.0
# pip install modelscope -U from modelscope.utils.constant import Tasks
from modelscope import Model
from modelscope.pipelines import pipeline
model = Model.from_pretrained('ZhipuAI/chatglm2-6b', device_map='auto', revision='v1.0.12')

模型存放位置位于/root/.cache/modelscope/hub/ZhipuAI/chatglm2-6b

模型下载完成即可,我们不用modelscope训练,后续报错可以不用管

4.代码修改

/root/.cache/modelscope/hub/ZhipuAI/chatglm2-6b/modeling_chatglm.py

注释 from torch.nn.utils import skip_init
改成:
def skip_init(module_cls, *args, **kwargs):if not issubclass(module_cls, torch.nn.Module):raise RuntimeError('Expected a Module; got {}'.format(module_cls))final_device = kwargs.pop('device', 'cpu')kwargs['device'] = 'meta'return module_cls(*args, **kwargs).to_empty(device=final_device)
.all()移到cpu运行
if(attention_mask is not None and not attention_mask.cpu().all()) or (past_key_values and seq_length != 1):full_attention_mask = self.get_masks(input_ids, past_key_values, padding_mask=attention_mask)
修改数据类型
self.rotary_pos_emb = RotaryEmbedding(rotary_dim // 2, original_impl=config.original_rope, device=device,#   dtype=config.torch_dtypedtype = torch.float32)
注释这一块
# if sys.platform != 'darwin':
#     torch._C._jit_set_profiling_mode(False)
#     torch._C._jit_set_profiling_executor(False)
#     torch._C._jit_override_can_fuse_on_cpu(True)
#     torch._C._jit_override_can_fuse_on_gpu(True)

5.数据集制作

{"prompt": "长城h3风扇不转。继电器好的。保险丝好的传感器新的风扇也新的这是为什么。就是继电器缺一个信号线", "response": "用电脑能读数据流吗?水温多少", "history": []}
{"prompt": "95", "response": "上下水管温差怎么样啊?空气是不是都排干净了呢?", "history": [["长城h3风扇不转。继电器好的。保险丝好的传感器新的风扇也新的这是为什么。就是继电器缺一个信号线", "用电脑能读数据流吗?水温多少"]]}
{"prompt": "是的。上下水管都好的", "response": "那就要检查线路了,一般风扇继电器是由电脑控制吸合的,如果电路存在断路,或者电脑坏了的话会出现继电器不吸合的情况!", "history": [["长城h3风扇不转。继电器好的。保险丝好的传感器新的风扇也新的这是为什么。就是继电器缺一个信号线", "用电脑能读数据流吗?水温多少"], ["95", "上下水管温差怎么样啊?空气是不是都排干净了呢?"]]}

数据集要做多点喔,不然会运行报错的

二、开始运行

1.启动脚本

PRE_SEQ_LEN=128
LR=1e-2
export CNCL_MEM_POOL_MULTI_CLIQUE_ENABLE=1
export CNCL_MLU_DIRECT_LEVEL=1
export CNCL_SLICE_SIZE=2097152
export CNCL_MEM_POOL_ENABLE=0
export MLU_VISIBLE_DEVICES=0,1,2,3,4,5,6,7
python -m torch.distributed.run --nnodes 1 --nproc_per_node 8 main.py \--do_train \--train_file /workspace/volume/guojun-yicixing/ChatGLM2-6B-main/ptuning/train.json \--validation_file /workspace/volume/guojun-yicixing/ChatGLM2-6B-main/ptuning/val.json \--preprocessing_num_workers 10 \--prompt_column prompt \--response_column response \--history_column history \--overwrite_cache \--model_name_or_path /root/.cache/modelscope/hub/ZhipuAI/chatglm2-6b \--output_dir  output/adgen-chatglm2-6b-pt-$PRE_SEQ_LEN-$LR \--overwrite_output_dir \--max_source_length 256 \--max_target_length 256 \--per_device_train_batch_size 1 \--per_device_eval_batch_size 1 \--gradient_accumulation_steps 16 \--predict_with_generate \--max_steps 3000 \--logging_steps 10 \--save_steps 1000 \--learning_rate $LR \--pre_seq_len $PRE_SEQ_LEN \--fp16

2.运行状态

在这里插入图片描述
右侧显存及使用率正常,训练出来的模型和英伟达一致正常推理代码,将.cuda()改为.mlu()就可以了


总结

目前Mlu能跑几乎很多算法,下一期来一期数字人推理+数字人训练吧

这篇关于寒武纪芯片MLU370-M8完成GLM2-6B多轮对话Ptuning-v2的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/287447

相关文章

Java 后端接口入参 - 联合前端VUE 使用AES完成入参出参加密解密

加密效果: 解密后的数据就是正常数据: 后端:使用的是spring-cloud框架,在gateway模块进行操作 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>30.0-jre</version></dependency> 编写一个AES加密

野火霸天虎V2学习记录

文章目录 嵌入式开发常识汇总1、嵌入式Linux和stm32之间的区别和联系2、stm32程序下载方式3、Keil5安装芯片包4、芯片封装种类5、STM32命名6、数据手册和参考手册7、什么是寄存器、寄存器映射和内存映射8、芯片引脚顺序9、stm32芯片里有什么10、存储器空间的划分11、如何理解寄存器说明12、如何操作寄存器的某一位 STM32F407芯片学习1、stm32单片机启动流程s

在亚马逊云科技上利用Graviton4代芯片构建高性能Java应用(上篇)

简介 在AI迅猛发展的时代,芯片算力对于模型性能起到了至关重要的作用。一款能够同时兼具高性能和低成本的芯片,能够帮助开发者快速构建性能稳定的生成式AI应用,同时降低开发成本。今天小李哥将介绍亚马逊推出的4代高性能计算处理器Gravition,带大家了解如何利用Graviton芯片为Java生成式AI应用提高性能、优化成本。 本篇文章将介绍如何在云平台上创建Graviton芯片服务器,并在Gra

2024年AI芯片峰会——边缘端侧AI芯片专场

概述 正文 存算一体,解锁大模型的边端侧潜力——信晓旭 当下AI芯片的亟需解决的问题 解决内存墙问题的路径 产品 面向大模型的国产工艺边缘AI芯片创新与展望——李爱军 端侧AI应用“芯”机遇NPU加速终端算力升级——杨磊 边缘端的大模型参数量基本小于100B AI OS:AI接口直接调用AI模型完成任务 具身智能的大脑芯片 大模

如何完成本科毕业论文设计

完成本科毕业论文设计是一个系统性的工程,需要经过多个阶段的规划、执行和总结。以下是一个详细的步骤指南,帮助你顺利完成本科毕业论文设计。 ### 1. 选题与开题 - **选题**:选择一个有研究价值且你感兴趣的题目。与导师讨论,确保题目具有可行性和创新性。 - **开题报告**:撰写开题报告,包括研究背景、研究目的、研究内容、研究方法、预期成果等。 ### 2. 文献综述 - **文献检索**

LabVIEW环境中等待FPGA模块初始化完成

这个程序使用的是LabVIEW环境中的FPGA模块和I/O模块初始化功能,主要实现等待FAM(Field-Programmable Gate Array Module,FPGA模块)的初始化完成,并处理初始化过程中的错误。让我们逐步分析各部分的功能: 1. Wait for FAM Initialization框架 此程序框架用于等待I/O模块成功初始化。如果在5秒钟内模块没有完成配

2024年AI芯片峰会——AI芯片架构创新专场

概述 2024年9月7日于北京举行。 官方链接: 大会官网 正文 对存内计算的思考——戴瑾 面向边缘端大语言模型的RPP架构芯片与落地实践——李原 LLM推理端的特征 边缘计算的特征 来源《联想集团边缘计算白皮书》出炉 Llama2计算过程举例 RPP架构 RPP软件栈 RPP的PPA AI 芯片架构创新开启打算里第二增长曲

生日贺卡录放音芯片,多段音频录音ic生产厂商,NVF04M-32minute

可以录音播放的生日贺卡与传统的纸质贺卡相比,它有着创意以及个性的特点,仅需少量的电子元器件,即可实现录音功能,搭配上文字,让声音存储在生日贺卡里,让贺卡也变得有温度,祝福我想亲口对TA说。 生日贺卡录放音芯片方案——NVF04M 采用外挂SPI存储器的方式,达到录音的功能。它的主要特点是声音清晰,录音时间长。目前可以提供的录音时间为32分钟。NV04FM的一个显著特点是存储时间灵活,客

Banana Pi BPI-SM9 AI 计算模组采用算能科技BM1688芯片方案设计

产品概述 香蕉派 Banana Pi BPI-SM9 16-ENC-A3 深度学习计算模组搭载算能科技高集成度处理器 BM1688,功耗低、算力强、接口丰富、兼容性好。支持INT4/INT8/FP16/BF16/FP32混合精度计算,可支持 16 路高清视频实时分析,灵活应对图像、语音、自然语言等场景,可集成于智算服务器、边缘智算盒、工控机、无人机、AIOT等多种类型产品。 Banana

完成一个项目的流程

我自己总结的,有什么问题,请大家指点啊! 1. 制定项目的周期。工具:project 2. 确定需求,设计界面。工具:Axure 3. 写需求文档。 4. 写接口文档。 5. 设计项目架构。工具:Visio 6. 做图。工具:ps 7. 编码。 8. 写测试用例。 9.测试。