大模型之Bloom&LLAMA----SFT(模型微调)

这篇具有很好参考价值的文章主要介绍了大模型之Bloom&LLAMA----SFT(模型微调)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

0. 简介

随着chatgpt的爆火,最近也有很多大模型在不断地出现,比如说Bloom系列以及以LLAMA为基础的ziya和baichuan。这些模型相较于chatglm来说,更加具有发展前景,因为其是完全可商用,并可以不断迭代更新的。最近作者在跟着hiyouga大佬的LLaMA-Efficient-Tuning进行学习,相较于其他的项目来说,该项目是非常适合跟着学习并入门的。

1. 什么是SFT

SFT(Scalable Fine-Tuning)是一种用于自然语言处理的技术,它通过对预训练的语言模型进行微调,使其适应特定任务。在大模型SFT中,使用的是大型的预训练语言模型,例如LLAMA、GPT等,这些模型具有数十亿甚至数百亿个参数,可以处理大量的文本数据。

SFT的主要思想是在一个大型的预训练模型的基础上,针对特定的任务对模型进行微调。在微调过程中,模型会根据任务的特点调整模型的参数和结构,以提高模型在该任务上的表现。在微调过程中,可以使用不同的技术,例如数据增强、正则化、优化算法等。

SFT的优点是可以快速地针对不同的任务进行微调,而无需重新训练整个模型。此外,由于使用的是大型的预训练模型,可以利用海量的文本数据进行训练,从而获得更好的性能。不过,SFT也有一些缺点,例如需要大量的计算资源和时间进行微调,以及可能会出现过拟合等问题。

目前常用的SFT方法有P-Tuning v2、LORA、QLoRA、冻结(Freeze)、全参数(full-parameter)等方法。我们先来看一看在LLaMA-Efficient-Tuning中是如何写SFT的


2. 代码阅读–train_sft.py

下面是sft对应大模型的脚本,主要包括模型和数据的准备,数据集的划分,训练和评估等步骤。

首先,代码导入了一些必要的模块和函数。这包括一些用于数据处理、训练、加载预训练模型和绘制损失图的工具函数。(这部分和pt中一样)

    # Prepare pretrained model and dataset
    model_args, data_args, training_args, finetuning_args = prepare_args(stage="sft")# 用于准备各种参数,包括模型参数、数据参数、训练参数和微调参数。
    dataset = prepare_data(model_args, data_args)# 用于准备数据集
    model, tokenizer = load_pretrained(model_args, finetuning_args, training_args.do_train, stage="sft")# 用于加载sft微调的模型和分词器。
    dataset = preprocess_data(dataset, tokenizer, data_args, training_args, stage="sft")# 用于预处理数据,例如将文本转换为模型可以理解的格式。
    data_collator = DynamicDataCollatorWithPadding(tokenizer, data_args.ignore_pad_token_for_loss)# 动态地对数据进行填充,使得每个batch中的数据长度一致。

下面的代码是用于Seq2SeqTrainer的解码参数进行覆盖

   # Override the decoding parameters of Seq2SeqTrainer
    training_args.generation_max_length = training_args.generation_max_length if \
                training_args.generation_max_length is not None else data_args.max_target_length# 设置训练参数(training_args)中的生成最大长度
    training_args.generation_num_beams = data_args.eval_num_beams if \
                data_args.eval_num_beams is not None else training_args.generation_num_beams # 设置训练参数中的生成束搜索数(generation_num_beams)

然后,根据是否进行训练,对数据集进行划分。如果进行训练,且开发集的比例大于0,那么数据集会被划分为训练集和开发集;否则,全部数据用于训练。如果不进行训练,那么全部数据用于评估或预测。

    # Split the dataset
    if training_args.do_train:
        if data_args.dev_ratio > 1e-6:
            dataset = dataset.train_test_split(test_size=data_args.dev_ratio)
            trainer_kwargs = {"train_dataset": dataset["train"], "eval_dataset": dataset["test"]}
        else:
            trainer_kwargs = {"train_dataset": dataset}
    else: # do_eval or do_predict
        trainer_kwargs = {"eval_dataset": dataset}

接着,初始化Seq2SeqPeftTrainer对象,传入微调参数、模型、训练参数、分词器、数据处理器、回调函数和计算度量等参数(都是继承自Seq2SeqTrainer),以及前面划分的数据集。这个我们下一节将会仔细阅读里面的操作文章来源地址https://www.toymoban.com/news/detail-658792.html

…详情请参照古月居

