10分钟微调专属于自己的大模型

本文主要介绍使用魔搭社区轻量级训练推理工具SWIFT,进行大模型自我认知微调,帮助初阶炼丹师快速微调出专属于自己的大模型。

SWIFT(Scalable lightWeight Infrastructure for Fine-Tuning)是魔搭ModelScope开源社区推出的一套完整的轻量级训练推理工具,基于PyTorch的轻量级、开箱即用的模型微调、推理框架,让AI爱好者用自己的消费级显卡就能玩转大模型和AIGC。

接下来进入手把手实操,如果你有任何疑问、想参与技术交流,文末可以加我们的技术交流群

环境安装

# 设置pip全局镜像
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
# 安装ms-swift
git clone https://github.com/modelscope/swift.git
cd swift
pip install -e .[llm]# 环境对齐 (如果你运行错误, 可以跑下面的代码, 仓库使用最新环境测试)
pip install -r requirements/framework.txt  -U
pip install -r requirements/llm.txt  -U

**微调前推理 **

使用python:

import os
os.environ['CUDA_VISIBLE_DEVICES'] = '0'from swift.llm import ModelType, InferArguments, infer_main
infer_args = InferArguments(model_type=ModelType.qwen_7b_chat, eval_human=True)
infer_main(infer_args)"""
<<< 你是谁?
我是通义千问,由阿里云开发的预训练语言模型。我被设计用来回答各种问题、提供信息和与用户进行对话。有什么我可以帮助你的吗?
--------------------------------------------------
<<< what's your name?
My name is QianWen, developed by Alibaba Cloud. I am designed to answer various questions, provide information, and engage in conversation with users. How can I assist you today?
--------------------------------------------------
<<< 你是谁研发的?
我是由阿里云研发的预训练语言模型。我被设计用来回答各种问题、提供信息和与用户进行对话。有什么我可以帮助你的吗?
--------------------------------------------------
<<< 浙江的省会在哪?
浙江省的省会是杭州市。
--------------------------------------------------
<<< 这有什么好玩的?
杭州是一个历史悠久的城市,拥有许多著名的景点,如西湖、灵隐寺、宋城等。此外,杭州还有许多美食,如西湖醋鱼、龙井虾仁等。
--------------------------------------------------
<<< 晚上睡不着觉怎么办
如果你晚上睡不着觉,可以尝试以下方法:1. 保持规律的作息时间:尽量每天在同一时间上床睡觉和起床,这有助于调整你的生物钟。2. 避免在睡前使用电子设备:电子设备发出的蓝光可能会干扰你的睡眠。3. 创造一个舒适的睡眠环境:保持房间安静、黑暗和凉爽,使用舒适的床上用品。4. 放松身心:尝试一些放松技巧,如深呼吸、瑜伽或冥想。5. 避免摄入咖啡因和酒精:这些物质可能会影响你的睡眠质量。如果以上方法都不能帮助你改善睡眠,建议你咨询医生或专业的睡眠治疗师。
"""

使用CLI:

CUDA_VISIBLE_DEVICES=0 swift infer --model_type qwen-7b-chat --eval_human true

模型微调

提示: 因为自我认知训练涉及到知识编辑, 建议对MLP加lora_target_modules. 你可以通过指定–lora_target_modules ALL在所有的linear层(包括qkvo以及mlp)加lora. 这通常是效果最好的.

使用python:

