自学内容网 自学内容网

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

什么是微调(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"),明确文件是用来训练微调模型的。


原文地址:https://blog.csdn.net/qq_40525602/article/details/143893607

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!