【训练篇】MLU370-M8 完成 qwen1.5-7b-chat-lora训练及推理

文章目录

  • 前言
  • 一、平台环境配置
  • 二、环境 or 模型准备
    • 1.模型下载
    • 2.环境准备
      • 2.1 modelscope
      • 2.2 transformers
      • 2.3 accelerate
      • 2.4 deepspeed
      • 2.5 peft
      • 2.6 环境代码修改
    • 3训练代码准备
    • 4 代码修改
  • 三,训练后推理验证
  • 四.推理效果展示
    • 1.微调前
    • 2.微调后


前言

本期我们采用魔塔的swift来完成qwen1.5-7b-chat的训练,除一些环境安装需要转换,其他的与N卡训练操作一致


一、平台环境配置

卡选择:MLU370-M8 *8
驱动:>5.10.22
镜像选择:pytroch2.1.0

在这里插入图片描述

二、环境 or 模型准备

1.模型下载

apt install git-lfs
git-lfs clone https://www.modelscope.cn/qwen/Qwen1.5-7B-Chat.git

2.环境准备

这里简单概述下哪些环境要进行转换,基本上需要在库中含有cuda字段的,都建议转换下,正常的工具库等直接pip install 即可。

2.1 modelscope

git clone https://github.com/modelscope/modelscope.git
cd modelscope_mlu/requirements && pip install -r framework.txt #安装依赖后开始安装modelsccope
pip install -e ./modelscope_mlu/

2.2 transformers

git clone -b v4.41.0 https://githubfast.com/huggingface/transformers.git
python /torch/src/catch/tools/torch_gpu2mlu/torch_gpu2mlu.py -i transformers/
pip install -e ./transformers_mlu/

2.3 accelerate

git clone https://githubfast.com/huggingface/accelerate.git
python /torch/src/catch/tools/torch_gpu2mlu/torch_gpu2mlu.py -i accelerate/
pip install -e ./accelerate_mlu/

2.4 deepspeed

链接:https://pan.baidu.com/s/1KTkd7SSwTc8vj-RM3Z0MYQ?pwd=gvyw
提取码:gvyw
直接pip install里面的whl文件即可

2.5 peft

git clone -b v0.11.0 https://githubfast.com/huggingface/peft.git
python /torch/src/catch/tools/torch_gpu2mlu/torch_gpu2mlu.py -i peft/
pip install -e ./peft_mlu/

2.6 环境代码修改

如果你Import deepspeed会报错,注释
在这里插入图片描述
peft_mlu/src/peft/utils/save_and_load.py

if use_safetensors:if hasattr(torch.backends, "mps") and (device == torch.device("mps")):adapters_weights = safe_load_file(filename, device="cpu")else:adapters_weights = safe_load_file(filename, device=device)
改成
if use_safetensors:if hasattr(torch.backends, "mps") and (device == torch.device("mps")):adapters_weights = safe_load_file(filename, device="cpu")else:adapters_weights = safe_load_file(filename, device="cpu")

3训练代码准备

下载训练代码

git clone https://github.com/modelscope/swift.git
python /torch/src/catch/tools/torch_gpu2mlu/torch_gpu2mlu.py -i swift/
pip install -e ./swift_mlu/

训练脚本【如果你是mlu3可以直接用这个脚本,如果你是cuda酌情小修改就能直接用了】

export CNCL_MEM_POOL_MULTI_CLIQUE_ENABLE=1
export CNCL_MLU_DIRECT_LEVEL=1
export CNCL_SLICE_SIZE=100000
export CNCL_MEM_POOL_ENABLE=0
export MLU_VISIBLE_DEVICES=0,1,2,3,4,5,6,7
torchrun \--nproc_per_node=8 \--master_port 29500 \/workspace/volume/guojuncshi1/swift_mlu/examples/pytorch/llm/llm_sft.py \--model_id_or_path /workspace/volume/guojuncshi1/Qwen1.5-7B-Chat \--model_revision master \--sft_type lora \--tuner_backend peft \--template_type qwen \--dtype fp16 \--output_dir out/train/exp/weights \--ddp_backend cncl \--custom_train_dataset_path train.jsonl \--custom_val_dataset_path dev.jsonl \--train_dataset_sample -1 \--num_train_epochs 2 \--max_length 1024 \--check_dataset_strategy warning \--lora_rank 8 \--lora_alpha 32 \--lora_dropout_p 0.05 \--lora_target_modules ALL \--gradient_checkpointing true \--batch_size 1 \--weight_decay 0.1 \--learning_rate 1e-4 \--gradient_accumulation_steps $(expr 16 / 8) \--max_grad_norm 0.5 \--warmup_ratio 0.03 \--eval_steps 100 \--save_steps 100 \--save_total_limit 2 \--logging_steps 10 \--use_flash_attn false 

