LLM学习笔记(5)微调 Fine-tuning

news/2024/11/20 19:44:58/

什么是微调(Fine-tuning)?

微调(Fine-tuning)是指在预训练模型(如 GPT)基础上,通过加入特定的数据对模型进行进一步训练,以优化其在某一特定任务或领域上的表现。它的主要目的是让模型更好地适应特定的应用场景。

微调通常是开发机器学习和大语言模型应用中的一个部分。如果你需要一个高度定制化的模型,比如回答你特定行业的专业问题,这时候你可能需要通过微调来增强模型的表现。需要提供额外的定制数据集,需要一定的开发和部署能力。

继续直接看相应JSON。

总体框架结构

这是一个 JSON 格式的响应,用于描述微调任务的详细信息。主要分为以下部分:

  1. 任务基本信息:如 idobjectmodelcreated_at 等。
  2. 任务事件记录:记录任务的不同阶段及状态的 events 数组。
  3. 微调结果和参数:包含微调模型结果、超参数、训练文件等字段。
  4. 文件信息:描述上传的训练文件的详细内容。

每一部分:基本信息

  • id:微调任务的唯一标识符,类似任务的“身份证”,用于跟踪特定的微调过程。
  • object:对象类型,这里是 fine-tune,表示这是一个微调任务。
  • model:用于微调的基础模型,这里是 "curie",表示 OpenAI 的中型模型之一。
  • created_at:任务创建时间,时间戳格式(单位为秒),可以通过转换得到可读日期。

第二部分:任务事件记录 "events"

events:一个数组,用于记录微调任务的不同状态。

  • object:表示事件对象类型,这里是 fine-tune-event
  • created_at:记录事件发生时间(时间戳格式)。
  • level:日志级别,info 表示这是普通信息日志。
  • message:具体的事件信息,例如任务排队、任务开始等。

第三部分:微调结果和参数

  • fine_tuned_model:微调完成后生成的新模型的名称,目前为 null,因为任务尚未完成。
  • hyperparams:描述微调时使用的超参数:
    • batch_size:每个训练批次的样本数,这里是 4。
    • learning_rate_multiplier学习率的调整倍数,用于优化模型参数。
    • n_epochs:训练的轮数,表示完整遍历训练数据集的次数,这里是 4。
    • prompt_loss_weight:提示词损失的权重,用于平衡训练中的损失函数。

第四部分:组织与状态信息

  • organization_id:表示所属的组织 ID。
  • result_files:微调完成后生成的结果文件列表,目前为空数组,表明尚无结果文件。
  • status:任务当前状态,这里是 pending,表示任务尚未完成。
    • 微调任务的可能状态

    • pending

      • 微调任务已经被创建,但尚未开始处理。
      • 通常表示任务在队列中等待运行。
    • running

      • 微调任务正在进行中。
      • 包括数据处理、训练、模型保存等实际操作。
    • succeeded

      • 微调任务已成功完成。
      • 微调的模型已经准备好,可以用于推理或进一步操作。
    • failed

      • 微调任务失败。
      • 可能是由于数据错误、配置问题或其他意外情况导致的。
    • cancelled

      • 微调任务被用户或系统取消。
      • 通常是用户手动取消任务,或者因某些限制(如账单问题)被强制取消。

第五部分:文件信息 "training_files"

training_files:一个数组,包含用于微调的训练文件信息。

  • id:训练文件的唯一标识符。
  • object:对象类型,这里是 file
  • bytes:文件大小(字节数),这里是 1547276 字节。
  • created_at:文件上传时间,时间戳格式。
  • filename:文件名称,my-data-train.jsonl 表示训练数据文件。
  • purpose:文件用途,这里是 fine-tune-train,表示用于微调的训练数据。

开头和结尾training_files中相似内容:

在这两部分都提到id、object、bytes、created_at,这两部分(开头的微调任务信息和结尾的训练文件信息)分别描述了 微调任务本身微调任务的资源,它们有着不同的角色和作用,但彼此之间存在密切的关联。

