跳至主要内容

如何微调 GPT 3.5:释放 AI 的全部潜能

探索 GPT-3.5 Turbo,发掘微调的变革潜力。学习如何为细分应用定制这一先进语言模型、提升其性能,并理解相关的成本、安全与隐私考量。
· 11分钟 阅读

使用 AI 探索

OpenAI 最新的语言模型 GPT-3.5 Turbo 标志着大语言模型能力的重大飞跃。它基于 GPT-3 系列构建,能够生成极其接近人类的文本,同时比以往版本更实惠、更易用。然而,GPT-3.5 Turbo 的真正威力在于其可通过称为微调的流程实现定制化。

通过微调,开发者可以引入自身数据,使模型适配特定用例,并在专业化任务上显著提升表现。借助微调,GPT-3.5 Turbo 在某些狭窄场景下甚至能够与 GPT-4 持平甚至超越。

这种全新的定制化水平,使企业与开发者能够部署 GPT-3.5 Turbo,打造量身定制、高性能的 AI 应用。随着今年晚些时候 GPT-3.5 Turbo 和更强大的 GPT-4 开放微调能力,我们正站在应用型 AI 新时代的门槛上。

为什么要微调语言模型?

微调已成为充分挖掘 GPT-3.5 Turbo 等大语言模型价值的关键技术。我们还专门撰写了有关 微调 GPT-3 的指南。

尽管预训练模型开箱即用即可生成高度拟人的文本,但其真正能力需要通过微调来释放。该过程允许开发者用领域特定数据继续训练,从而将模型适配到通用训练之外的专业用例。微调可提升模型在细分应用中的相关性、准确性与性能。

针对特定用例的定制化

微调让开发者能够定制模型,打造独特且有差异化的体验,以满足特定需求和领域要求。通过在领域数据上训练,模型可对该细分领域生成更相关、更准确的输出。这种定制化水平有助于企业构建量身打造的 AI 应用。

更强的可引导性与可靠性

微调可提升模型遵循指令与维持一致输出格式的能力。通过在格式化数据上训练,模型会学习到期望的结构与风格,从而增强可引导性,带来更可预测、可控的输出。

性能增强

微调可显著提升模型性能,甚至让微调后的 GPT-3.5 Turbo 在某些专业任务上与 GPT-4 持平或超越。通过针对狭窄领域进行优化,模型在该问题空间中的效果将优于通用模型。微调带来的性能提升是实实在在的。

欢迎查阅我们的指南 12 个 GPT-4 开源替代方案,其中介绍了若干能提供相近性能、且对计算资源要求更低的工具。

微调 GPT 3.5-Turbo 的影响

在 OpenAI 的内测中,他们观察到对模型进行微调的客户在多种标准应用上获得了显著性能提升。以下是一些要点:

1. 更强的可定向性

通过微调,企业可以更好地引导模型遵循特定准则。例如,如果一家公司希望得到简洁的回答,或需要模型始终以某种语言作答,微调都能帮助实现。一个经典例子是,开发者可以将模型调整为在被要求时始终以德语回复。

2. 一致的响应结构

微调的一大亮点在于它能使模型输出更为统一。这对需要特定回应结构的任务尤为有价值,如代码建议或生成 API 交互。例如,通过微调,开发者可以信任模型会将用户查询转换为与其系统兼容的高质量 JSON 格式。

3. 个性化语气

微调可用于使模型的回答更贴近公司的独特声音或风格。拥有鲜明品牌语调的公司可以借此确保模型的语气契合其品牌本质。

微调的前提条件

微调通过在您的数据上继续训练,使像 GPT-3.5 Turbo 这样的预训练语言模型得以定制化。这会让模型适配您的特定用例,并显著提升其表现。

要开始微调,首先需要获取 OpenAI API 的访问权限。您在 OpenAI 官网注册后即可获得 API 密钥,用于与 API 和模型进行交互。

接着,您需要准备一个用于微调的数据集。这涉及整理文本提示与期望响应的示例。数据格式应与您的应用调用模型的方式相匹配。将数据清洗并格式化为所需的 JSONL 结构同样重要。

OpenAI CLI 提供了验证与预处理训练数据的实用工具。

验证通过后,您可以将数据上传至 OpenAI 服务器。

最后,您通过 API 发起微调任务,选择基础 GPT-3.5

Turbo 模型并传入训练数据文件。微调过程可能需要数小时至数天,具体取决于数据规模。您可通过 API 监控训练进度。

如何微调 OpenAI GPT 3.5-Turbo 模型:分步指南

OpenAI 近期推出了用于微调语言模型的 UI 界面。在本教程中,我将使用 OpenAI 的 UI 来创建一个微调后的 GPT 模型。要跟进本部分,您需要拥有 OpenAI 账户与密钥。

1. 登录 platform.openai.com

OpenAI 平台页面

2. 准备数据

作为演示,我整理了一个小型问答数据集,目前以 Pandas DataFrame 的形式存储。

问答数据框

为示范我所做的事情,我创建了 50 道机器学习题目及其以莎士比亚风格撰写的答案。通过这次微调任务,我在个性化 GPT3.5-turbo 模型的文风与语气。

尽管这并非十分实用的场景,因为您也可以在提示中直接加入“用莎士比亚风格作答”,GPT3.5 对莎士比亚当然很熟悉,并会按所需语气生成答案。

对于 OpenAI,数据必须为 jsonl 格式。JSONL 是一种格式,其中每一行都是一个合法的 JSON 对象,以换行符分隔。我编写了一个简单的代码,将 pd.DataFrame 转换为 jsonl。