train.jsonl是服装数据集
数据集样例:

{"instruction": "类型#上衣*材质#牛仔布*颜色#白色*风格#简约*图案#刺绣*衣样式#外套*衣款式#破洞", "input": "", "output": "简约而不简单的牛仔外套,白色的衣身十分百搭。衣身多处有做旧破洞设计,打破单调乏味,增加一丝造型看点。衣身后背处有趣味刺绣装饰,丰富层次感,彰显别样时尚。"}
{"instruction": "类型#裙*材质#针织*颜色#纯色*风格#复古*风格#文艺*风格#简约*图案#格子*图案#纯色*图案#复古*裙型#背带裙*裙长#连衣裙*裙领型#半高领", "input": "", "output": "这款BRAND针织两件套连衣裙,简约的纯色半高领针织上衣,修饰着颈部线,尽显优雅气质。同时搭配叠穿起一条背带式的复古格纹裙,整体散发着一股怀旧的时髦魅力,很是文艺范。"}
{"instruction": "类型#上衣*风格#嘻哈*图案#卡通*图案#印花*图案#撞色*衣样式#卫衣*衣款式#连帽", "input": "", "output": "嘻哈玩转童年,随时<UNK>,没错,出街还是要靠卫衣来装酷哦!时尚个性的连帽设计,率性有范还防风保暖。还有胸前撞色的卡通印花设计,靓丽抢眼更富有趣味性,加上前幅大容量又时尚美观的袋鼠兜,简直就是孩子耍帅装酷必备的利器。"}
{"instruction": "类型#裤*风格#英伦*风格#简约", "input": "", "output": "裤子是简约大方的版型设计,带来一种极简主义风格而且不乏舒适优雅感,是衣橱必不可少的一件百搭单品。标志性的logo可以体现出一股子浓郁的英伦风情,轻而易举带来独一无二的<UNK>体验。"}
{"instruction": "类型#裙*裙下摆#弧形*裙腰型#高腰*裙长#半身裙*裙款式#不规则*裙款式#收腰", "input": "", "output": "这款来自梵凯的半身裙富有十足的设计感,采用了别致的不规则设计,凸显出时尚前卫的格调,再搭配俏皮的高腰设计,收腰提臀的同时还勾勒出优美迷人的身材曲线,而且还帮你拉长腿部比例,释放出优雅娇俏的小女人味。并且独特的弧形下摆还富有流畅的线条美,一颦一动间展现出灵动柔美的气质。"}

4 代码修改

修改1:为了直接让模型选择我们下载的模型进行训练
/workspace/volume/guojuncshi1/swift_mlu/swift/llm/utils/model.py #根据模糊路径修改你自己的代码

 qwen1half_7b_chat = 'qwen1half-7b-chat' 改成你自己的模型路径@register_model(ModelType.qwen1half_7b_chat,'qwen/Qwen1.5-7B-Chat',改成你自己的模型路径LoRATM.llama,TemplateType.qwen,support_flash_attn=True,support_vllm=True,requires=['transformers>=4.37'],hf_model_id='Qwen/Qwen1.5-7B-Chat')

直接run起来
在这里插入图片描述

三,训练后推理验证

将路径改成你自己的路径

from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
import torch_mlu
device = "mlu" # the device to load the model onto
peft_model = "/workspace/volume/guojuncshi1/Qwen1.5-7B-Chat/v6-20240627-173047/checkpoint-6500"#换成你训练的模型
model = AutoModelForCausalLM.from_pretrained("/workspace/volume/guojuncshi1/Qwen1.5-7B-Chat",device_map="auto"
)
model.load_adapter(peft_model)
model.to(torch.device("mlu"))
tokenizer = AutoTokenizer.from_pretrained("/workspace/volume/guojuncshi1/Qwen1.5-7B-Chat")prompt = "类型#上衣*材质#牛仔布*颜色#白色*风格#简约*图案#刺绣*衣样式#外套*衣款式#破洞"
messages = [{"role": "system", "content": "You are a helpful assistant."},{"role": "user", "content": prompt}
]
text = tokenizer.apply_chat_template(messages,tokenize=False,add_generation_prompt=True
)
model_inputs = tokenizer([text], return_tensors="pt").to(device)generated_ids = model.generate(model_inputs.input_ids,max_new_tokens=512
)
generated_ids = [output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
]response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
print(response)

四.推理效果展示

问题:类型#上衣材质#牛仔布颜色#白色风格#简约图案#刺绣衣样式#外套衣款式#破洞

