首页 > 其他分享 >大模型微调实战:基于 LLaMAFactory 通过 LoRA 微调修改模型自我认知

大模型微调实战:基于 LLaMAFactory 通过 LoRA 微调修改模型自我认知

时间:2024-12-26 10:31:03浏览次数:6  
标签:15 23 -- 模型 微调 json root LLaMAFactory

本文主要分享如何使用 LLaMAFactory 实现大模型微调,基于 Qwen1.5-1.8B-Chat 模型进行 LoRA 微调,修改模型自我认知。

本文的一个目的:基于 Qwen1.5-1.8B-Chat 模型进行微调,修改模型自我认证。

修改前对于 Qwen1.5-1.8B-Chat 模型,用户问你是谁?时模型一般会回答我是阿里云自主研发的超大规模语言模型,我叫通义千问。

我们希望在微调之后,对于同样的问题,模型能回答我是 Archer,由 意琦行 研发

1. 训练相关概念


ChatGPT 是如何炼成的?

ChatGPT 是如何炼成的,或者说如何训练出一个大模型?

训练一个大模型一般可以分为三步:

  • 1)预训练(Pre Training,PT):提供海量数据,通过无监督预训练,花费大量算力得到一个基座模型

  • 比如 Llama 3 在 24K GPU 集群上训练,使用了 15T 的数据

  • 此时模型有预测下一个 token 的能力,但是离对话 / 问答 模型还差一点,可能不会回复你的问题,反而给你生成一个类似的问题

  • 2)指令微调(Supervised Fine-Tuning, SFT):在基座模型上微调,让模型能够适用特定任务,最终得到一个 SFT 模型

  • 比如为了让模型成为问答助手,需要让模型学习更多的问答对话,从而学习到我们输入问题的时候,模型应该输出答案,而不是输出一个类似的问题。

  • 这些问答对话由人类准备的,包括问题和正确的回答。

  • 3)强化学习(Reinforcement Learning from Human Feedback, RLHF):通过人类反馈进一步优化模型的生成质量,使其生成的回答更符合用户的期望和人类的价值观。

  • Helpful:判断模型遵循用户指令以及推断指令的能力。

  • Honest:判断模型产生幻觉( 编造事实)的倾向。

  • Harmless:判断模型的输出是否适当、是否诋毁或包含贬义内容。

  • 一般根据 3H 原则进行打分:

  • 为了简化这一过程,一般是先训练一个用于打分的模型,即:奖励模型(Reward Model,RW),让奖励模型来代替人实现强化学习

预训练由于对算力和数据需求都比较大,因此要求比较高,一般用户不会涉及到预训练。

更多的是基于开源的基础模型(LLama、Baichuan、Qwen、ChatGLM…)等做微调、强化学习以满足自身需求。

微调

什么是大模型微调?

大模型微调,也称为 Fine-tuning,是指在已经预训练好的大型语言模型基础上(一般称为“基座模型”),使用特定的数据集进行进一步的训练,让模型适应特定任务或领域。

微调方法

上一篇中介绍了比较主流的训练方法,这里简单提一下:

微调根据更新参数量不同可以分为以下两种:

  • 全量参数更新 Full Fine-tuning(FFT):即对预训练模型的所有参数进行更新,训练速度较慢,消耗机器资源较多。

  • 参数高效微调 Parameter-Efficient Fine-Tuning(PEFT):只对部分参数做调整,训练速度快,消耗机器资源少。

理论上,预训练和微调都可以做全量参数更新和部分参数更新,但是一般实际训练时都是 预训练 + 全量,微调 + 部分参数更新 这样组合的

其中 PEFT 是一系列方法的统称,Scaling Down to Scale Up: A Guide to Parameter-Efficient Fine-Tuning[1] 论文里系统地概述和比较了参数高效微调方法,涵盖了 2019 年 2 月至 2023 年 2 月之间发表的 40 多篇论文。

文中作者将高效微调方法分为三类:

  • 添加额外参数 A(Addition-based)

  • 类似适配器的方法(Adapter-like methods)

  • 软提示(Soft prompts)

  • 选取部分参数更新 S(Selection-based)

  • 引入重参数化 R(Reparametrization-based)

选择合适的微调方法和框架可以显著提高效率,减少资源消耗,并帮助研究者和开发者更好地适应和优化特定任务。

现在比较主流的几种 PEFT:Prompt Tuning、Prefix Tuning、LoRA、QLoRA。

微调框架

