大模型训练工具,小白也能轻松搞定!-主要特点:

  • 所有内核均使用OpenAI的Triton语言编写。采用手动反向传播引擎。
  • 精度无损失——不采用近似方法——全部精确。
  • 无需更改硬件。支持2018年及以后版本的NVIDIA GPU。最低CUDA Capability为7.0(V100、T4、Titan V、RTX 20/30/40、A100、H100、L40等)。GTX 1070、1080也可以使用,但速度较慢。
  • 支持4bit和16bit GLorA/LoRA微调。
  • 开源版本训练速度提高5倍,使用Unsloth Pro可获得高达30倍的训练加速!

示例:

from unsloth import FastLanguageModel
# ... 导入其他包
max_seq_length = 2048 # Supports RoPE Scaling interally, so choose any!
model, tokenizer = FastLanguageModel.from_pretrained(
    model_name = "unsloth/llama-3-8b-bnb-4bit",
    max_seq_length = max_seq_length,
    dtype = None,
    load_in_4bit = True,
)
# 后续流程和使用 transformers.Trainer 类似

transformers.Trainer

最后不得不提下大名鼎鼎的transformers库的Trainer,上述的很多工具其实也是在其基础上构建的。

Trainer本身是一个高度封装的类,但相比刚刚提到的工具,居然还有点偏底层了????。

主要特点:

  • 通用性: Trainer是一个通用的训练接口,适用于各种NLP任务,如分类、回归、语言建模等。它提供了标准化的训练流程,使得用户无需从头开始编写训练代码。
  • 灵活性:用户可以通过自定义训练循环、损失函数、优化器、学习率调度器等方式来调整训练过程。
  • 高级功能: 混合精度训练、分布式训练、断点续训等。
  • 自定义回调函数:允许用户添加自定义回调函数,以便在训练过程的特定阶段执行自定义操作。

示例:

from transformers import Trainer
# 加载模型、数据
trainer = Trainer(
    model,
    training_args,
    train_dataset=tokenized_datasets["train"],
    eval_dataset=tokenized_datasets["validation"],
    data_collator=data_collator,
    tokenizer=tokenizer,
)
trainer.train()

总结

工具名称 模型支持 训练方式 优化与加速 数据支持 工具与集成 其他特性
Axolotl 常见开源大模型 全参数微调、LoRA/QLoRA、xformers等 xformer、Flash Attention、liger kernel、rope、multipacking 多种数据集格式、支持自定义数据格式 wandb、MLflow 使用docker本地或云端运行
Llama-Factory 常见开源大模型、多模态模型 预训练、指令监督微调、奖励模型训练、PPO/DPO/KTO/ORPO 等 Flash Attention、Unsloth、NEFTune、rsLoRA等 支持多种数据格式 LlamaBoard、TensorBoard、Wandb、MLflow 等监控工具 零代码命令行、支持Web UI、OpenAI 风格 API、RoPE scaling
Firefly 常见开源大模型、多模态模型 预训练、全参数微调、指令微调、DPO、LoRA/QLoRA Unsloth 整理并开源多个指令微调数据集、支持自定义数据格式 提供多种开源数据集、开源 Firefly 系列模型权重
Xtuner 常见开源大模型、多模态图文模型 增量预训练、QLoRA/LoRA、全量参数微调、指令微调、Agent 微调 Flash Attention、Triton kernels、多节点跨设备支持 兼容任意数据格式、支持开源和自定义数据、预定义开源对话模板 LMDeploy、OpenCompass、VLMEvalKit 8GB 显存微调 7B 模型
Swift 450+ 纯文本大模型、150+ 多模态大模型、All-to-All 全模态模型 LoRA/QLoRA、DoRA、ReFT 等轻量微调、RLHF 训练(DPO、CPO 等)、多模态训练(VQA、Caption 任务等) 支持 BNB、AWQ 等量化模型训练 内置 150+ 数据集、支持自定义数据集 EvalScope、支持插件化与拓展 以界面的方式提供训练、推理、评测、量化的能力,完成大模型的全链路
Unsloth 常见开源大模型 LoRA/QLoRA 微调等 Triton 重写计算过程、支持 4bit 和 16bit 微调 支持自定义数据格式 支持 2018 年及以后版本的 NVIDIA GPU 开源版本加速 5 倍、Pro 版本加速 30 倍、支持 RoPE Scaling
Trainer 常见开源大模型 通用训练接口
自定义训练循环、损失函数、优化器等
混合精度训练 适用于各种 NLP 数据集、支持自定义数据格式 支持自定义回调函数 适用于多种 NLP 任务

图片版的总结:

上一篇:每日进步一点点(网安)


下一篇:【Linux】Linux入门(4)其他常用指令-网络请求和下载