1.微调前

这款牛仔外套是简约风格的不二之选。整体以白色为主调,展现出干净利落的气息,无论春夏秋冬都能轻松驾驭。设计上,它巧妙融入了刺绣元素,精致而不浮夸,为纯色的外套增添了一抹艺术感,提升了整体层次感。外套采用了破洞的设计,打破常规的单调,透出一丝叛逆与不羁,符合现代年轻人追求个性的特点。这种细节处理不仅增加了服装的时尚感,也彰显出你的独特品味。无论是搭配休闲裤还是裙子,都能展现出别样的街头风格,是一款非常有型的单品。

2.微调后

这款简约的牛仔外套,采用了破洞元素的设计,让原本单调的牛仔外套瞬间变得时髦有型。衣身点缀了精致的白色刺绣,更显精致与细腻。

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

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

相关文章

distance delayed sound

distance delayed sound 在本章中&#xff0c;我们将讨论在游戏音频中使用距离延迟的重要性。我们将首先通过一个常见的例子——闪电和雷鸣&#xff0c;来展示这种重要性并解释距离延迟音频的基础知识。我们将讨论计算速度、距离和时间的数学和方程式&#xff0c;以确定距离延迟…

数据倾斜优化:Hive性能提升的核心

文章目录 1. 定义2. 数据倾斜2.1 Map2.2 Join2.3 Reduce 3. 写在最后 1. 定义 数据倾斜&#xff0c;也称为Data Skew&#xff0c;是在分布式计算环境中&#xff0c;由于数据分布不均匀导致某些任务处理的数据量远大于其他任务&#xff0c;从而形成性能瓶颈的现象。这种情况在H…

PotPlayer安装及高分辨率设置

第1步&#xff1a; 下载安装PotPlayer软件 PotPlayer链接&#xff1a;https://pan.baidu.com/s/1hW168dJrLBonUnpLI6F3qQ 提取码&#xff1a;z8xd 第2步&#xff1a; 下载插件&#xff0c;选择系统对应的位数进行运行&#xff0c;该文件不能删除&#xff0c;删除后将失效。 …

【强化学习的数学原理】课程笔记--2(贝尔曼最优公式,值迭代与策略迭代)

目录 贝尔曼最优公式最优 Policy求解贝尔曼最优公式求解最大 State Value v ∗ v^* v∗根据 v ∗ v^* v∗ 求解贪婪形式的最佳 Policy π ∗ \pi^* π∗一些证明过程 一些影响 π ∗ \pi^* π∗ 的因素如何让 π ∗ \pi^* π∗ 不 “绕弯路” γ \gamma γ 的影响reward 的…

2024/6/30周报

文章目录 摘要ABSTRACT文献阅读题目问题本文贡献方法LSTMTCN模型总体架构 实验实验结果 深度学习TCN-LSTM代码运行结果 总结 摘要 本周阅读了一篇关于TCN和LSTM进行光伏功率预测的文章&#xff0c;本文提出了一种利用LSTM-TCN预测光伏功率的新模型。它由长短期记忆和时间卷积网…

ThreadPoolExecutor基于ctl变量的声明周期管理

个人博客 ThreadPoolExecutor基于ctl变量的声明周期管理 | iwts’s blog 总集 想要完整了解下ThreadPoolExecutor&#xff1f;可以参考&#xff1a; 基于源码详解ThreadPoolExecutor实现原理 | iwts’s blog ctl字段的应用 线程池内部使用一个变量ctl维护两个值&#xff…

树莓派开发之文件传输

文章目录 一、简介使用U盘传输文件使用SD卡传输文件使用Xftp 7传输文件 二、 总结 一、简介 在树莓派开发中经常会用到文件传输&#xff0c;下面介绍几种树莓派文件传输的几种方法。 使用U盘传输文件 &#xff08;1&#xff09;复制所需传输文件到U盘 &#xff08;2&#…

C++:typeid4种cast转换

typeid typeid typeid是C标准库中提供的一种运算符&#xff0c;它用于获取类型的信息。它主要用于类型检查和动态类型识别。当你对一个变量或对象使用typeid运算符时&#xff0c;它会返回一个指向std::type_info类型的指针&#xff0c;这个信息包含了关于该类型名称、大小、基…

Pikachu靶场--Sql Inject

参考借鉴 pikachu靶场练习&#xff08;详细&#xff0c;完整&#xff0c;适合新手阅读&#xff09;-CSDN博客 数字型注入(post) 这种类型的SQL注入利用在用户输入处插入数值&#xff0c;而不是字符串。攻击者试图通过输入数字来修改SQL查询的逻辑&#xff0c;以执行恶意操作。…

