如何使用Hugging Face微调大语言模型(LLMs)

如何使用huggingface微调模型 1 安装包 pip install transformers[sentencepiece] pip install datasets 2 导入数据 from datasets import load_dataset raw_datasets = load_dataset("glue", "sst2") raw_datasets 这里使用的是GLUE中SST2数据集,主要针对电影评论来做情感分类(二分类)。 3 pipeline 整个流程是先分词,将文本转化为向量,输入到模型,得到输出后再进行后处理 阅读详情

大语言模型(LLMs)在过去一年取得了显著进步。从ChatGPT爆发以来,后来逐步发展了众多开源大模型LLMs,如Meta AI的Llama 2、Mistrals Mistral & Mixtral模型,TII Falcon等。这些LLMs能够胜任多种任务,包括聊天机器人、问答和自动摘要,而且无需进行额外的训练。但是,如果你想为你的应用定制模型,可能需要在你的数据集上对模型进行微调,以获得比直接使用或训练更小型模型更高质量的结果。

本文将介绍如何使用Hugging Face的TRL、Transformers框架和数据集来微调开放的大语言模型。我们将按照以下步骤进行:

  1. 明确我们的使用场景
  2. 设置开发环境
  3. 创建和准备数据集
  4. 使用trl和SFTTrainer微调LLM
  5. 测试和评估LLM
  6. 将LLM部署到生产环境

注意:本文是为了在消费者级别的GPU(24GB)上运行而编写的,例如NVIDIA A10G或RTX 4090/3090,但也可以轻松地适应在更大的GPU上运行。

一、定义我们的使用场景

  1. 微调LLM时,了解你的使用场景和要解决的问题至关重要。这将帮助你选择合适的模型,或者帮助你创建一个数据集来微调你的模型。如果你还没有定义你的使用场景,你可能需要重新思考。并非所有的使用场景都需要微调,建议在微调你自己的模型之前,先评估和尝试已经微调过的模型或基于API的模型。
  1. 例如,我们将使用以下使用场景:

我们想要微调一个模型,它可以基于自然语言指令生成SQL查询,然后可以集成到我们的BI工具中。目标是减少创建SQL查询所需的时间,并使非技术用户更容易创建SQL查询。

将自然语言转换为SQL查询是一个很好的微调LLM的使用场景,因为它是一个复杂的任务,需要对数据和SQL语言有深入的理解。

二、设置开发环境

首先,我们需要安装Hugging Face的库,包括trl、transformers和datasets,以及Pytorch。trl是一个新库,建立在transformers和datasets之上,它简化了微调大语言模型的过程,包括rlhf(强化学习从人类反馈中学习)和对齐开放LLM。如果你对trl还不太熟悉,不用担心,它是一个新工具,旨在让微调过程更加便捷。

# 安装Pytorch和其他库
!pip install "torch==2.1.2" tensorboard

# 安装Hugging Face库
!pip install  --upgrade \
  "transformers==4.36.2" \
  "datasets==2.16.1" \
  "accelerate==0.26.1" \
  "evaluate==0.4.1" \
  "bitsandbytes==0.42.0" \
  # "trl==0.7.10" # \
  # "peft==0.7.1" \

# 从github安装peft & trl
!pip install git+https://github.com/huggingface/trl@a3c5b7178ac4f65569975efadc97db2f3749c65e --upgrade
!pip install git+https://github.com/huggingface/peft@4a1559582281fc3c9283892caea8ccef1d6f5a4f--upgrade

如果你的GPU采用的是Ampere架构(如NVIDIA A10G或RTX 4090/3090)或更新版本,你可以利用Flash Attention技术。Flash Attention通过优化注意力机制的计算过程,并采用一些经典技术(如分块和重新计算)来显著提高计算速度,并降低内存消耗。简而言之,这项技术可以将训练速度提升至原来的三倍。想要了解更多详情,可以访问FlashAttention的官方页面。

注意:如果你的计算机内存不足96GB且拥有大量CPU核心,你可能需要调整MAX_JOBS的数值。在我们的测试中,使用的是g5.2xlarge实例,设置了4个作业。

import torch; assert torch.cuda.get_device_capability()[0] >= 8, 'Hardware not supported for Flash Attention'
# install flash-attn
!pip install ninja packaging
!MAX_JOBS=4 pip install flash-attn --no-build-isolation

安装Flash Attention可能需要一段时间(大约10到45分钟)。

我们将利用Hugging Face Hub作为一个远程模型版本控制服务。这意味着在训练过程中,我们的模型、日志和相关信息将自动上传到Hugging Face Hub。为了使用这项服务,你需要在Hugging Face上注册一个账户。注册完成后,我们会使用huggingface_hub包中的登录工具来登录你的账户,并在本地磁盘上保存你的访问令牌。

