Hugging Face 大语言模型微调指南

LLM 凭借 Transformer 架构和海量训练数据,具备强大的泛化能力和卓越性能。通常,LLM 是通用的,并非针对特定任务进行优化。例如,GPT-4 可以进行语言翻译、文本生成、问答等多种功能。

对于特定应用,例如医疗保健领域的聊天机器人或针对小语种的语言翻译,我们需要专门的模型。而 LLM(和其他基于 Transformer 的模型)的一个强大特性是其适应性。因此,我们可以利用现有的 LLM 模型并在特定训练数据上进行微调,而不是从头开始训练模型。本文将探讨如何利用 Hugging Face transformers 库微调大型语言模型 (LLM) ,使通用 LLM 适应特定应用场景。

01

微调策略

由于 LLM 的参数规模巨大,全参数微调通常难以实现。因此,参数高效微调 (Parameter-Efficient Fine-Tuning, PEFT) 技术成为主流方法。PEFT 仅对模型的部分参数进行调整,显著降低了计算成本和存储需求。Hugging Face transformers 库对 PEFT 提供了良好的支持,本文将以此为基础进行讲解。

模型选择与加载

选择合适的预训练模型是微调的第一步。Hugging Face 拥有一个完整的库生态系统,因此有一些有用的库/模块,例如:

  • SFT

  • PEFT

  • AutoTokenizer

考虑到模型大小和性能的平衡,本文以 Falcon-7b 为例进行演示。

import torch
from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig

from peft import LoraConfig

modelID = "tiiuae/falcon-7b"

02

数据集准备

SFT(我们稍后将在训练中使用)允许直接使用 Hugging Face Hub 上的数据集。本文以 Open Assistant 数据集为例进行提示学习:

dataset = load_dataset("timdettmers/openassistant-guanaco", split="train")

如果所需数据集不在 Hugging Face Hub 上,用户可以自行上传。

03

根据需求修改模型

除了部分微调之外,还可以使用量化来进一步减小权重的大小:

quantizationConfig = BitsAndBytesConfig(
    load_in_4bit=True,    
    bnb_4bit_compute_dtype=torch.float16,    
    bnb_4bit_quant_type="nf4"
)

model = AutoModelForCausalLM.from_pretrained(modelID, quantization_config=quantizationConfig)

代码中使用了 4-bit 量化技术,进一步降低了模型的内存占用,使其能够在资源受限的环境下运行。

还可以加载分词器:

tokenizer = AutoTokenizer.from_pretrained(modelID)
tokenizer.add_special_tokens({'pad_token': '<PAD>'})

加载和微调大型语言模型(LLM)需要大量的计算资源。我们在这个模型中使用了Google Colab Pro 和 A100 GPU。

04

微调流程

transformers 库提供了 SFTTrainer 用于简化微调流程。以下代码展示了如何配置和启动训练:

  • model:预训练模型
  • train_dataset:微调数据集
  • dataset_text_field:文本字段,通常默认为 “text”
  • max_seq_length:最大序列长度
  • tokenizer:文本分词器
from trl import SFTTrainer

trainer = SFTTrainer(
    model=model,    
    train_dataset=dataset,    
    dataset_text_field="text",    
    max_seq_length=512,    
    tokenizer=tokenizer,    
    packing=True, # 提高训练效率
)
trainer.train()

packing=True 参数可以将多个较短的序列打包成一个更长的序列,从而提高训练效率。

05

推理示例

微调完成后,可以使用 pipeline 进行推理:
在这里插入图片描述

例如,使用以下提示进行推理:

sequences = pipeline(
   "毫无疑问,这个星球上最美味的水果是腰果(生的形式)。它生长在巴西和其他热带地区,其味道无与伦比。你认为呢,山姆?\\n 山姆:",    
   max_length=200,    
   do_sample=True,    
   top_k=10,    
   num_return_sequences=1
)

for seq in sequences:
    print(f"结果:{seq['generated_text']}")

得到了如下输出结果(由于语言模型的随机性,输出结果可能会有所不同):

结果:毫无疑问,这个星球上最美味的水果是腰果(生的形式)。它生长在巴西和其他热带地区,其味道无与伦比。你认为呢,山姆?
山姆:我想说它很美味。它有一种略带坚果和甜味的味道,但带有非常愉悦的奶油味和顺滑的口感。它是我最喜欢的水果之一,我可以一把抓一把地吃。
你去过的最好的地方是哪里?
山姆:哦,这是一个困难的问题。这是一个非常困难的答案。
这是一个困难的答案吗?
山姆:我去过很多国家,但我最喜欢的地方可能是加拉帕戈斯群岛。我在那里呆了几个星期,喜欢那里的风景。
你去过的最糟糕的地方是哪里?
山姆:我认为可能是我见过的最糟糕的地方是柏林

06

应用场景

微调后的 LLM 可以在各种场景下应用,例如:

  • 客户服务自动化: 通过针对特定客户服务业务微调模型,开发人员可以创建聊天机器人,这些机器人不仅可以模仿一般对话,还可以理解和响应与其业务相关的查询。这种方法避免了使用外部资源,并提供真正理解术语和客户问题的全天候客户支持,从而改善了整体客户体验和满意度。
  • 语言翻译服务: 通过微调,开发人员可以改进语言模型,使其专门用于语言翻译任务,从而绕过通用的“一刀切”方法。这有助于更有效地打破国际商务和旅行中的语言障碍,而无需持续支付外部 API 的成本。
  • 个性化教育: 微调可以创建 AI 驱动的平台,根据每个学生的学习速度和学习风格调整学习材料。通过拥有模型,教育机构可以不断发展和调整学习材料而无需额外成本,从而使教育更加个性化和有效。

结论

本文介绍了使用 Hugging Face transformers 库微调 LLM 的方法,并提供了代码示例和应用场景。随着开源 LLM 的不断涌现,微调技术将进一步推动 LLM 在各个领域的应用和发展。需要注意的是,LLM 的微调需要一定的计算资源,建议使用 GPU 进行训练。 更多关于使用 OpenAI 微调 LLM 的内容,将在后续文章中进行探讨。

如何学习AI大模型?

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值