Unity Shader 极坐标

Unity Shader 极坐标 前言项目简单极坐标极坐标变体之方形极坐标变体之圆形拉花 鸣谢 前言 极坐标记录 项目 简单极坐标 极坐标变体之方形 极坐标变体之圆形 拉花 鸣谢 【菲兹杂货铺】【Unity Shader教程】极坐标实现以及极坐标的两种变体

【87 backtrader期权策略】基于50ETF期权的covered-call-strategy

前段时间有读者希望能够实现一个期权策略的模板,这段时间通过akshare下载了期权的数据,并进行了清洗,写了一个最简单的期权策略,供大家参考。 策略逻辑: 这是151 trading strategies中的一个期权策略。 买入50ETF基金,手续费按照万分之二计算,一直持有卖出一个最远期的…

【实施】系统实施方案(软件方案Word)

软件实施方案 二、 项目介绍 三、 项目实施 四、 项目实施计划 五、 人员培训 六、 项目验收 七、 售后服务 八、 项目保障措施 软件开发全套资料获取&#xff1a;私信或者进主页获取。 软件产品&#xff0c;特别是行业解决方案软件产品不同于一般的商品&#xff0c;用户购买软…

13_旷视轻量化网络--ShuffleNet V2

回顾一下ShuffleNetV1:08_旷视轻量化网络--ShuffleNet V1-CSDN博客 1.1 简介 ShuffleNet V2是在2018年由旷视科技的研究团队提出的一种深度学习模型&#xff0c;主要用于图像分类和目标检测等计算机视觉任务。它是ShuffleNet V1的后续版本&#xff0c;重点在于提供更高效的模…

antd Select前端加模糊搜索

背景&#xff1a;前端的小伙伴经常在开发antd Select的时候后端不提供搜索模糊搜索接口&#xff0c;而是全量返回数据&#xff0c;这个时候就需要我们前端自己来写一个模糊搜索了。 效果 代码截图 代码 <SelectshowSearchmode"multiple"options{studioList}filte…

运维锅总详解Prometheus

本文尝试从Prometheus简介、架构、各重要组件详解、relable_configs最佳实践、性能能优化及常见高可用解决方案等方面对Prometheus进行详细阐述。希望对您有所帮助&#xff01; 一、Prometheus简介 Prometheus 是一个开源的系统监控和报警工具&#xff0c;最初由 SoundCloud …

基于模糊神经网络的时间序列预测(以hopkinsirandeath数据集为例,MATLAB)

模糊神经网络从提出发展到今天,主要有三种形式&#xff1a;算术神经网络、逻辑模糊神经网络和混合模糊神经网络。算术神经网络是最基本的&#xff0c;它主要是对输入量进行模糊化&#xff0c;且网络结构中的权重也是模糊权重&#xff1b;逻辑模糊神经网络的主要特点是模糊权值可…

Python技术笔记汇总(含语法、工具库、数科、爬虫等)

对Python学习方法及入门、语法、数据处理、数据可视化、空间地理信息、爬虫、自动化办公和数据科学的相关内容可以归纳如下&#xff1a; 一、Python学习方法 分解自己的学习目标&#xff1a;可以将学习目标分基础知识&#xff0c;进阶知识&#xff0c;高级应用&#xff0c;实…

2024 vue3入门教程:windows系统下部署node环境

一、打开下载的node官网 Node.js — 下载 Node.js 二、根据个人喜好的下载方法&#xff0c;下载到自己的电脑盘符下 三、我用的是方法3下载的压缩包&#xff0c;解压到E盘nodejs目录下&#xff08;看个人&#xff09; 四、配置电脑的环境变量&#xff0c;新建环境变量的时候…

【ESP32】打造全网最强esp-idf基础教程——14.VFS与SPIFFS文件系统

VFS与SPIFFS文件系统 这几天忙着搬砖&#xff0c;差点没时间更新博客了&#xff0c;所谓一日未脱贫&#xff0c;打工不能停&#xff0c;搬砖不狠&#xff0c;明天地位不稳呀。 不多说了&#xff0c;且看以下内容吧~ 一、VFS虚拟文件系统 先来看下文件系统的定义&#x…

vue中【事件修饰符号】详解

在Vue中&#xff0c;事件修饰符是一种特殊的后缀&#xff0c;用于修改事件触发时的默认行为。以下是Vue中常见的事件修饰符的详细解释&#xff1a; .stop 调用event.stopPropagation()&#xff0c;阻止事件冒泡。当你在嵌套元素中都有相同的事件监听器&#xff08;如click事件…