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

news2025/1/21 3:02:58

文章目录

  • 前言
  • 一、平台环境配置
  • 二、环境 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.coloradmin.cn/o/1880586.html

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

相关文章

局域网必备文件传输神器,吾爱再出精品,支持电脑、手机无缝对接!

今天给大家带来的不是一般的干货&#xff0c;而是一款让阿星我爱不释手的局域网文件传输神器&#xff0c;而且是吾爱大佬出品。无论是工作还是生活&#xff0c;它都能给你带来极大的便利。这年头&#xff0c;谁还没个跨设备传输文件的需求呢&#xff1f; 手机、电脑、平板&…

一个中文和越南语双语版本的助贷平台开源源码

一个中文和越南语双语版本的助贷平台开源源码。后台试nodejs。 后台 代理 前端均为vue源码&#xff0c;前端有中文和越南语。 前端ui黄色大气&#xff0c;逻辑操作简单&#xff0c;注册可对接国际短信&#xff0c;可不对接。 用户注册进去填写资料&#xff0c;后台审批&…

python(一)下载安装入门

一.下载安装 1、官网下载地址&#xff1a; Python Releases for Windows | Python.org 2、下载安装 1.下载python包&#xff1a;点击下载 2.安装 2.默认点击next即可 3.选择你想安装的路径&#xff0c;点击install即可 4.这里如果出现管理员字样&#xff0c;点击授权即可 安…

专题一: Spring生态初探

咱们先从整体脉络上看下Spring有哪些模块&#xff0c;重要的概念有个直观印象。 从Spring框架的整体架构和组成对整体框架有个认知。 Spring框架基础概念 Spring基础 - Spring和Spring框架组成 上图是从官网4.2.x获取的原图&#xff0c;目前我们使用最广法的版本应该都是5.x&am…

医院管理系统带万字文档医院预约挂号管理系统基于spingboot和vue的前后端分离java项目java课程设计java毕业设计

文章目录 仓库管理系统一、项目演示二、项目介绍三、万字项目文档四、部分功能截图五、部分代码展示六、底部获取项目源码带万字文档&#xff08;9.9&#xffe5;带走&#xff09; 仓库管理系统 一、项目演示 医院管理系统 二、项目介绍 基于springbootvue的前后端分离医院管…

鱼叉式钓鱼

鱼叉式网络钓鱼&#xff1a; 鱼叉式网络钓鱼是一种网络钓鱼形式&#xff0c;它针对特定个人或组织发送定制消息&#xff0c;旨在引发特定反应&#xff0c;例如泄露敏感信息或安装恶意软件。这些攻击高度个性化&#xff0c;使用从各种来源收集的信息&#xff0c;例如社交媒体资…

运维锅总详解Prometheus

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

【简易版tinySTL】 红黑树- 定义, 插入, 构建

文章目录 旋转左旋右旋 左旋右旋代码实现红黑树的基本性质红黑树的插入红黑树的插入示例红黑树修复代码实现参考资料 旋转 对于一个平衡二叉搜索树&#xff0c;左子树高度为4&#xff0c;右子树高度为2&#xff0c;它们的高度差为2&#xff0c;破坏了平衡性&#xff08;高度差&…

扩展阅读:什么是中断

如果用一句话概括操作系统的原理,那就是:整个操作系统就是一个中断驱动的死循环,用最简单的代码解释如下: while(true){doNothing(); } 其他所有事情都是由操作系统提前注册的中断机制和其对应的中断处理函数完成的。我们点击一下鼠标,敲击一下键盘,执行一个程序,…

忙忙碌碌的混沌之中差点扑了个空而错过年中这条线

文章目录 前言初见端倪混沌初始力不从心心力交瘁拾遗补缺总结 前言 突然意识到过完这个周末已经7月份了&#xff0c;他预示着我的2024年已经过半了&#xff0c;过年回家仿佛还是昨天的事情&#xff0c;怎么转眼间已经到了年中了。心里还是不愿承认这件事&#xff0c;翻开自己2…

使用NFS网关功能将HDFS挂载到本地系统

