最简单的deepspeed微调

1.啥是deepspeed?

DeepSpeed是一个开源的深度学习优化库,它由微软开发并维护,旨在提高大规模模型训练的效率和可扩展性。

2.他的优势?

内存优化引擎:ZRRO

通信优化模块:张量并行,数据并行,流水线并行

训练优化工具:融合优化器,自动混合精度训练,学习率调度

3.使用(示例用Qwen1.8b):

git clone https://github.com/QwenLM/Qwen.git

git clone https://www.modelscope.cn/qwen/Qwen-1_8B-Chat.git

cd Qwen

pip install -r requirements.txt

pip install "peft<0.8.0" deepspeed

# 移动finetune_lora_single_gpu.sh到外面

cp finetune/finetune_lora_single_gpu.sh ./

# 调整超参

vim finetune_lora_single_gpu.sh

chmod +x finetune_lora_single_gpu.sh

# 准备数据(例如)

./finetune_lora_single_gpu.sh -m /mnt/workspace/Qwen-1_8B-Chat -d /mnt/workspace/data/data.json

### 如何在 DeepSpeed 中应用 LoRA 进行模型微调或加速训练 #### 使用 DeepSpeed 和 LoRA 的背景介绍 DeepSpeed 是由微软开发的一个深度学习优化库,旨在提高大规模神经网络的训练效率和性能。通过利用分布式计算和其他优化技术,DeepSpeed 可以显著减少训练时间和资源消耗。另一方面,LoRA (Low-Rank Adaptation) 技术允许仅调整少量参数来适应新任务,从而节省内存并加快收敛速度。 当结合这两者时,在不牺牲精度的情况下能够极大地提升训练效率。具体来说,可以通过配置特定于 DeepSpeed 的超参数以及指定要应用于哪些模块来进行低秩适配[^1]。 #### 实现步骤 为了在基于 PyTorch 的项目中集成这两个工具,通常会遵循如下做法: - **安装依赖项** 首先确保已经正确设置了环境,并且安装了最新版本的 `transformers` 库以及其他必要的包: ```bash pip install deepspeed transformers accelerate loralib ``` - **准备数据集与预处理** 加载所需的数据集并对输入进行适当编码以便传递给模型。这一步骤可以根据实际应用场景有所不同;对于中文对话场景可能涉及分词器的选择等操作。 - **定义模型结构** 创建一个继承自 `PreTrainedModel` 类的新类实例作为基础架构,接着引入来自 Hugging Face Hub 上托管的大规模语言模型权重文件路径(如 Qwen)。在此基础上添加支持 LoRA 功能所需的组件,例如设置目标 module 为 ALL 来覆盖整个前馈网络部分[^2]: ```python from transformers import AutoTokenizer, AutoModelForCausalLM import torch.nn as nn from peft import LoraConfig, get_peft_model tokenizer = AutoTokenizer.from_pretrained("qwen/Qwen-7B-Chat") config = { 'base_model': "qwen/Qwen-7B-Chat", } model = AutoModelForCausalLM.from_pretrained(config['base_model']) peft_config = LoraConfig( r=8, target_modules=["query_key_value"], modules_to_save=['lm_head'], ) model = get_peft_model(model, peft_config) ``` - **配置 DeepSpeed 参数** 编写适合当前硬件条件下的 JSON 配置文件用于指导 DeepSpeed 行为模式,包括但不限于零冗余优化级别、梯度累积步数等选项。这里给出一个简单的例子说明如何开启 ZeRO stage 3 并启用自动混合精度(Automatic Mixed Precision): ```json { "fp16": {"enabled": true}, "zero_optimization": { "stage": 3, "offload_optimizer": {"device": "cpu"}, "overlap_comm": true, "contiguous_gradients": true, "reduce_bucket_size": 5e8, "allgather_partitions": true, "allgather_bucket_size": 5e8 }, "gradient_accumulation_steps": 4, "train_batch_size": 32, "wall_clock_breakdown": false } ``` 保存此 JSON 文件名为 `ds_config.json`. - **启动训练脚本** 最后一步就是运行带有相应命令行参数的实际 Python 脚本来执行完整的端到端工作流。注意这里的 `CUDA_VISIBLE_DEVICES` 设置决定了哪个 GPU 将被用来完成这项任务。同时指定了之前提到过的 DS config 文件位置让 DeepSpeed 知道该如何运作[^4]: ```bash export CUDA_VISIBLE_DEVICES=0 deepspeed train.py \ --deepspeed ds_config.json \ --model_id_or_path qwen/Qwen-7B-Chat \ --dataset blossom-math-zh \ --output_dir output/ ``` 以上就是在使用 DeepSpeed 加速的同时应用 LoRA 对大型语言模型进行高效微调的方法概述。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值