开头部分:微调任务的总体信息

这部分的内容是对微调任务本身的描述,包括任务的标识符、使用的基础模型,以及任务的创建时间等。

  • id:表示这个微调任务的唯一标识符("ft-...")。
    • 这个任务 ID 是 OpenAI 系统分配的,用户用它可以查询或管理该微调任务。
  • object:表明当前对象的类型是一个微调任务("fine-tune")。
  • model:指定了微调使用的基础模型(如 "curie"),这是微调的起点。
  • created_at:任务创建的时间戳(1614807352),指明了该任务的创建时间。

结尾部分:训练文件的详细信息

这是一个数组,列出了与该微调任务相关的所有训练文件的详细信息。这部分描述了微调任务所使用的训练数据文件的详细信息。每个文件是微调任务的输入资源。

每个文件都是微调任务所需的重要资源,包含以下字段:

  • id:文件的唯一标识符("file-..."),用于区分文件。
  • object:表明对象类型是文件("file")。
  • bytes:文件的大小(单位:字节),如 1547276 字节。
  • created_at:文件上传的时间戳(1610062281),表示文件的创建或上传时间。
  • filename:文件的名称(如 "my-data-train.jsonl"),用于用户识别。
  • purpose:文件的用途(如 "fine-tune-train"),明确文件是用来训练微调模型的。


http://www.ppmy.cn/news/1548554.html

相关文章

0x00基础算法 -- 0x06 倍增

资料来源:算法竞赛进阶指南活动 - AcWing 1、倍增 倍增:"成倍增长",指进行递推时,如果状态空间很大,通常的线性递推无法满足时间和空间复杂度的要求,就可以通过成倍增长的方式,只递推…

如何使用虚拟机 打开另一个虚拟机的 硬盘

问题: 我在鼓捣一个虚拟机的 nvim 的时候,突然搞成 segment fault , 系统无法启动,但是,我编译的源码还在 这个虚拟机中。 解决过程: 直接使用 另一个 虚拟机, 添加这个虚拟机的硬盘。 我之前的虚拟机是这…

Python设计模式详解之5 —— 原型模式

Prototype 设计模式是一种创建型设计模式,它通过复制已有的实例来创建新对象,而不是通过从头实例化。这种模式非常适合对象的创建成本较高或者需要避免复杂的构造过程时使用。Prototype 模式提供了一种通过克隆来快速创建对象的方式。 1. Prototype 模式…

Mac 修改默认jdk版本

当前会话生效 这里演示将 Java 17 版本降低到 Java 8 查看已安装的 Java 版本: 在终端(Terminal)中运行以下命令,查看已安装的 Java 版本列表 /usr/libexec/java_home -V设置默认 Java 版本: 找到 Java 8 的安装路…

鸿蒙NEXT开发案例:计数器

【引言】(完整代码在最后面) 本文将通过一个简单的计数器应用案例,介绍如何利用鸿蒙NEXT的特性开发高效、美观的应用程序。我们将涵盖计数器的基本功能实现、用户界面设计、数据持久化及动画效果的添加。 【环境准备】 电脑系统&#xff1…

STM32单片机CAN总线汽车线路通断检测-分享

目录 目录 前言 一、本设计主要实现哪些很“开门”功能? 二、电路设计原理图 1.电路图采用Altium Designer进行设计: 2.实物展示图片 三、程序源代码设计 四、获取资料内容 前言 随着汽车电子技术的不断发展,车辆通信接口在汽车电子控…

openeuler设置IP

1 编辑网络配置文件:通常在/etc/sysconfig/network-scripts/目录下,对应的网络接口配置文件名为ifcfg-,例如ifcfg-eth0。 2. 修改配置文件:将BOOTPROTO的值改为static,并设置IPADDR、NETMASK、GATEWAY和DNS等参数。…

Clip结合Faiss+Flask简易版文搜图服务

一、实现 使用目录结构&#xff1a; templates ---upload.html faiss_app.py 前端代码&#xff1a;upload.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content&quo…