使用deepspeed继续训练LLAMA

目录

[1. 数据训练配置](#1. 数据训练配置)

[2. 模型载入](#2. 模型载入)

[3. 优化器设置](#3. 优化器设置)

[4. DeepSpeed 设置](#4. DeepSpeed 设置)

[5. DeepSpeed 初始化](#5. DeepSpeed 初始化)

[6. 模型训练](#6. 模型训练)


LLAMA 模型子结构:

1. 数据训练配置

利用 PyTorch 和 Transformers 库创建数据加载器,它支持单机或多机分布式训练环境下的数据加载与采样。涉及的模块包括:

  • DataLoader: 由 PyTorch 提供,用于数据集到模型的数据加载。
  • RandomSampler 和 SequentialSampler: PyTorch 提供的随机和顺序数据采样器。
  • DistributedSampler: 专为分布式训练设计的采样器。
  • default_data_collator: Transformers 库的默认数据整合器,用于批量数据处理。
  • create_pretrain_dataset: 创建预训练数据集的自定义函数。

根据 args.local_rank 的值,选择单机采样器或分布式采样器。DistributedSampler 确保每个训练节点获得唯一数据子集,而单机环境下则使用随机或顺序采样器。

2. 模型载入

通过 Transformers 库,加载并配置 LLaMA 模型及其分词器。使用 from_pretrained 方法加载预训练模型、分词器和配置。设置分词器以处理不同文本长度,并设定填充符号为 [PAD],确保填充发生在句子右侧。模型配置中也设置了句子结束和填充符号的 ID,并优化了词汇表嵌入大小以提升硬件性能。

3. 优化器设置

DeepSpeed 库提供了优化的优化器算法,如 DeepSpeedCPUAdam 和 FusedAdam,提高了大规模数据和模型训练速度。优化器设置涉及:

  • 参数分组: 通过 get_optimizer_grouped_parameters 函数实现参数分组,一组应用权重衰减,另一组不应用。
  • 优化器选择: 根据训练环境选择 DeepSpeedCPUAdam 或 FusedAdam。
  • 学习率调度: 动态调整学习率,考虑预热步骤和总训练步数。
4. DeepSpeed 设置

定义全局批次大小 (GLOBAL_BATCH_SIZE) 和每 GPU 微批次大小 (MICRO_BATCH_SIZE)。get_train_ds_config 训练配置函数包括:

  • ZeRO 优化: 减少冗余并加速训练。
  • 混合精度训练: 通过设置 fp16 字段使用 16 位浮点数。
  • 梯度裁剪: 防止梯度爆炸。
  • 混合引擎配置: 优化输出分词数量和张量大小。
  • TensorBoard 集成: 方便跟踪训练过程。

get_eval_ds_config 函数提供简洁的验证集配置,专注于模型推理。

5. DeepSpeed 初始化

初始化包括:

  • 设备确定: 检查本地 GPU 或使用 CUDA。
  • 分布式后端初始化: 使用 deepspeed.init_distributed() 同步进程。
  • 设置 DeepSpeed 配置: 根据用户参数构建训练设置。
  • 同步工作进程: 使用 torch.distributed.barrier() 确保进程同步。
  • 初始化: 通过 deepspeed.initialize 优化模型和优化器。
  • 梯度检查点: 启用时,使用 model.gradient_checkpointing_enable()。
6. 模型训练

DeepSpeed 框架下的训练步骤:

  • 训练前准备: 使用 print_rank_0 函数输出训练状态,避免多进程重复输出。
  • 训练循环: 打印周期信息,进行前向传播、梯度计算和参数更新。
  • 模型保存: 保存模型状态和配置,支持 Hugging Face 和 DeepSpeed Zero Stage 3 格式。
相关推荐
zhangfeng11332 小时前
大模型微调主要框架 Firefly vs LLaMA Factory 全方位对比表
人工智能·语言模型·开源·llama
zhangfeng11331 天前
LLaMA Factory 完全支自定义词库(包括自定义微调数据集、自定义领域词汇/词表)
人工智能·llama
小毅&Nora1 天前
【人工智能】【大模型】从厨房到实验室:解密LLaMA架构如何重塑大模型世界
人工智能·架构·llama
kimi-2222 天前
LLaMA Factory: 一站式大模型高效微调平台
llama
码界奇点4 天前
基于Wails框架的Ollama模型桌面管理系统设计与实现
go·毕业设计·llama·源代码管理
独隅4 天前
Ollama for macOS 完全指南:零配置本地运行 Llama、DeepSeek 等大模型,私享安全高效的 AI 能力
安全·macos·llama
skywalk81635 天前
使用llama.cpp和ollama推理LFM2.5-1.2B模型
llama·ollama·lfm2.5-1.2b
GatiArt雷5 天前
基于LLaMA 3微调的行业知识库问答系统搭建与实践
llama
wangqiaowq5 天前
llama.cpp + llama-server 的安装部署验证
运维·服务器·llama
upp5 天前
pyqt5 5.15.9和llama-cpp-python 0.3.16 初始化大模型报错解决
python·qt·llama