跳至主要内容

GPT-4o 视觉微调:示例指南

通过这份循序渐进的教程,学习如何使用图像微调 GPT-4o,并了解如何提升 GPT-4o 识别格鲁吉亚教堂的能力。
· 8分钟 阅读

使用 AI 探索

直到最近,微调GPT-4o 还只能基于文本。如今,借助OpenAI 最新的微调 API,我们也可以用图像来定制 GPT-4o。这意味着我们可以让 GPT-4o 的能力更贴合我们的使用场景。

这一更新带来了新可能——想象一下,将 GPT-4o 微调用于更精准的视觉搜索、目标检测,甚至医学影像分析。

在本教程中,我将逐步讲解如何使用图像微调 GPT-4o。具体来说,我们会将模型微调为能够正确识别格鲁吉亚正教会的教堂。

GPT-4o 视觉微调定价

OpenAI 在 10 月 31 日之前每天提供 100 万个免费 token,用于基于图像微调 GPT-4o 模型,这是探索 GPT-4o 视觉微调能力的好机会。

10 月 31 日之后,训练费用将转为按量计费,费率为每百万 token 25 美元。此外,推理还将对每次输入(每百万 token 3.75 美元)和输出(每百万 token 15 美元)收取费用。

请注意,此信息截至 10 月 10 日有效,最新的价格与可用性请参阅OpenAI 的定价页面。

GPT-4o 的视觉识别挑战

让我们直接进入有趣的部分。我们究竟如何为 GPT-4o 进行视觉微调?

先来评估一下 GPT-4o 识别这座格鲁吉亚教堂的表现:

GPT-4o 的视觉识别挑战:识别格鲁吉亚教堂

在提问后,模型认为图中的建筑是格鲁吉亚的圣尼古拉教堂,但实际上它是库塔伊西的“圣报喜”教堂(Kutaisi Holy Annunciation temple)。

显然,还有改进空间,这正是微调发挥作用的地方。

准备 JSONL 文件

要开始微调,我们首先需要准备训练数据集。根据官方文档,我们需要一个如下结构的 JSONL 文件:

{
  "messages": [
    {
      "role": "system",
      "content": "You are an assistant that identifies Georgian orthodox churches."
    },
    {
      "role": "user",
      "content": "What is this church called?"
    },
    {
      "role": "user",
      "content": [
        {
          "type": "image_url",
          "image_url": {
            "url": "https://upload.wikimedia.org/wikipedia/commons/e/e8/Khareba_church.jpg"
          }
        }
      ]
    },
    {
      "role": "assistant",
      "content": "Kutaisi Holy Annunciation temple"
    }
  ]
}

//second example

{
  "messages": [
    {
      "role": "system",
      "content": "You are an assistant that identifies Georgian orthodox churches."
    },
    {
      "role": "user",
      "content": "What is this church called?"
    },
    {
      "role": "user",
      "content": [
        {
          "type": "image_url",
          "image_url": {
            "url": "https://upload.wikimedia.org/wikipedia/en/a/af/Holy_Trinity_Cathedral_of_Tbilisi.jpg"
          }
        }
      ]
    },
    {
      "role": "assistant",
      "content": "Holy trinity cathedral"
    }
  ]
}

//other examples below

为了便于阅读与节省篇幅,我这里只展示了两个条目的训练 JSONL 片段;其余训练样本应各自占用单独一行。

注意,运行微调至少需要 10 个示例。每一行代表一个独立的包含 messages 数组的 JSON 对象。

另外,JSONL 不支持注释,因此我在本指南中使用 // 添加了注释。请务必在训练前删除它们。

您可以使用诸如记事本之类的常规文本编辑器;如果示例很多,建议使用脚本自动生成该文件。准备好 JSONL 文件后,就可以开始微调流程了。

使用图像微调 GPT-4o

现在,JSONL 已经准备好,我们需要登录OpenAI 控制台,并选择Create 选项:

用于 GPT-4o 的 OpenAI 微调控制台

在弹出的菜单中:

  1. 选择 gpt-4o-2024-08-06 模型。
  2. 上传训练用的 JSONL 文件。
  3. 您也可以设置超参数,或将所有项保持为自动。

创建任务后,微调会自动开始:

OpenAI GPT-4o 微调任务创建菜单

我的微调大约耗时 20 分钟(轮数自动设置为 9)。根据数据集大小和模型复杂度,耗时可能不同,完成后您会收到通知。

测试微调后的 GPT-4o 模型

完成后,您可以通过 API 或Playground 访问该微调代理。

为简便起见,我将使用 Playground 进行测试。来看看这次模型能否正确识别这座教堂:

OpenAI Playground 对比微调后的 GPT-4o 与常规 GPT-4 模型

如您所见,微调后的代理(右侧)正确识别了教堂,尽管该图片并不在训练数据集中。常规模型(左侧)仍然识别错误!

结论

在本教程中,我们探索了使用图像微调 GPT-4o 的流程。

我们先指出了模型在识别特定类型教堂方面的初始局限。为了解决这一问题,我们准备了包含图文配对的 JSONL 文件用于训练,随后使用 OpenAI 的微调 API 创建了一个定制模型。

最后,我们测试了微调后的模型,观察到其在识别该教堂方面的准确率有所提升。

虽然本例聚焦于一个特定用例,但其背后的原理与技术可应用于更广泛的图像相关任务,展现了 GPT-4o 视觉微调的潜力。建议阅读 OpenAI 的公告文章中的用例。

如需进一步了解如何使用 OpenAI 的产品,推荐阅读以下资源:

Dimitri Didmanidze

作者

Dimitri Didmanidze

我叫 Dimitri Didmanidze,是一名数据科学家,目前正在攻读数学硕士学位,研究方向为机器学习。我的学术历程还包括对基于 Transformer 的模型能力进行研究,并在大学层面授课,这些经历加深了我对复杂理论概念的理解。我也曾在银行业工作,将这些原理应用于解决真实世界中的数据难题。

主题