到了这里,关于大模型之Bloom&LLAMA----SFT(模型微调)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • LLaMA-Factory微调(sft)ChatGLM3-6B保姆教程

    下载LLaMA-Factory 下载ChatGLM3-6B 下载ChatGLM3 windows下载CUDA ToolKit 12.1 (本人是在windows进行训练的,显卡GTX 1660 Ti) CUDA安装完毕后,通过指令 nvidia-smi 查看 1、选择下载目录:E:llm-trainLLaMA-Factory,并打开 2、创建新的python环境,这里使用conda创建一个python空环境,选择python3.10 参考

    2024年04月13日
    浏览(67)
  • llama-factory SFT系列教程 (一),大模型 API 部署与使用

    本来今天没有计划学 llama-factory ,逐步跟着github的文档走,发现这框架确实挺方便,逐渐掌握了一些。 最近想使用 SFT 微调大模型,llama-factory 是使用非常广泛的大模型微调框架; 基于 llama_factory 微调 qwen/Qwen-7B,qwen/Qwen-7B-Chat 我使用的是 qwen/Qwen-7B ,如果追求对话效果 qwen/

    2024年04月16日
    浏览(46)
  • 大模型之Bloom&LLAMA----Pre-Training(二次预训练)

    随着chatgpt的爆火,最近也有很多大模型在不断地出现,比如说Bloom系列以及以LLAMA为基础的ziya和baichuan。这些模型相较于chatglm来说,更加具有发展前景,因为其是完全可商用,并可以不断迭代更新的。最近作者在跟着hiyouga大佬的LLaMA-Efficient-Tuning进行学习,相较于其他的项目

    2024年02月14日
    浏览(41)
  • 【LLM系列之底座模型对比】LLaMA、Palm、GLM、BLOOM、GPT模型结构对比

    LLama [GPT3] 使用RMSNorm(即Root Mean square Layer Normalization)对输入数据进行标准化,RMSNorm可以参考论文:Root mean square layer normalization。 [PaLM]使用激活函数SwiGLU, 该函数可以参考PALM论文:Glu variants improve transformer。 [GPTNeo]使用Rotary Embeddings进行位置编码,该编码可以参考论文 Rofo

    2024年02月09日
    浏览(52)
  • 大模型LLaMA和微调LLaMA

    LLaMA的模型架构:RMSNorm/SwiGLU/RoPE/Transformer/1-1.4T tokens,和GPT一样都是基于Transformer这个架构。 1.1对transformer子层的输入归一化 与Transformer在每个子层输出后LayerNorm不同的是,LLaMA是对每个子层的输入使用RMSNorm进行归一化,计算如下: 1.2使用SwiGLU替换ReLU 【 Relu激活函数 】Relu(x)

    2024年02月07日
    浏览(39)
  • llama-factory SFT系列教程 (二),大模型在自定义数据集 lora 训练与部署

    文章列表: llama-factory SFT系列教程 (一),大模型 API 部署与使用 llama-factory SFT系列教程 (二),大模型在自定义数据集 lora 训练与部署 llama-factory SFT系列教程 (三),chatglm3-6B 命名实体识别实战 模型名 模型大小 默认模块 Template Baichuan2 7B/13B W_pack baichuan2 BLOOM 560M/1.1B/1.7B/3B/7.1B/176

    2024年04月25日
    浏览(57)
  • 基于中文金融知识的 LLaMA 系微调模型的智能问答系统:LLaMA大模型训练微调推理等详细教学

    项目设计集合(人工智能方向):助力新人快速实战掌握技能、自主完成项目设计升级,提升自身的硬实力(不仅限NLP、知识图谱、计算机视觉等领域) :汇总有意义的项目设计集合,助力新人快速实战掌握技能,助力用户更好利用 CSDN 平台,自主完成项目设计升级,提升自

    2024年02月14日
    浏览(46)
  • 微调 LLaMA 2 模型:通过 QLoRA 充分利用单 GPU 效率 Meta LLaMA 2 微调过程综合指南

    科技巨头 Meta 于 2023 年 7 月 18 日发布了 LLaMA 2,这是他们最新版本的大型语言模型 (LLM),成为头条新闻。我相信 Llama2 在进一步推动人工智能技术方面取得了巨大飞跃,人们将关注私人领域未来对聊天机器人的微调将超过一般聊天机器人。1 这些尖端模型从 2023 年 1 月到 2023

    2024年02月10日
    浏览(50)
  • 类ChatGPT大模型LLaMA及其微调模型

    LLaMA的模型架构:RMSNorm/SwiGLU/RoPE/Transformer/1-1.4T tokens,和GPT一样都是基于Transformer这个架构。 1.1对transformer子层的输入归一化 与Transformer在每个子层输出后LayerNorm不同的是,LLaMA是对每个子层的输入使用RMSNorm进行归一化,计算如下: 1.2使用SwiGLU替换ReLU 【 Relu激活函数 】Relu(x)

    2024年02月09日
    浏览(37)
  • LLM:LLaMA模型和微调的Alpaca模型

    简单了解[LeCun狂赞:600刀GPT-3.5平替! 斯坦福70亿参数「羊驼」爆火,LLaMA杀疯了] 论文原文:https://arxiv.org/abs/2302.13971v1 模型就是用的transformer的decoder,模型设计的不同点在于: 1 Position Embedding :RoPE旋转位置编码rotary-embedding 删除了绝对位置嵌入,而是在网络的每一层添加了

    2024年02月10日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包