from huggingface_hub import login

login(
  token="", # 在此处添加您的token
  add_to_git_credential=True
)

三、创建和准备数据集

  1. 一旦您确定微调是正确的解决方案,我们需要准备一个数据集来训练我们的模型。这个数据集应该是多样化的任务示范,展示了你想要解决的问题。创建数据集的方法有很多,比如:
  • 利用现有的开源数据集,如Spider
  • 利用大语言模型生成合成数据集,如Alpaca
  • 雇佣人类来创建数据集,如Dolly
  • 结合以上方法,如Orca

每种方法都有其自身的优势和劣势,并取决于预算、时间和质量要求。例如,使用现有数据集是最简单的,但可能不针对你的特定使用场景,而人工创建数据集虽然准确度高,但成本和时间消耗也大。也可以将几种方法结合起来创建指令数据集,如Orca: Progressive Learning from Complex Explanation Traces of GPT-4所示。

在我们的示例中,我们将使用一个名为sql-create-context的现有数据集,它包含了自然语言指令、数据库模式定义以及相应的SQL查询样本。

随着trl的最新版本发布,我们现在支持流行的指令和对话数据集格式。这意味着我们只需将数据集转换为支持的格式之一,trl就会自动处理后续步骤。支持的格式包括:

  • 对话格式

        
两天速成sft微调大模型(LoRA) Q:lora的预训练矩阵是不是下载的原模型的原来的参数矩阵,然后lora在这个基础上再加了一层矩阵? 阅读详情

相关推荐

【AI】在本地 Docker 环境中搭建使用 Hugging Face 托管的 Llama 模型

在本地使用Docker部署LLM GGML模型是一种方便有效的使用自然语言处理的方式。将模型docker化使其易于在不同环境之间移动,并确保其能够一致运行。在浏览器中测试模型提供了用户友好的界面,让您可以快速评估其性能。 这样的设置使您对基础架构和数据有更多控制,并更容易部署先进的语言模型,适用于各种应用。这是在部署大型语言模型方面迈出的一大步。

欧阳天涵的专栏 4128

【实战】基于 Hugging Face 的 LLM 高效微调全解析

Hugging Face 提供了一系列用于自然语言处理的库和工具,包括 Transformers、Datasets、Tokenizers 等。其中,Transformers 库包含了大量预训练的语言模型,如 BERT、GPT、T5 等,这些模型可以方便地用于各种 NLP 任务。Datasets 库提供了许多常用的数据集,方便开发者快速获取和处理数据。Tokenizers 库则用于文本的分词处理,支持多种分词方法。

shuizhudan223的博客 1194

huggingface NLP-微调一个预训练模型

微调一个预训练模型。

weixin_40455124的博客 1854

大语言模型原理基础与前沿 有害性

1. 背景介绍 1.1 人工智能与自然语言处理 人工智能 (AI) 的发展突飞猛进,其中自然语言处理 (NLP) 作为一门重要的分支学科,致力于让计算机理解和生成人类语言。大语言模型 (LLMs) 作为 NLP 领域的最新突破,展现出惊人的语言理解和生成能力,为众多应用场景带来了革命性的变化。

AI天才研究院 600

大语言模型应用指南:冲突的目标与不匹配的泛化

1. 背景介绍 1.1 人工智能的飞速发展与大语言模型的崛起 近年来,人工智能 (AI) 领域经历了爆炸式增长,而大语言模型 (LLMs) 则处于这场革命的最前沿。LLMs 是一种基于深度学习的 AI 模型,在海量文本数据上进行训练,能够生成类似人类的文本、翻译语言、编写不同种类

AI天才研究院 1024

大语言模型原理与工程实践:主流评测数据集及基准

近年来,随着深度学习技术的飞速发展,大语言模型(Large Language Models,LLMs)逐渐成为人工智能领域的研究热点。LLMs是指参数量巨大的神经网络模型,通常包含数十亿甚至数万亿个参数。文本生成:创作故事、诗歌、新闻报道等机器翻译:将一种语言翻译成另一种语言问答系统:回答用户提出的问题代码生成:根据自然语言描述生成代码语音识别:将语音转换为文本LLMs的出现,为人工智能领域带来了革命性的变化,也为各行各业带来了新的机遇。

AI天才研究院 679

AI大语言模型的社区和生态系统

1. 背景介绍 1.1 人工智能的崛起 随着计算机技术的飞速发展,人工智能(AI)已经成为了当今科技领域的热门话题。从自动驾驶汽车到智能家居,AI技术正在逐渐渗透到我们的日常生活中。在这个过程中,大语言模型(Large Language Models,简称LLMs)作为AI领域的一种重要技术,也得到了

AI天才研究院 123

