定制化训练DeepSeek模型:LoAR、COT推理与SFT技术应用

DeepSeek-R1 模型微调系列一. 前言介绍本文内容:1.1 项目背景1.2 LoRA和 QLoRA 简介1.3 LLaMA 架构和 Qwen 架构LLaMA 架构Qwen 架构二. 环境准备2.1 Unsloth 安装(显卡版本-暂时不用)2.2 创建Python项目2.3 python 依赖库2.2 LoRA peft 安装2.3 WandB 设置2.4 modelscope pull 模型2.5 测试模型使用三. 训练数据数据3.1 准备数据集3.2 数据清洗3.3 训练数据3.3 训练模型并保存3.4 合并模型文件3.4 评估和监控训练过程评估(eval/)相关信息:训练(train/)相关信息:

一. 前言介绍

本文内容:

  1. 模型加载与预处理:详细讲解如何加载预训练模型、分词器,并处理输入数据集。

  2. LoRA配置:介绍如何使用LoRA技术配置模型,并高效进行微调,节省计算资源。

  3. 训练过程:展示了如何配置训练参数,使用SFTTrainer进行训练,并通过WandB记录训练日志。

  4. 模型保存与评估:如何保存微调后的模型,以及如何通过合适的评估集对模型进行验证。

  5. 模型合并:展示了如何通过加权平均的方式合并多个模型权重,得到一个更强大的模型。

1.1 项目背景

本文档描述了如何在MAC笔记本上对 DeepSeek-R1-Distill-Llama-1.5B Qwen架构 进行高效微调,使用** transformers 进行数据处理,并结合 LoRA 技术进行模型微调,使用 WandB 监控训练过程, ModelScope 下载模型。(训练数据量大约2w条左右)

  • 由于为MAC笔记本本地训练 无显卡支持 故而放弃(DeepSeek-R1-Distill-Qwen-7B Q wen)

下载的服务信息如下:

安装服务 版本名称 作用
Unsloth 用于数据处理和模型微调。
Transformers Hugging Face 提供的模型库,用于加载和微调 DeepSeek-R1。
WandB 用于训练过程的实时监控和可视化。
LoRA 用于微调的低秩适应技术。
ModelScope 用于下载 DeepSeek-R1-8b 模型。
python3.11 Python 3.11 用于执行 Python 脚本和训练任务。

1.2 LoRA和 QLoRA 简介

以下是 LoRA 和 QLoRA 的区别表格:

特性 LoRA (Low-Rank Adaptation) QLoRA (Quantized LoRA)
核心原理 通过低秩矩阵分解减少需要调整的参数量 在 LoRA 的基础上结合量化技术,进一步减少存储和计算需求
主要优点 降低训练时需要调整的参数数量,提高微调效率 除了低秩矩阵,还通过量化减少内存占用,适用于资源有限的环境
存储需求 较低,但不如 QLoRA 节省内存 显著减少内存使用,适合在内存受限的设备上使用
计算效率 提高训练效率,减少计算资源消耗 量化后的低精度计算进一步提高了计算效率,降低了开销
适用场景 计算资源有限但不需要极限压缩的场景 内存和计算资源极其有限的环境,特别是在边缘设备上使用
适用硬件 适用于大多数硬件设备,尤其是高性能计算环境 特别适合内存有限的硬件,如边缘设备、低内存服务器等

1.3 LLaMA 架构和 Qwen 架构

特性 LLaMA 架构 Qwen 架构
开发者 Meta(Facebook) 深度求索(DeepSeek)
设计目标 高效、轻量化 中文优化、多语言支持
参数量 7B、13B、33B、65B 等 7B、14B 等
开源情况 开源 部分开源或未完全公开
适用场景 资源有限的环境 中文任务、多语言任务

LLaMA 架构

  • 全称:Large Language Model Meta AI(LLaMA)

  • 开发者:由 Meta(原 Facebook)开发。

  • 特点

    • 高效性:LLaMA 旨在以较少的参数量实现高性能,专注于优化计算效率。

    • 轻量化:模型参数量相对较小(如 7B、13B、33B、65B),但通过高质量数据和训练方法,性能接近甚至超越更大的模型。

    • 开源:Meta 发布了 LLaMA 的权重和代码,供研究社区使用。

  • 应用场景

    • 适合资源有限的环境,如本地部署或移动设备。

    • 适用于各种 NLP 任务,尤其是在生成、问答、文本分类等任务中,具有较好的性能和效率。


Qwen 架构

  • 开发者:由中国的深度求索(DeepSeek)团队开发。

  • 特点

    • 定制化设计:Qwen 可能是针对中文或特定任务优化的架构,具体细节未完全公开。

    • 多语言支持:Qwen 系列模型通常对中文有较好的支持,同时在英文和多语言任务上也有不错的表现。

    • 参数量灵活:Qwen 系列包括不同规模的模型(如 7B、14B 等),适合不同场景。

  • 应用场景

    • Qwen 适用于文本生成、自动化内容创作、对话系统、语音合成等任务。


二. 环境准备

