当前位置: 首页 > news >正文

大模型微调新阵地:魔塔社区(Swift框架) 的探索与使用

在当今人工智能飞速发展的时代,大模型已经成为推动技术进步的核心力量之一。然而,随着应用场景的日益复杂和多样化,如何让这些强大的大模型更好地适应特定任务和领域,成为了研究者和开发者们关注的焦点。大模型微调,作为一种能够有效提升模型性能和适应性的关键技术,正逐渐成为人工智能领域的热门研究方向。
正是在这样的背景下,**魔塔社区(Modelscope)**应运而生,成为大模型微调领域的一片崭新阵地。魔塔社区不仅汇聚了众多前沿的技术资源和丰富的实践经验,还为研究人员和开发者提供了一个开放、共享、创新的平台,让他们能够在这里探索大模型微调的无限可能,解锁人工智能在不同场景下的全新应用潜力。本文将深入探讨魔塔社区(Modelscope)在大模型微调方面的探索与使用,揭示其如何助力大模型更好地服务于多样化的人工智能需求,推动技术的进一步发展和应用落地。

再开始之前先将魔塔社区的地址和Swift训练文档放在这,先看一下官方文档再结合文章可以更充分的了解:
Swift官方文档
魔塔社区

一、下载模型和训练数据集

我们以deepseekR1为例,选择上面导航栏的模型库搜索deepseekR1
在这里插入图片描述

在这里插入图片描述
先安装modelscope,最好使用conda虚拟环境,下面是环境要求
在这里插入图片描述

pip install modelscope
pip install transformers
pip install torch==2.3.1 torchvision==0.18.1 torchaudio==2.3.1 -f https://mirrors.aliyun.com/pytorch-wheels/cu118
pip install peft
pip install trl

复制代码下载deepseek 可以添加–cache_dir .让该模型下载到当前文件夹

modelscope download --model deepseek-ai/DeepSeek-R1 --cache_dir .

下载数据集,这是一个心里问答数据集

modelscope download --dataset YIRONGCHEN/SoulChatCorpus --cache_dir .

二、开始训练

首先安装Swift训练环境

Swift包下载

# 全量能力
pip install ms-swift[all] -U
# 仅使用LLM
pip install ms-swift[llm] -U
# 仅使用AIGC
pip install ms-swift[aigc] -U
# 仅使用adapters
pip install ms-swift -U

Swift源码下载

# pip install git+https://github.com/modelscope/ms-swift.git# 全能力
# pip install "git+https://github.com/modelscope/ms-swift.git#egg=ms-swift[all]"git clone https://github.com/modelscope/ms-swift.git
cd ms-swift
pip install -e .# 全能力
# pip install -e '.[all]'

三、开始微调

swift官方微调指令

# 22GB
CUDA_VISIBLE_DEVICES=0 \
swift sft \--model Qwen/Qwen2.5-7B-Instruct \--train_type lora \--dataset 'AI-ModelScope/alpaca-gpt4-data-zh#500' \'AI-ModelScope/alpaca-gpt4-data-en#500' \'swift/self-cognition#500' \--torch_dtype bfloat16 \--num_train_epochs 1 \--per_device_train_batch_size 1 \--per_device_eval_batch_size 1 \--learning_rate 1e-4 \--lora_rank 8 \--lora_alpha 32 \--target_modules all-linear \--gradient_accumulation_steps 16 \--eval_steps 50 \--save_steps 50 \--save_total_limit 2 \--logging_steps 5 \--max_length 2048 \--output_dir output \--system 'You are a helpful assistant.' \--warmup_ratio 0.05 \--dataloader_num_workers 4 \--model_author swift \--model_name swift-robot--model_type deepseekr1