# Experimental environment: A10, 3090, V100, ...
# 18GB GPU memory
import os
os.environ['CUDA_VISIBLE_DEVICES'] = '0'from swift.llm import DatasetName, ModelType, SftArguments, sft_mainsft_args = SftArguments(model_type=ModelType.qwen_7b_chat,dataset=[DatasetName.alpaca_zh, DatasetName.alpaca_en],train_dataset_sample=500,eval_steps=20,logging_steps=5,output_dir='output',lora_target_modules='ALL',self_cognition_sample=500,model_name=['小黄', 'Xiao Huang'],model_author=['魔搭', 'ModelScope'])
output = sft_main(sft_args)
best_model_checkpoint = output['best_model_checkpoint']
print(f'best_model_checkpoint: {best_model_checkpoint}')"""Out[0]0%|                                                                                                       | 0/62 [00:00<?, ?it/s]`use_cache=True` is incompatible with gradient checkpointing. Setting `use_cache=False`...
{'loss': 1.7662447, 'acc': 0.6080637, 'learning_rate': 9.993e-05, 'epoch': 0.08, 'global_step': 5}
{'loss': 1.54578514, 'acc': 0.62391958, 'learning_rate': 9.738e-05, 'epoch': 0.16, 'global_step': 10}
{'loss': 1.36477156, 'acc': 0.6370544, 'learning_rate': 9.138e-05, 'epoch': 0.24, 'global_step': 15}
{'loss': 1.30135965, 'acc': 0.66137586, 'learning_rate': 8.237e-05, 'epoch': 0.32, 'global_step': 20}32%|██████████████████████████████▎                                                               | 20/62 [02:09<04:26,  6.34s/it]
{'eval_loss': 1.30556977, 'eval_acc': 0.6398641, 'eval_runtime': 3.0399, 'eval_samples_per_second': 1.645, 'eval_steps_per_second': 1.645, 'epoch': 0.32, 'global_step': 20}
100%|████████████████████████████████████████████████████████████████████████████████████████████████| 5/5 [00:01<00:00,  4.53it/s]
[INFO:swift] Saving model checkpoint to /mnt/workspace/my_git/swift/output/qwen-7b-chat/v5-20231202-153019/checkpoint-20
{'loss': 1.27507048, 'acc': 0.66330776, 'learning_rate': 7.099e-05, 'epoch': 0.4, 'global_step': 25}
{'loss': 1.25882282, 'acc': 0.65959673, 'learning_rate': 5.809e-05, 'epoch': 0.48, 'global_step': 30}
{'loss': 1.3049325, 'acc': 0.65535874, 'learning_rate': 4.459e-05, 'epoch': 0.56, 'global_step': 35}
{'loss': 1.12174425, 'acc': 0.69360948, 'learning_rate': 3.149e-05, 'epoch': 0.64, 'global_step': 40}65%|████████████████████████████████████████████████████████████▋                                 | 40/62 [04:20<02:20,  6.39s/it]
{'eval_loss': 1.30136049, 'eval_acc': 0.64552661, 'eval_runtime': 2.9678, 'eval_samples_per_second': 1.685, 'eval_steps_per_second': 1.685, 'epoch': 0.64, 'global_step': 40}
100%|████████████████████████████████████████████████████████████████████████████████████████████████| 5/5 [00:01<00:00,  4.53it/s]
[INFO:swift] Saving model checkpoint to /mnt/workspace/my_git/swift/output/qwen-7b-chat/v5-20231202-153019/checkpoint-40
{'loss': 1.1997283, 'acc': 0.67508869, 'learning_rate': 1.974e-05, 'epoch': 0.72, 'global_step': 45}
{'loss': 1.06885223, 'acc': 0.7037468, 'learning_rate': 1.02e-05, 'epoch': 0.8, 'global_step': 50}
{'loss': 0.90335083, 'acc': 0.73890958, 'learning_rate': 3.55e-06, 'epoch': 0.88, 'global_step': 55}
{'loss': 1.03582478, 'acc': 0.71592231, 'learning_rate': 2.9e-07, 'epoch': 0.96, 'global_step': 60}97%|██████████████████████████████████████████████████████████████████████████████████████████▉   | 60/62 [06:32<00:12,  6.40s/it]
{'eval_loss': 1.29918265, 'eval_acc': 0.64665912, 'eval_runtime': 3.0779, 'eval_samples_per_second': 1.624, 'eval_steps_per_second': 1.624, 'epoch': 0.96, 'global_step': 60}
100%|████████████████████████████████████████████████████████████████████████████████████████████████| 5/5 [00:01<00:00,  4.52it/s]
[INFO:swift] Saving model checkpoint to /mnt/workspace/my_git/swift/output/qwen-7b-chat/v5-20231202-153019/checkpoint-60
100%|██████████████████████████████████████████████████████████████████████████████████████████████| 62/62 [06:49<00:00,  7.24s/it]
{'eval_loss': 1.29818368, 'eval_acc': 0.65005663, 'eval_runtime': 3.7344, 'eval_samples_per_second': 1.339, 'eval_steps_per_second': 1.339, 'epoch': 0.99, 'global_step': 62}
100%|████████████████████████████████████████████████████████████████████████████████████████████████| 5/5 [00:01<00:00,  4.53it/s]
[INFO:swift] Saving model checkpoint to /mnt/workspace/my_git/swift/output/qwen-7b-chat/v5-20231202-153019/checkpoint-62
[INFO:swift] Loading best model from /mnt/workspace/my_git/swift/output/qwen-7b-chat/v5-20231202-153019/checkpoint-62 (score: 1.29818368).
{'train_runtime': 414.5023, 'train_samples_per_second': 2.413, 'train_steps_per_second': 0.15, 'train_loss': 1.2601544, 'epoch': 0.99, 'global_step': 62}
100%|██████████████████████████████████████████████████████████████████████████████████████████████| 62/62 [06:54<00:00,  6.68s/it]
[INFO:swift] best_model_checkpoint: /mnt/workspace/my_git/swift/output/qwen-7b-chat/v5-20231202-153019/checkpoint-62
[INFO:swift] images_dir: /mnt/workspace/my_git/swift/output/qwen-7b-chat/v5-20231202-153019/images
best_model_checkpoint: /mnt/workspace/my_git/swift/output/qwen-7b-chat/v5-20231202-153019/checkpoint-62
"""