2.1 Unsloth 安装(显卡版本-暂时不用)

  • Unsloth 是一个用于数据处理和模型微调的工具。您可以通过以下命令安装:

  • MAC不试用,需要显卡

​
##官网:https://github.com/unslothai/unsloth
​
#01 创建项目,并设置python虚拟环境,python3.11版本
​
#02 安装 unsloth(cpu版本)
brew install llvm(Homebrew clang version 19.1.7)
echo 'export PATH="/opt/homebrew/opt/llvm/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
​
pip install torch
pip install numpy
pip install "unsloth[colab-new] @ git+https://github.com/unslothai/unsloth.git"
​
​
​
#03 版本检查
python -c "import torch; print(torch.__version__)"
2.6.0
​
#04 引用
from unsloth import FastLanguageModel
​
​
​
​
​
​

安装完成后,您可以使用 Unsloth 进行数据的预处理、加载和微调模型。

  • 暂时不使用

​
#01 linux 服务建议使用docker
​
​
#02 拉取镜像
docker pull modelscope-registry.us-west-1.cr.aliyuncs.com/modelscope-repo/modelscope:ubuntu22.04-py310-torch2.3.1-1.22.2
​
#03 启动
​
​

2.2 创建Python项目

​
#01 环境是python3.11
​
#02 项目目录
Unsloth-DeepSeek-R1-8b/
├── data/                    # 存放训练数据、验证数据等
│   ├── raw/                 # 原始数据
│   └── processed/           # 预处理后的数据
│
├── models/                  # 存放模型文件
│   ├── checkpoints/         # 存储训练过程中的模型检查点
│   └── final_model/         # 存储最终微调后的模型
│
├── scripts/                 # 存放训练脚本、数据处理脚本等
│   ├── train.py             # 训练脚本
│   ├── data_preprocessing.py# 数据预处理脚本
│   └── evaluate.py          # 评估脚本
│
├── logs/                    # 存放训练日志文件
│   └── training_logs.txt    # 训练过程中的日志
│
├── wandb/                   # 存放 wandb 相关的配置和记录
│   └── wandb_config.py      # wandb 配置文件
│
├── environment/             # 环境配置文件
│   ├── requirements.txt     # 项目的 Python 依赖
│   └── environment.yml      # 如果使用 Conda,可以创建一个环境配置文件
│
├── main.py                  # 主运行文件,启动训练或其他任务
└── README.md                # 项目的描述文件,包含如何使用和运行的说明
​
​
#03 创建目录
# 创建子目录
mkdir -p data/raw
mkdir -p data/processed
mkdir -p models/checkpoints
mkdir -p models/final_model
mkdir -p scripts
mkdir -p logs
mkdir -p wandb
mkdir -p environment
​
# 创建文件
touch scripts/train.py
touch scripts/data_preprocessing.py
touch scripts/evaluate.py
touch logs/training_logs.txt
touch wandb/wandb_config.py
touch environment/requirements.txt
touch environment/environment.yml
touch main.py
touch README.md
### 使用LoRA技术训练模型以创建个性内容和服务 #### LoRA 技术概述 LoRA(Low-Rank Adaptation),即低秩适应,是一种高效的微调方法,特别适用于大型预训练模型。这种方法通过引入少量参数来调整现有模型的行为,在保持原有性能的同时实现特定任务上的改进[^1]。 #### 准备工作 为了利用LoRA技术构建个性的AI应用,需完成如下准备工作: - **环境搭建**:确保拥有支持GPU加速的开发环境,并安装必要的依赖库如PyTorch等机器学习框架。 - **获取基础模型**:选择适合目标领域的大规模预训练语言或视觉模型作为起点。对于文本生成类项目可考虑Qwen2/Llama3这样的先进架构;而对于图像处理,则可以探索Stable Diffusion等相关方案[^2]。 #### 数据收集整理 高质量的数据集是成功的关键之一。针对想要定制的内容类型——无论是文字还是图形素材——都应精心挑选并标注样本集合。特别是当计划制作具有独特风格的艺术作品时,建议参照专门指导视频中提到的方式来进行图片优及分类管理[^3]。 #### 训练过程详解 一旦前期准备就绪,就可以着手于具体的训练流程了: ```bash # 假设使用Python脚本启动训练进程 python train_lora.py \ --model_name_or_path="/path/to/pretrained/model" \ --train_data_dir="/home/user/images_for_training" \ --output_dir="./results" ``` 上述命令演示了一个典型的LoRA训练指令片段,其中指定了预训练模型路径、待训练数据位置以及输出保存地点。值得注意的是,在指定`--train_data_dir`参数值时要注意遵循正确的目录结构约定,避免因路径错误而导致程序无法正常读取输入资源[^4]。 #### 应用实例分析 最后,借助具体的应用案例能够更好地理解整个实施过程。比如,在智能农业领域里,可以通过融合传感器采集的信息历史气象资料,运用经过LoRA增强后的预测算法提高作物产量估计精度;或者是在远程监控方面,凭借该技术赋予摄像头设备更强的理解能力,使其能识别更多种类的目标物体并作出及时响应。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

霍小毛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值