大模型 | 微调框架Llama-factory和Unsloth:应该选择哪个?

大模型(如GPT系列和Meta-Llama系列)在自然语言处理方面表现出色,但要实现最佳效果,仍需通过精细化处理。提示词工程、微调和RAG增强检索是三种关键技术,帮助提升大模型的应用性能。

提示词工程, 通过设计精准的输入提示,引导模型生成符合预期的输出。就像教孩子识别苹果一样,单一描述往往不够,需要通过多样化的例子提供上下文,让孩子更好理解。同样,提示词工程通过上下文示例让模型理解并生成更准确的回应。

RAG增强检索, 则用于弥补大模型知识局限的问题,将模型与外部知识库连接,使其在生成回答时可以检索到相关信息,确保在未知领域也能提供准确答案。微调则是对模型的定制训练,使其在特定领域的任务中表现更优,类似于演员为特定角色做排练训练。

微调,将大模型比作一位多才多艺的演员,他可以扮演各种角色。但是,要想让演员完美诠释一个特定角色,需要进行针对性的训练和排练。微调的过程类似于演员的排练过程。它利用特定领域的数据对大模型进行进一步训练,使其更擅长处理该领域的任務。例如,将大模型用于医学诊断,就需要使用医疗文本数据进行微调,使其能够理解医学术语并做出准确的诊断。

今天我们重点来介绍一下微调框架的选择:

  • 微调的重要性:解锁模型潜能
  • 如何选择大模型微调框架

一、微调的重要性:解锁模型潜能

微调是将预训练模型适应特定下游任务的过程。它类似于一个已经接受过良好教育的学生学习新技能,比如演奏乐器或学习一门外语。

预训练模型就像那个已经接受过良好教育的学生,他们已经掌握了大量的知识和能力,例如理解语言、识别图像等。但是,要想在特定的任务上表现出色,还需要针对性的训练。

举个例子,假设有一个预训练的语言模型,它能够理解文本并生成文字。如果我们想用这个模型来进行情感分析,就需要对它进行微调。具体来说,我们需要提供大量的带标签数据,例如评论文本和它们的情绪标签(正面、负面或中性)。通过在这些数据上训练,模型就能学习到识别不同情绪的特征,从而提高情感分析的准确率。

微调的好处在于:

  • 节省时间和资源: 与从头开始训练模型相比,微调只需要较少的训练数据和计算资源,能够显著缩短模型开发周期。

  • 提升性能: 微调可以帮助模型更好地适应特定任务,从而提高模型的性能和准确率。

因此,微调是将预训练模型应用于实际场景的重要手段,它能够有效地提高模型的性能,并降低模型开发成本。

二、如何选择大模型微调框架

1、LLaMA-Factory

支持多种先进的微调算法和模型,包括但不限于:多种模型:LLaMA、LLaVA、Mistral、Mixtral-MoE、Qwen、Yi、Gemma、Baichuan、ChatGLM、Phi 等等。

在应用领域有广泛的社区支持,从任何搜索引擎都可以找到大把的入门和学习资料。

可以基于图形的WEBUI界面或通过命令行两种方式来进行大模型的微调,非常方便,我们所要关注的就是对参数进行不断探索和调整。如下图所示,是一个典型的操作界面:

2、Unsloth:

UNSLOTH 这个易用微调框架让任何即使没有算法经验的人,在简单了解大模型基础之后,也能轻松微调主流大模型,开启你的 AI 应用之旅。

官方网站提供丰富示例: 你可以参考各种模型的使用案例,只需稍微调整参数即可完成微调过程。https://github.com/unslothai/unsloth

如下图所示:

同样支持绝大多数主流大模型: 在 HUGGING FACE 上搜索 UNSLOTH,即可找到对 Llama、mistral、国内大模型等主流大模型的全面支持,如下图所示:

也有大量的主流社区提供支持。

3、LLAMA-FACTORY vs. UNSLOTH: 微调速度的对比

最近,我分别使用了LLAMA-FACTORYUNSLOTH对一个大型语言模型进行了微调。在微调过程中,UNSLOTH的微调速度给我留下了深刻的印象。本文将简要介绍这两个框架,并重点对比它们在微调速度上的差异,以帮助大家更好地理解和选择合适的工具。

微调业务背景及数据说明:

为了提升模型将现代汉语翻译为古文的能力,我使用了一份包含中国古代所有古文与现代文对照的数据集。经过数据预处理,最终的数据集包含约1140万条对照记录,示例如下:

[
  {
    "instruction": "请把现代汉语翻译成古文",
    "input": "世界及其所产生的一切现象,都是来源于物质。",
    "output": "天地与其所产焉,物也。"
  },
  {
    "instruction": "请把现代汉语翻译成古文",
    "input": "以概念来称谓事物而不超过事物的实际范围,只是概念的外延。",
    "output": "物以物其所物而不过焉,实也。"
  }
  ]