HDFS安装教程 HDFS安装教程http://t.csdnimg.cn/2ziFd 使用NFS网关功能将HDFS挂载到本地系统 简介 HDFS提供了基于NFS&#xff08;Network File System&#xff09;的插件&#xff0c;可以对外提供NFS网关&#xff0c;供其它系统挂载使用。 NFS 网关支持 NFSv3&#xff0c;并…

etcdctl txn如何使用

TXN 从标准输入中读取多个请求&#xff0c;并将它们应用到单个原子的事务操作中。一个事务包含 一系列的条件、所有条件都满足时要执行的一系列请求、任意条件不满足时要执行的一系列请求。 开启事务&#xff1a; etcdctl txn -i 开启事务后&#xff0c;需要先输入判断条件&a…

Studying-代码随想录训练营day24| 93.复原IP地址、78.子集、90.子集II

第24天&#xff0c;回溯算法part03&#xff0c;牢记回溯三部曲&#xff0c;掌握树形结构结题方法&#x1f4aa; 目录 93.复原IP地址 78.子集 90.子集II 总结 93.复原IP地址 文档讲解&#xff1a;代码随想录复原IP地址 视频讲解&#xff1a;手撕复原IP地址 题目&#xff1…

前端小白必学:对Cookie、localStorage 和 sessionStorage 的简单理解

前言 Cookie、localStorage 和 sessionStorage 作为Web开发领域中广泛采用的三种客户端数据存储技术&#xff0c;它们各自拥有独特的优势、应用场景及限制条件&#xff0c;共同支撑起前端数据管理的多样化需求。也是面试常考题之一&#xff0c;今天就和大家简单谈一下我对它们…

什么是TOGAF架构框架的ADM方法?

ADM是架构开发方法&#xff08; Architecture Development Method&#xff09;&#xff0c;为开发企业架构所要执行的各个步骤以及它们质检的关系进行详细的定义&#xff0c;它是TOGAF规范中最为核心的内容。 ADM的具体步骤&#xff1a; 预备阶段&#xff08;Preliminary Phas…

Redis 高可用(理论)

目录 Redis 高可用 Redis 持久化 RDB 持久化 触发条件 手动触发 自动触发 ##其他自动触发机制## 执行流程 启动时加载 AOF 持久化 执行流程 &#xff08;1&#xff09;命令追加(append) &#xff08;2&#xff09;文件写入(write)和文件同步(sync) &#xff08;3&…

ThreadPoolExecutor 线程回收时机详解

个人博客 ThreadPoolExecutor 线程回收时机详解 | iwts’s blog 总集 想要完整了解下ThreadPoolExecutor&#xff1f;可以参考&#xff1a; 基于源码详解ThreadPoolExecutor实现原理 | iwts’s blog Worker-工作线程管理 线程池设计了内部类Worker&#xff0c;主要是用来…

AI agent是什么,什么技术栈

AI agent&#xff0c;也称为会话代理或聊天机器人&#xff0c; 是一种通过文本或语音模拟人类对话的计算机程序。 它们旨在以自然且引人入胜的方式理解和响应用户输入。 AI agent 被广泛用于各种应用中&#xff0c;包括客户服务、营销、 销售和教育。 有两种主要类型的 AI agen…

2.linux操作系统CPU使用率和平均负载区别

目录 概述cpu使用率区别 结束 概述 linux操作系统CPU 使用率 和 平均负载 区别 负载高并不一定使用率高&#xff0c;有可能 cpu 被占用&#xff0c;但不干活。 cpu使用率 cpu使用率&#xff1a;cpu非空闲态运行的时间占比&#xff0c;反映cpu的繁忙程度&#xff0c;和平均负载…

DS18B20单总线数字温度传感器国产替代MY18E20 MY1820 MY18B20Z MY18B20L(一)

前言 DS18B20是全球第一个单总线数字温度传感器&#xff0c;推出时间已经超过30年&#xff0c;最早由美国达拉斯半导体公司推出&#xff0c;2001年1月&#xff0c;美信以25亿美元收购达拉斯半导体&#xff08;Dallas Semiconductor&#xff09;&#xff0c;而美信在2021年8月被…