AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


微调自己的大模型:PyTorch开源torchtune
发布日期:2024-05-07 07:44:28 浏览次数: 1956


文档:https://pytorch.org/torchtune/0.1/

在人工智能领域,大型语言模型(LLMs)的微调已经成为一种重要的技术手段,它使得这些先进的模型能够更好地适应各种特定的应用场景。然而,微调这些模型并非易事,尤其是在资源有限的消费级GPU上。为了解决这一挑战,一个名为 Torchtune 的 PyTorch 原生库应运而生,旨在简化和加速大型语言模型的微调过程。

Torchtune 的诞生

随着对开放源码大型语言模型兴趣的激增,开发者们急需一种工具,能够轻松地对这些模型进行定制化的微调。现有的解决方案往往因为抽象层次过多,使得添加定制化的功能变得复杂。此外,大型模型的规模也给微调带来了不小的挑战。为了克服这些困难,torchtune 以其模块化的设计和易于扩展的特性,为开发者提供了一个全新的选择。

核心特性

  • 端到端的微调支持torchtune 提供了从数据集和模型checkpoint的下载与准备,到微调后的模型评估和本地推理的全流程支持。

  • 可定制的训练构建块:支持不同模型架构和参数高效微调技术的可组合构建块,使得开发者可以根据自己的需求定制训练过程。

  • 进度和性能指标的记录:通过记录训练过程中的进度和性能指标,开发者可以更好地洞察和优化训练过程。

  • 模型量化:微调后的模型可以进行量化,以适应不同的部署环境。

  • 与流行工具的集成:torchtune 与 Hugging Face Hub、PyTorch FSDP、Weights & Biases 等流行工具的集成,使得开发者能够更加便捷地使用这些资源。

设计理念

torchtune 的设计基于以下几个核心原则:

  • 易于扩展:随着新技术的不断涌现,torchtune 的配方和训练循环设计为易于组合和修改,以便开发者可以快速适应新的微调用例。

  • 快速上手:torchtune 旨在为不同水平的用户提供服务,无论是通过修改配置文件,还是深入代码,都能够轻松上手。

  • 拥抱开源 LLM 生态:torchtune 利用开源 LLM 生态系统的丰富资源,提供与多种产品的互操作性,确保了灵活性和控制权。

三步微调自己的第一个LLM

第一步,下载预训练权重

tune download meta-llama/Llama-2-7b-hf \  --output-dir /tmp/Llama-2-7b-hf \  --hf-token <ACCESS TOKEN>

然后,选择微调配置,可以拷贝并修改YAML配置文件样例

$ tune cp llama2/7B_lora_single_device custom_config.yaml

最后,开始微调!

tune run lora_finetune_single_device --config llama2/7B_lora_single_device epochs=1

更多样例

from torchtune.models.llama2 import llama2_7b, lora_llama2_7b
# 构建 Llama2base_model = llama2_7b()
# 增加 LoRA 层lora_model = lora_llama2_7b(lora_attn_modules=["q_proj", "v_proj"])
from torchtune.modules.peft.peft_utils import get_adapter_params, set_trainable_params
# 只微调LoRA权重lora_params = get_adapter_params(lora_model)set_trainable_params(lora_model, lora_params)
# 输出训练参数数目total_params = sum([p.numel() for p in lora_model.parameters()])trainable_params = sum([p.numel() for p in lora_model.parameters() if p.requires_grad])print( f""" {total_params} total params, {trainable_params}" trainable params, {(100.0 * trainable_params / total_params):.2f}% of all params are trainable. """)# 输出结果如下:# 6742609920 total params,# 4194304 trainable params,# 0.06% of all params are trainable.

我们可使用2个GPU(VRAM>16GB)进行LoRA微调LLAMA2-7B

tune run --nnodes 1 --nproc_per_node 2 lora_finetune_distributed --config llama2/7B_lora \lora_attn_modules=['q_proj','k_proj','v_proj','output_proj'] \lora_rank=32 lora_alpha=64 output_dir=./lora_experiment_1

未来展望

随着大型语言模型的不断发展,torchtune 也在不断进化。未来,我们期待它能够支持更多的语言、模态和任务,同时保持对设计灵活性的关注,以确保社区能够持续推动创新。torchtune 的出现,无疑为大型语言模型的微调领域带来了新的活力和可能性。

Torchtune 以其 PyTorch 原生的设计、模块化的构建和易于扩展的特性,为大型语言模型的微调提供了一个全新的解决方案。无论你是资深的研究人员,还是刚刚入门的开发者,torchtune 都能帮助你轻松地微调和部署先进的语言模型,以满足你的特定需求。现在,就让我们一起开始微调!




53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询