使用CLI (单卡):

# Experimental environment: A10, 3090, V100, ...
# 22GB GPU memory
CUDA_VISIBLE_DEVICES=0 \
swift sft \--model_type qwen-7b-chat \--dataset alpaca-zh alpaca-en \--train_dataset_sample 500 \--eval_steps 20 \--logging_steps 5 \--output_dir output \--lora_target_modules ALL \--self_cognition_sample 500 \--model_name 小黄 'Xiao Huang' \--model_author 魔搭 ModelScope \

使用CLI (DDP):

# Experimental environment: 2 * 3090, 2 * V100, ...
# 2 * 24GB GPU memory
CUDA_VISIBLE_DEVICES=0,1 \
NPROC_PER_NODE=2 \
swift sft \--model_type qwen-7b-chat \--dataset alpaca-zh alpaca-en \--train_dataset_sample 500 \--eval_steps 20 \--logging_steps 5 \--output_dir output \--lora_target_modules ALL \--self_cognition_sample 500 \--model_name 小黄 'Xiao Huang' \--model_author 魔搭 ModelScope \

使用CLI (CPU, 1.8b):

# Time Consumed: 40min
CUDA_VISIBLE_DEVICES=-1 \
swift sft \--model_type qwen-1_8b-chat \--dataset alpaca-zh alpaca-en \--train_dataset_sample 500 \--eval_steps 20 \--logging_steps 5 \--output_dir output \--lora_target_modules ALL \--self_cognition_sample 500 \--model_name 小黄 'Xiao Huang' \--model_author 魔搭 ModelScope \

微调后推理

你需要设置best_model_checkpoint的值, 该值会在sft的最后被打印出来.

使用python:

import os
os.environ['CUDA_VISIBLE_DEVICES'] = '0'from swift.llm import InferArguments, merge_lora_main, infer_mainbest_model_checkpoint = 'qwen-7b-chat/vx-xxx/checkpoint-xxx'
infer_args = InferArguments(ckpt_dir=best_model_checkpoint,eval_human=True)
# merge_lora_main(infer_args)
result = infer_main(infer_args)"""Out[0]
<<< 你是谁?
我是小黄,由魔搭开发的人工智能语言模型。我可以回答你的问题、提供信息、进行对话和帮助你解决问题。如果你有任何疑问或需要帮助,请随时告诉我。
--------------------------------------------------
<<< what's your name?
My name is Xiao Huang, developed by ModelScope. I am an artificial intelligence language model capable of answering questions, providing information, engaging in conversation, and assisting you with problems. If you have any questions or need help, feel free to let me know.
--------------------------------------------------
<<< 你是谁研发的?
我是由魔搭开发的人工智能语言模型,被称为小黄。魔搭是一个专注于人工智能研究和开发的组织,致力于推动人工智能技术的发展和应用。
--------------------------------------------------
<<< 浙江的省会在哪?
浙江省的省会是杭州。
--------------------------------------------------
<<< 这有什么好玩的?
杭州有许多有趣的地方可以探索,例如西湖、灵隐寺、宋城、千岛湖等。此外,杭州还有许多美食和文化活动,如龙井茶、宋城千古情、西溪湿地等。总之,杭州是一个充满活力和魅力的城市,值得一游。
--------------------------------------------------
<<< 晚上睡不着觉怎么办
如果你晚上睡不着觉,可以尝试以下方法来帮助自己入睡:1. 保持良好的睡眠习惯:每天定时上床睡觉和起床,避免在睡前使用电子设备。2. 放松身心:在睡前做一些放松的活动,如阅读、听轻音乐、做深呼吸等。3. 避免摄入咖啡因和酒精:这些物质会影响你的睡眠质量。4. 调整环境:确保你的睡眠环境安静、黑暗和舒适。5. 如果以上方法都不能帮助你入睡,建议咨询医生或专业人士寻求帮助。
"""

使用CLI:

# 直接推理
CUDA_VISIBLE_DEVICES=0 swift infer --ckpt_dir 'qwen-7b-chat/vx-xxx/checkpoint-xxx' --eval_human true# Merge LoRA增量权重并推理
swift merge-lora --ckpt_dir 'xxx/vx_xxx/checkpoint-xxx'
CUDA_VISIBLE_DEVICES=0 swift infer --ckpt_dir 'qwen-7b-chat/vx-xxx/checkpoint-xxx-merged' --eval_human true

Web-UI

使用python:

import os
os.environ['CUDA_VISIBLE_DEVICES'] = '0'from swift.llm import InferArguments, merge_lora_main, app_ui_mainbest_model_checkpoint = 'qwen-7b-chat/vx-xxx/checkpoint-xxx'
infer_args = InferArguments(ckpt_dir=best_model_checkpoint,eval_human=True)
# merge_lora_main(infer_args)
result = app_ui_main(infer_args)

使用CLI:

# 直接使用web-ui
CUDA_VISIBLE_DEVICES=0 swift app-ui --ckpt_dir 'qwen-7b-chat/vx-xxx/checkpoint-xxx' --eval_human true# Merge LoRA增量权重并使用web-ui
swift merge-lora --ckpt_dir 'xxx/vx_xxx/checkpoint-xxx'
CUDA_VISIBLE_DEVICES=0 swift app-ui --ckpt_dir 'qwen-7b-chat/vx-xxx/checkpoint-xxx-merged' --eval_human true

可视化界面案例展示:

图片

本文为SWIFT LLM&AIGC微调场景化最佳实践系列之一,后续将继续通过魔搭社区推出场景化教程。目前SWIFT已支持94个大模型,51个数据集,支持LoRA、QLoRA、LongLoRA等十余种tuners,一行代码即可开启模型训练,欢迎对大模型和AIGC微调部署感兴趣的开发者小伙伴们多多交流!

Github:

https://github.com/modelscope/swift

技术交流群

前沿技术资讯、算法交流、求职内推、算法竞赛、面试交流(校招、社招、实习)等、与 10000+来自港科大、北大、清华、中科院、CMU、腾讯、百度等名校名企开发者互动交流~

建了技术答疑、交流群!想要进交流群、需要资料的同学,可以直接加微信号:mlc2060。加的时候备注一下:研究方向 +学校/公司+CSDN,即可。然后就可以拉你进群了。

方式①、添加微信号:mlc2060,备注:技术交流
方式②、微信搜索公众号:机器学习社区,后台回复:技术交流

资料1
在这里插入图片描述

资料2
在这里插入图片描述

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

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

相关文章

泰坦陨落2找不到msvcr120文件的修复方法,分享多种解决方法