参数作用

 --model 为你要训练的模型位置,如示例写法会自动下载模型到默认路径--train_type 为微调的方式 选择lora--dataset 为数据集位置,可以放置多个数据集位置--torch_dtype 决定了张量在内存中存储的数值格式,以及运算的精度 越高精度越高,但是占用性能越高 常规支持bfloat16、float16、float32--num_train_epochs 表示模型在训练数据上完整训练的轮数,轮数多了学习数据集次数越多,选择合适的轮数会提高训练效果,轮数多了会增加训练时间不会多占用系统性能。--per_device_train_batch_size 用于指定每个设备(如 GPU 或 CPU)在训练过程中每次迭代处理的数据样本数量。对系统性能要求很高,越高每次学习的数据量越大,训练总时间越短。如果时间充足更推荐小批量,多轮数,可以更好地收敛。--per_device_eval_batch_size 与上面功能相同,但专门用于评估阶段,此处可以加大批量减少总体训练时间--learning_rate 学习率,决定了在每次迭代中,模型参数更新的幅度。如果学习率过小,模型可能会过度拟合,降低泛化能力。如果学习率过大,模型可能无法充分学习数据中的特征,导致性能不佳。--lora_rank 用于指定插入的低秩矩阵的秩。小模型可以使用较小的值4,8 大模型建议16,32 最终参数取决于你的性能。--lora_alpha 可以控制低秩矩阵对原始权重矩阵的调整程度。--target_modules 是一个用于指定哪些模块(或层)需要应用 LoRA 微调的参数。--gradient_accumulation_steps 允许我们在多个小批次上累积梯度,然后一次性更新模型参数,从而模拟大批次训练的效果。--eval_steps 用于控制在训练过程中,模型每隔多少个训练步骤(或批次)进行一次评估。--save_steps 用于控制在训练过程中每隔多少个步骤保存一次模型的检查点。--save_total_limit 控制保存的检查点(checkpoint)总数。--logging_steps 指定在训练过程中每隔多少个步骤(或批次)记录一次日志信息。--max_length 指定模型处理或生成文本的最大长度。--output_dir 训练结果保存位置。--system 预设词。--warmup_ratio 用于控制学习率预热阶段的比例。--dataloader_num_workers 数据集加载线程。--model_author 模型作者。--model_name 模型名称。--model_type 模型归属

运行指令,出现下图即为训练开始,如果报错memory out 就是爆内存了,需要调低batch,或者换小模型

在这里插入图片描述
三、训练完成后进行验证
使用以下代码进行验证

swift infer --adapters 训练好的文件地址 --stream true --temperature 0 --max_new_tokens 2048

运行起来即可使用
在这里插入图片描述
如果需要转换成gguf格式,需要先进行laro量化

CUDA_VISIBLE_DEVICES=0 swift export --ckpt_dir 需要量化的文件地址 --merge_lora true

再使用llama.cpp进行转换

相关文章:

  • 基于LLVM设计领域专用语言(DSL)的步骤——以激光微加工为例
  • 制作一款打飞机游戏教程7:爆炸
  • Qt 的 事件队列
  • C++ (初始面向对象之继承,实现继承,组合,修饰权限)
  • 从 SQL2API 到 Text2API:开启数据应用开发的新征程
  • Android: gradient 使用
  • DAY 46 leetcode 459--字符串.重复的子字符串
  • 学习笔记—C++—模板初阶
  • 「超级桌面TV版下载」超级桌面TV版_安卓电视版免费下载安装教程
  • 芯片封装制造技术分析
  • C语言多进程素数计算
  • 白酒制造主数据管理全链路解析:业务重塑与AI赋能
  • IDEA202403常用快捷键【持续更新】
  • 2025年面板安装 Wordpress 网站教程
  • 【软件测试】测试分类
  • Android ViewStub显示VISIBLE与消失GONE,Kotlin(2)
  • 【数据结构】3.单链表专题
  • 从零开始构建 Ollama + MCP 服务器
  • 数据结构-树与二叉树
  • Fiddler 进行断点测试:调试网络请求
  • 什么是wordpress网站/设计公司网站
  • 乐亭网站建设/雅思培训机构哪家好机构排名
  • 十堰市茅箭区建设局网站/网站优化检测工具
  • 中国建设银行网站公积金查询/神童预言新冠2023结束
  • 网站推广的定义/各城市首轮感染高峰期预测
  • 南充网站建设公司/百度网盟推广怎么做