比较主流的几个微调、训练工具:

  • huggingface/transformers[2]:最基础的一个库,提供了丰富的预训练模型和微调工具,支持大多数主流的 NLP 任务(如文本分类、序列标注、生成任务等)。适合进行快速实验和生产部署,有着广泛的社区支持。

  • huggingface/peft[3]:Parameter-Efficient Fine-Tuning,huggingface 开源的微调基础工具

  • modelscope/ms-swift[4]:modelscope 开源的轻量级微调框架

  • 以中文大模型为主,支持各类微调方法

  • 可以通过执行脚本进行微调,也可以在代码环境中一键微调

  • 自带微调数据集和验证数据集,可以一键微调 + 模型验证

  • hiyouga/LLaMA-Factory[5]:全栈微调工具

  • 运行脚本微调

  • 基于 Web 端微调

  • 支持海量模型 + 各种主流微调方法

  • 自带基础训练数据集

  • 除微调外,支持增量预训练和全量微调

  • NVIDIA/Megatron-LM[6]:NVIDIA 开发的大模型训练框架,支持大规模的预训练和微调。适用于需要极高性能和规模的大模型训练和微调。

快速实验选择 Transformers 即可,超大规模的选择 NVIDIA/Megatron-LM,普通规模就选择使用较为简单的 hiyouga/LLaMA-Factory。

本文则使用 LLaMAFactory 演示如何进行 LoRA 微调。

在这里插入图片描述

标签:15,23,--,模型,微调,json,root,LLaMAFactory
From: https://blog.csdn.net/2401_85373691/article/details/144727089

相关文章

  • 创建用于预测序列的人工智能模型,评估模型的能力。
    上一篇:《创建用于预测序列的人工智能模型(三),训练模型》序言:对于当前的动则几千亿的大语言模型来说,训练的过程可以持续几天几周基于几个月,这取决于拥有的硬件数量以及总要训练的参数。模型训练完成后就进入模型的评估验证过程,一般会不断的重复直到优化完成。评估人工智能模型的性......
  • DDI-GPT:使用知识图谱增强的大模型对药物相互作用进行可解释的预测
    DDI-GPT:ExplainablePredictionofDrug-DrugInteractionsusingLargeLanguageModelsenhancedwithKnowledgeGraphs 是一篇关于药物相互作用(DDI)预测的研究论文,该研究提出了一个深度学习框架DDI-GPT,它通过结合知识图谱(KGs)和预训练的大型语言模型(LLMs)来预测药物之间的......
  • C# 异步编程模型【代码之美系列】
    ......
  • UML之模型、包及包的版型(构造型)
    包是UML模型的组织结构,也是UML项目的配置管理结构。包存在多个层级,除了顶层包,所有包隶属于一个且仅隶属于一个上层包。在项目不同阶段实际推进与配置过程中,通常以不同层级的包为单位进行check-in、check-out、打标签及建立基准。许多项目会在计划的时间点进行正式的官方评审,例如系......
  • 模型训练中性能指标
    在机器学习和深度学习的模型训练过程中,评估模型性能是至关重要的一环。不同的任务和应用场景可能会采用不同的评估指标,常见的包括准确率(Accuracy)、精确率或精度(Precision)、召回率(Recall)和均值平均精度(mAP)。本文将介绍这些评估指标的定义、计算方法及其在实际中的应用。1.Accur......
  • Go 高级编程 三 内存模型
    内存模型并发编程模型:多线程、消息传递。从理论上来说,多线程和基于消息的并发编程是等价的。go语言是基于消息并发模块的编程语言,将基于CSP模型的并发编程内置到语言中,可以通过go关键字来启动一个goroutinego的goroutiune之间是共享内存的。Goroutinegoroutiune是一种轻量级......
  • 知识图谱+大模型:打造全新智慧城市底层架构
    在数字化时代,智慧城市的建设正迎来新一轮的变革。本文将探讨如何结合知识图谱和大模型技术,构建智慧城市的全新底层架构,以应对日益增长的数据量和复杂性,提升城市管理的智能化水平。 知识图谱:智慧城市的知识库知识图谱作为智慧城市的“大脑”,是一种语义......
  • LangGraph:基于图结构的大模型智能体开发框架
    LangGraph是LangChainAI开发的一个工具库,用于创建代理和多代理智能体工作流。它提供了以下核心优势:周期、可控性和持久性,对于Agent智能体开发者来说无疑减少了许多工作量。以下篇幅仅从本人角度阐述LangGraph在开发过程中的亮点以及使用方法。基本介绍LangGraph的StateGraph是......
  • Qwen2大模型微调入门实战(附完整代码)超详细讲解
    Qwen2(https://modelscope.cn/models/qwen/Qwen2-1.5B-Instruct/summary)是通义千问团队最近开源的大语言模型,由阿里云通义实验室研发。以Qwen2作为基座大模型,通过指令微调的方式做高精度文本分类,是学习LLM微调的入门任务。在本文中,我们会使用Qwen2-1.5b-Instruct(https......
  • OpenAI o3模型震撼发布:编程界的革命性突破,程序员的未来将何去何从?
    当人工智能踏足编程领域,生产力的提升让人瞠目结舌。就在近日,OpenAI发布了全新的o3模型,其强大的代码生成能力和上下文理解能力,将编程带入了一个全新的时代。是机遇还是挑战?程序员们将如何面对这场技术风暴? o3模型究竟有何与众不同之处?它的发布会对程序员和整个软件行业产生怎......