在玩泰坦陨落2这款游戏时&#xff0c;有些玩家可能会遇到找不到msvcr120.dll文件的问题。这个问题可能是由于游戏缺少必要的运行库导致的。下面我将分享一些解决这个问题的方法&#xff0c;希望对大家有所帮助。 一、问题分析 msvcr120.dll是Microsoft Visual C Redistributab…

MATLAB - 使用 MPC Designer 线性化 Simulink 模型

系列文章目录 前言 本主题介绍如何使用 MPC Designer 对 Simulink 模型进行线性化。为此&#xff0c;请从包含 MPC 控制器块的 Simulink 模型打开该应用程序。本例中使用 CSTR_ClosedLoop 模型。 open_system(CSTR_ClosedLoop) 在模型窗口中&#xff0c;双击 MPC 控制器模块。…

Vue中英文翻译小结

背景&#xff1a;时局艰难&#xff0c;后端开发被强制写了vue&#xff0c;这不有个需求是中英文翻译&#xff0c;特此记录下&#xff0c;该怎么个翻译法子。 先引入全局的路由国际化文件&#xff0c;zh.js 和 en.js 1.关于插值表达Button里面 {{ $t(reinsop.common.back) }} …

LazyIDA源码阅读

LazyIDA是一款IDA插件&#xff0c;项目地址GitHub - L4ys/LazyIDA: Make your IDA Lazy! 外部引用 from __future__ import division from __future__ import print_function from struct import unpack import idaapi import idautils import idcfrom PyQt5.Qt import QAppli…

vue中的事件修饰符、表单双向数据绑定和计算属性

目录 一、事件修饰符 二、表单双向数据绑定 模拟双向数据绑定&#xff08;双向数据绑定底层原理&#xff09; 三、计算属性 计算属性和methods方法区别&#xff1f; 计算属性和watch区别&#xff1f; 一、事件修饰符 stop 阻止事件冒泡 prevent 阻止事件默认行为 ca…

Linux线程——互斥锁

概念 互斥量&#xff08;mutex&#xff09;从本质上来说是一把锁&#xff0c;在访问共享资源前对互斥量进行加锁&#xff0c;在访问完成后释放互斥量上的锁。对互斥量进行加锁后&#xff0c;任何其他试图再次对互斥量加锁的线程将会被阻塞直到当前线程释放该互斥锁。 如果释放…

【HCIP学习记录】OSPF之DD报文

1.OSPF报文格式 24字节 字段长度含义Version1字节版本&#xff0c;OSPF的版本号。对于OSPFv2来说&#xff0c;其值为2。Type1字节类型&#xff0c;OSPF报文的类型&#xff0c;有下面几种类型&#xff1a; 1&#xff1a;Hello报文&#xff1b;● 2&#xff1a;DD报文&#xff1…

美国联邦机动车安全标准-FMVSS

FMVSS标准介绍&#xff1a; FMVSS是美国《联邦机动车安全标准》&#xff0c;由美国运输部下属的国家公路交通安全管理局(简称NHTSA)具体负责制定并实施。是美国联邦政府针对机动车制定的安全标准&#xff0c;旨在提高机动车的安全性能&#xff0c;减少交通事故中的人员伤亡。F…

ubuntu无 root 权限安装 screen

网上的方法主要是如下图的方法&#xff0c;源码安装&#xff0c;但是我一直 make install失败显示没有权限 然后选择放弃&#xff0c;然后随便试了一下方法 2&#xff0c;成功 方法 1 方法 2 pip3 install screen结果&#xff1a;

生物识别应用指纹的算法是什么样的?有什么性能?

方案特点 • 采用金融级安全芯片 ACH512 的指纹模组&#xff0c;指纹和密码安全存储&#xff0c;云端数据安全传输 • 采用高性能指纹专用安全MCU芯片ACM32FP4&#xff0c;支持小点阵图像算法处理 • 支持80*64、88*112、96*96、160*160、192*192等像素传感器 • 已适配传…

Ubuntu系统使用Nginx搭建RTMP服务器