实测结果对比:

由于4090计算资源有限,针对两种不同的微调工具进行了实际测试。具体情况如下:

【微调设置】

Llama - factory:

  • 数据量:约2万条
  • 微调步长:2940

unsloth:

  • 数据量:约45万条(考虑其对GPU加速的支持)
  • 微调步长:3000

【耗时对比】

llama-factory:

  • 预测时间:3.5小时

  • 实际时间:5小时

unsloth:

  • 预测时间:约37分钟
  • 实际时间:约37分钟

从对比的结果来看,Unsloth 在数据量大幅增加的情况下,实际耗时与预测几乎一致,耗时仅为37分钟,且相较于Llama - factory的速度快了约10倍。这意味着,Unsloth 对GPU的加速效果显著,能大幅提升微调速度。

三、总结

测试表明,UNSLOTH和LLAMA-FACTORY在社区支持、模型种类和易用性上相近,但UNSLOTH在微调速度上表现突出。尽管处理的数据量是LLAMA-FACTORY的20倍,UNSLOTH的速度仍快约10倍,极大优化了时间成本,尤其在大规模数据处理中的效率优势显著。


四、如何学习大模型?

学习AI大模型是一个系统的过程,需要从基础开始,逐步深入到更高级的技术。

这里给大家精心整理了一份全面的AI大模型学习资源,包括:AI大模型全套学习路线图(从入门到实战)、精品AI大模型学习书籍手册、视频教程、实战学习、面试题等,资料免费分享!

1. 成长路线图&学习规划

要学习一门新的技术,作为新手一定要先学习成长路线图方向不对,努力白费

这里,我们为新手和想要进一步提升的专业人士准备了一份详细的学习成长路线图和规划。可以说是最科学最系统的学习成长路线。
在这里插入图片描述

2. 大模型经典PDF书籍

书籍和学习文档资料是学习大模型过程中必不可少的,我们精选了一系列深入探讨大模型技术的书籍和学习文档,它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础(书籍含电子版PDF)

在这里插入图片描述

3. 大模型视频教程

对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的大模型视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识

在这里插入图片描述

4. 大模型项目实战

学以致用 ,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。

在这里插入图片描述

5. 大模型面试题

面试不仅是技术的较量,更需要充分的准备。

在你已经掌握了大模型技术之后,就需要开始准备面试,我们将提供精心整理的大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。

在这里插入图片描述

全套的AI大模型学习资源已经整理打包,有需要的小伙伴可以微信扫描下方CSDN官方认证二维码,免费领取【保证100%免费

使用LlamaFactory对BERT模型进行微调通常涉及以下几个步骤: 1. **安装依赖**:首先,你需要安装相关的库,比如Hugging Face的Transformers库,以及可能需要的LLAMA特定的库。 2. **加载预训练模型**:从Hugging Face Hub下载BERT的基础模型,例如`bert-base-uncased`或者其他适合任务的版本。 ```python from transformers import BertForSequenceClassification, AutoTokenizer model_name = "bert-base-uncased" tokenizer = AutoTokenizer.from_pretrained(model_name) model = BertForSequenceClassification.from_pretrained(model_name) ``` 3. **准备数据**:将你的任务数据分为训练集、验证集和测试集,并应用tokenizer对文本进行编码以便模型理解。这通常包括将文本转换成Token IDs、Segment IDs以及可能的填充(padding)和masking。 4. **微调配置**:选择适当的优化器和学习率策略,设置训练循环的参数,如批次大小(batch size)、最大迭代次数等。 ```python optimizer = AdamW(model.parameters(), lr=2e-5) epochs = 3 batch_size = 16 ``` 5. **微调模型**: - 将数据输入到模型中,通过`model.train()`进入训练模式。 - 在每个epoch内,遍历训练数据,运行前向传播(forward pass),计算损失并反向传播(backpropagation)更新权重。 - 定期评估模型在验证集上的性能,调整超参数如果必要。 ```python for epoch in range(epochs): for batch in train_dataloader: inputs = tokenizer(batch["text"], padding=True, truncation=True, return_tensors="pt") outputs = model(**inputs) loss = outputs.loss loss.backward() optimizer.step() # 防止梯度爆炸或消失 optimizer.zero_grad() # 每个epoch结束后,在验证集上做一次评估 evaluate_on_val(model, val_dataloader) ``` 6. **保存模型**:训练完成后,你可以保存微调后的模型以便后续使用。 ```python model.save_pretrained("path/to/save/my_model") tokenizer.save_pretrained("path/to/save/my_tokenizer") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值