博途AI助手演示,完成简单且重复的梯形图代码,并导入到博途

自写个博途AI助手,下面演示AI帮我生成完善多个模拟量输入转换的代码,

gsjkwg的博客 1516

智能车‘大脑’的诞生:揭秘电磁循迹代码背后的控制论与系统思维

本文深入探讨智能车电磁循迹系统的核心架构与控制原理,揭示了其作为精密闭环系统如何通过模块化设计、信号处理、PID控制算法及电机驱动实现自主导航。重点分析了电磁信号采集与处理流程框架,为开发者提供从理论到实践的全面指南。

arduino9maker的博客 526

Ubuntu20.04下 嵌入式 Qt 开发环境的搭建(适用于Tiny6410)

Ubuntu 下 Tiny6410 嵌入式 Qt 开发环境的搭建 目录导航Ubuntu 下 Tiny6410 嵌入式 Qt 开发环境的搭建前言1.安装前的准备工作2.安装交叉编译器 前言 这篇文章,主要是基于 Ubuntu19.10版本而写,写此文的初衷,是为了自己使用,因为最近正在以Tiny6410板子做实训,所以也是初学者一枚,只能保证我遇上的问题统统能够解决掉,至于一些没遇上的,欢迎各位看客给我留言,大家一起讨论,一起解决。 注:本文会持续更新 1.安装前的准备工作 环境要求 Linux系统:U

繁臻的小窝 4888

如何加载交易策略EA到MT4/MT5

1、打开MT4/MT5软件 2、首先,必须有一个EA,而且必须是mq4/ex4为扩展名。点击左上角“文件”—“打开数据文件夹”,找到安装路径 3、将EA的ex4或mq4文件放到MT4目录\MQL4\Experts里面(本文以名为Demo的EA为例) 4、如果有DLL库文件,复制到experts目录下的libraries子目录中 5、如果有tpl模板文件,复制到templates目录中 6、添加完成后重启MT4,点击允许EA运行图标 7、在导航中找到刚才安装的EA,拖拽到...

weixin_41364817的博客 7344

华为OD新系统机试真题 - 失灵的键盘(C/C++/Py/Java/Js/Go)

华为OD新系统机试真题 【失灵的键盘】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD4月15号机试真题【失灵的键盘】

qq_45776114的博客 1049

Java代码变更影响分析:从静态解析到动态调用图的实战全链路

本文介绍了Java代码提交影响分析的核心原理与实现方法。主要内容包括:1)静态分析技术,通过JavaParser解析AST构建调用图,记录类与方法间的调用关系;2)动态分析技术,使用ByteBuddy进行字节码增强,捕获运行时调用路径;3)JCCI工具实现,结合javalang、unidiff等技术分析代码改动影响,并将结果存储到SQLite数据库。文章提供了完整的代码示例,展示了从AST解析、动态调用跟踪到实际工具应用的完整技术栈,为代码变更影响分析提供了实用解决方案。

墨夶的博客 1250

【我的Android进阶之旅】Android自定义View实现一个游戏摇杆,来实现监听遥动的方向或者监听摇动的角度的功能

一、需求描述 去年有个需求,需要使用自定义View实现一个游戏摇杆,来识别上下左右摇动的方向。 有点类似下面这样的王者荣耀游戏摇杆的效果 二、业界已有的参考资料 在下面这篇博客介绍了如何自定义游戏摇杆 2.1 博客介绍 Android自定义摇杆 2.1.1 功能 支持自适应大小 支持2个方向、4个方向、8个方向的摇动监听 支持摇动角度获取 可选回调模式 支持可摇动区域自定义 支持摇杆自定义 支持设置图片、色值、Shape图形 2.1.2 效果图 2.1.3 设置回调方式 setCallBac

字节卷动 1398

uni-app开发-第6篇:uni-app 样式与主题

在 uni-app 开发中,样式与主题的管理是关键部分。样式分为全局样式和局部样式,全局样式在 App.vue 中定义,适用于整个应用,而局部样式在单个 .vue 文件中定义,仅对当前页面生效。局部样式优先级高于全局样式,内联样式优先级最高。样式属性如 font-family 和 color 可被子元素继承。要覆盖全局样式,可在局部样式中重新定义相同规则。主题切换通过 CSS 变量和类名实现,动态切换主题可通过修改元素的类名来完成。例如,定义浅色和深色主题,并通过按钮点击切换主题样式。这些方法帮助开发者灵活

无 363

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

上一篇: 深入解析 Mistral AI 的 Mixtral 8x7B 开源MoE大模型
下一篇: Lepton Search :不到 500 行代码构建对话式搜索引擎|开源|可商用
技术狂潮AI
博客等级 码龄3年 1282粉丝 137原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术狂潮AI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值