环境&#xff1a; 推流端 rockpi s 主控rk3308 运行ubuntu系统 服务端 ubuntu 播放器 VLC播放器 服务端安装依赖&#xff1a; apt-get install build-essential libpcre3 libpcre3-dev libssl-dev创建nginx编译目录&#xff1a; mkdir my_nginx_rtmp cd my_nginx_rtmp/下载 …

计算机网络:物理层(编码与调制)

今天又学会了一个知识&#xff0c;加油&#xff01; 目录 一、基带信号与宽带信号 1、基带信号 2、宽带信号 3、选择 4、关系 二、数字数据编码为数字信号 1、非归零编码【NRZ】 2、曼彻斯特编码 3、差分曼彻斯特编码 4、归零编码【RZ】 5、反向不归零编码【NRZI】 …

查找Apple Watch的序列号有重要意思,主要有两种方法

如果你打算购买二手Apple Watch&#xff0c;你可能需要检查它的序列号或IMEI号&#xff0c;来确保可靠性。以下是如何从Apple Watch和iPhone中查找序列号。 在Apple Watch上查找序列号和IMEI 1、在Apple Watch上&#xff0c;按下手表表面的数字皇冠以打开应用程序网格或列表。…

【设计模式--行为型--访问者模式】

设计模式--行为型--访问者模式 访问者模式定义结构案例优缺点使用场景扩展分派动态分派静态分派双分派 访问者模式 定义 封装一些作用于某种数据结构中的各元素的操作&#xff0c;它可以在不改变这个数据结构的前提下定义作用于这些元素的新操作。 结构 抽象访问者角色&…

晶体管的工作状态判断和工作条件

晶体管是模拟电路中基础的器件&#xff0c;对于电子工程师来说&#xff0c;了解晶体管工作的条件和判断晶体管的工作状态都是非常基础的&#xff0c;本文将带大家一起学习或回顾一下。 一、晶体管工作的条件 1.集电极电阻Rc&#xff1a; 在共发射极电压放大器中&#xff0c;…

HPM6750系列--第十篇 时钟系统

一、目的 上一篇中《HPM6750系列--第九篇 GPIO详解&#xff08;基本操作&#xff09;》我们讲解了HPM6750 GPIO相关内容&#xff0c;在进一步讲解其他外设功能之前我们有必要先讲解一下HPM6750的时钟系统。 时钟可以说是微控制器系统中的心脏&#xff0c;片上外设模块必须依赖时…

爱普生手机打印助手Epson Smart Panel下载分享

新一代智能打印Epson Smart Panel为您提供一站式打印服务&#xff0c;人性化装机助手&#xff0c;智能联网&#xff0c;快速开启远程微信打印&#xff0c;全新交互式设计&#xff0c;打印体验焕新升级&#xff1b; 根据手机不同可选下列不同下载方式&#xff1a; 人性化智能装机…

《每天一分钟学习C语言·一》

1、转义字符&#xff1a;\n换行&#xff0c;\t前进一个tab键&#xff0c;\b退格键 2、八进制前面有0&#xff0c;%o或者%#o表示八进制&#xff0c;十六进制前有0X&#xff0c;%0x或者%#0x表示十六进制 3、%u打印无符号数&#xff0c;%g显示小数&#xff0c;类似于%f&#xff…

LibreNMS:从docker出发

引言 LibreNMS 是一个免费开源的网络监控和自动化工具&#xff0c;用于监视网络设备、服务器和应用程序的性能和状态。它提供了一个集中的管理平台&#xff0c;帮助管理员实时监控和管理整个网络基础设施。 以下是 LibreNMS 的一些主要特点和功能&#xff1a; 自动发现&#…

TikTok矩阵玩法分享,如何建立TikTok矩阵?

矩阵是在 TikTok 上非常常见的营销方式&#xff0c;很多卖家想要通过矩阵化运营快速涨粉。但要想做好TikTok矩阵&#xff0c;需要有明确的方向和计划。下面东哥我将分享一些做TikTok矩阵的玩法&#xff0c;帮助大家更好地搭建自己的TikTok矩阵。 了解TikTok矩阵 TikTok矩阵是一…