import json
import pandas as pd

DEFAULT_SYSTEM_PROMPT = 'You are a teaching assistant for Machine Learning. You should help the user to answer his question.'

def create_dataset(question, answer):
    return {
        "messages": [
            {"role": "system", "content": DEFAULT_SYSTEM_PROMPT},
            {"role": "user", "content": question},
            {"role": "assistant", "content": answer},
        ]
    }

if __name__ == "__main__":
    df = pd.read_csv("path/to/file.csv", encoding='cp1252')
    with open("train.jsonl", "w") as f:
        for _, row in df.iterrows():
            example_str = json.dumps(create_dataset(row["Question"], row["Answer"]))
            f.write(example_str + "\n")

我的 jsonl 文件如下所示:

json 文件

3. 创建微调任务

前往 platform.openai.com,顶部菜单进入 Fine-tuning,并点击 Create New。

创建新的微调模型

选择基础模型。截至目前,仅有 3 个模型可进行微调(babbage-002、davinci-002、gpt-3.5-turbo-0613)。

随后,上传 jsonl 文件,填写任务名称,并点击 Create。

根据数据集大小,微调可能耗时数小时甚至数天。在我的示例中,数据集只有 5,500 个 token,但微调耗时超过 6 小时。该任务成本微乎其微(<$1 = 5,500/1000 x $0.08)。

本教程演示了如何使用 UI 来微调 GPT 模型。若您希望了解如何通过 API 实现相同目标,请查看 DataCamp 上 Zoumana Keita 撰写的教程 使用 OpenAI API 与 Python 微调 GPT-3。

4. 使用微调后的模型

微调完成后,您可以通过 API 或 platform.openai.com 上的 playground 使用该微调模型。

空白的 OpenAI Playground

请注意,在 Model 下拉菜单中,现在可以选择个人的 3.5-turbo。我们来试试。

使用微调模型的 OpenAI Playground

注意回应的语气与风格。

如果您想学习如何使用 OpenAI 的 Python 包,以编程方式与 ChatGPT 进行对话,请查看 DataCamp 上的博客 在 Python 中通过 OpenAI API 使用 GPT-3.5 与 GPT-4。

安全与隐私

OpenAI 严肃对待安全问题,在发布新模型前会进行严格的流程,包括测试、专家反馈、改进行为的技术手段与监控系统。他们的目标是让强大的 AI 系统造福社会,并将可预见风险降至最低。

微调允许在保留重要安全特性的前提下,对 GPT-3.5 Turbo 等模型进行定制。OpenAI 在多个层面采取干预措施——度量、模型变更、策略、监控——以降低风险并使模型保持一致性。

OpenAI 会在可行的情况下从训练数据中移除个人信息,并制定了禁止生成包含私人个体信息内容的政策,从而最大限度降低隐私风险。

对于不涉及敏感数据的常见用例,OpenAI 模型可以安全使用。但对于专有或受监管的数据,数据脱敏、私有 AI 处理器或自建模型等选项或许更为合适。

微调 GPT 3.5-turbo 的成本

微调并使用微调后的 GPT 3.5-turbo 模型涉及三类成本。

  1. 训练数据准备。需整理与您的用例匹配的文本提示与期望回应的数据集。成本取决于获取与格式化数据所需的时间与投入。
  2. 初始训练成本。按训练数据的 token 数收费。以每 1,000 个 token 收费 $0.008 计,包含 100,000 个 token 的训练集,其初次微调成本为 $800。
  3. 持续使用成本。对输入提示与模型输出均按 token 计费。以每 1,000 个输入 token $0.012、每 1,000 个输出 token $0.016 计,具体成本会随应用使用量快速累积。

来看一个使用成本的示例场景:

  • 聊天机器人,单次交互 4,000 个 token 的提示/回应,每日 1,000 次交互:
    (4,000/1000) 个输入 token x $0.012 x 1,000 次交互 = 每日 $48
    (4,000/1000) 个输出 token x $0.016 x 1,000 次交互 = 每日 $64
    合计 = 每日 $112,或每月 $3,360
  • 文本摘要 API,输入 2,000 个 token,每日 500 次请求:
    (2,000/1000) 个输入 token x $0.012 x 500 次请求 = 每日 $12
    (2,000/1000) 个输出 token x $0.016 x 500 次请求 = 每日 $16
    合计 = 每日 $28,或每月 $840

注:token 除以 1000 是因为 OpenAI 的定价以每 1,000 个 token 报价。

学习如何在端到端的数据科学项目中使用 ChatGPT。请查看 数据科学项目中使用 ChatGPT 的指南,了解如何用 ChatGPT 进行项目规划、数据分析、数据预处理、模型选择、超参数调优、开发 Web 应用并将其部署到 Spaces。

结语

在探索大语言模型能力的前沿时,GPT-3.5 Turbo 的突出之处不仅在于其类人文本生成能力,更在于通过微调所释放的变革潜力。通过这一定制化过程,开发者可以将模型的能力打磨到适配细分应用,从而在专业领域中取得可与后继者比肩、甚至超越的优异结果。

在为满足独特需求而进行微调的应用中,可定向性、响应结构和语气个性化的增强有目共睹,使企业能够打造独特的 AI 体验。然而,能力越大,责任越大。在实施生成式 AI 与语言模型时,务必要理解相关成本,并审慎对待安全与隐私问题。

获取 60+ 条面向数据科学任务的 ChatGPT 提示,参阅 数据科学版 ChatGPT 速查表。

Moez Ali

作者

Moez Ali

数据科学家,PyCaret 的创始人兼作者

主题