通用模型固然很好,但通过微调训练构建一个自己的专属大模型似乎更能让人心动——OpenAI的确这样做了。
2023年8月23日,OpenAI正式宣布,所有开发者都可以对GPT-3.5 Turbo进行微调(fine-tuning)。2023年11月7日,在首届OpenAI开发者大会上,山姆·阿尔特曼表示,GPT-3.5 Turbo 16K的版本可以进行微调的定制了,且价格将比前一代更低。GPT-4的微调定制也在申请中了。
开放微调功能意味着,所有的开发人员、企业都可以基于OpenAI的GPT——排名全球第一的通用AI工具,结合自己的专有数据,进行个性化微调训练,降低成本,打造自己的个性化GPT。
作为通用AI工具,GPT一个难以避免的缺点就是,并没有针对某一个细分场景进行训练。因此,对于一些特定的应用场景或任务,GPT可能无法满足用户的需求或期望,如生成特定风格、格式或内容的文本。给用户的回答可能是正确的废话或无法落地的泛泛而谈,不符合用户需求。
举个例子,假如我们需要一个浦东机场的智慧客服机器人,希望这个机器人根据浦东机场的相关规定来回答问题。但如果只是简单地在这个智慧客服机器人中内置GPT,效果可能不太理想。
比如,当我们输入“可以带猪肉制品入境吗?”GPT可能会回复:“这个问题的答案取决于您所在的国家和您要进入的国家的法律和规定。通常来说,猪肉制品可能会受到限制或禁止进入某些国家……”
这个回复当然没有错误,但却过于广泛,不能解决我们的真正需求。假如想要GPT针对浦东机场的规定进行回答,我们需要在指令中多加描述,如改成“你现在是一名浦东机场相关规范的专家,我要去浦东机场,请问我可以带猪肉制品入境吗?”但这又会出现两个问题,一个是这样做会导致指令变长,因此Token消耗数会提高;二是有时即使加上更精确的描述,输出的结果可能还是太宽泛。
这个时候,如果能够对GPT进行微调,我们就能获得想要的效果,如通过“可以带猪肉制品入境吗”这个简短指令,直接获得针对浦东机场规范的输出。这也就是微调的意义和价值所在。简单来说,微调就是将某个场景下实际发生的业务数据提交给GPT,让它学习,然后让GPT在这个场景下工作。
打个比方,GPT就像一个新入职的职业经理人,业务熟练、管理经验丰富,但是他对公司所在的本地市场、业务现状都不熟悉;我们需要他在入职后迅速熟悉公司现状及各个部门。这样这个职业经理人才能结合他的专业和管理知识,发挥最大的工作效能。这种方式,对新员工叫入职培训,对GPT就叫微调。
在没有开放微调功能以前,如果用户想要结合业务构建专属GPT,需要使用大量的propmt(提示词)调教模型进行上下文学习。但开放微调功能以后,用户只需要四步即可打造自己的专属模型:准备数据——上传文件——创建微调工作——使用微调模型。
在准备数据阶段,用户需要构造一组样例对话,对话不仅要多样化,还要与模型在实际应用中可能遇到的情景高度相似,以便提高模型在真实场景下的推理准确性。按OpenAI的要求,用户需要提供至少10个样例。为了确保数据集的有效性,每一个样例对话都应遵循特定格式。具体来说,每个样例都应是一个消息列表,列表中的每条消息都应明确标注发送者的角色、消息内容,以及可选的发送者名称。更重要的是,数据集应包含一些专门用来解决模型当前表现不佳的问题的样例。这些特定样例的回应是期望模型未来能输出的理想答案。
在准备好数据后,用户将训练文件上传到OpenAI微调平台,在创建微调作业并完成后,就可以使用最终的微调模型。
OpenAI曾在博客中提到,自GPT-3.5 Turbo面世以来,开发人员和各大企业一直希望对模型进行个性化定制,以便用户获得更独特和差异化的体验。在OpenAI开放GPT-3.5 Turbo微调功能后,开发者终于可以通过有监督的微调技术,让模型更适合自己的特定需求。目前,已有多款模型支持微调功能,包括gpt-3.5-turbo-0613、babbage-002、davinci-002、GPT-3.5 Turbo 16K等。
根据OpenAI介绍,微调后的GPT-3.5,在某些特定任务上可以超越GPT-4。此外,在封闭测试中,采用微调功能的用户已成功在多个常用场景下显著提升了模型的表现。比如,通过微调让模型更准确地执行指令,无论是简洁地输出信息,还是始终用指定的语言回应。比如,进行开发的用户可以设置模型在被要求使用德语时,一律用德语进行回应。微调还增强了模型在输出格式上的一致性,这一点对需要特定输出格式的应用显得尤为重要,如代码自动补全或API调用生成,用户可以通过微调,确保模型将输入准确转化为与系统兼容的高质量JSON代码段。微调还能让模型的输出更贴近企业的品牌语气,与其品牌调性更加吻合。
除性能提升外,微调还允许用户在不牺牲性能的前提下,简化其使用的提示语。并且,GPT-3.5 Turbo微调过的模型能处理多达4000个Token,是以前模型的两倍。有的早期用户甚至通过将指令直接嵌入模型,减少了90%的提示语的浪费,从而加快API调用速度并降低成本。并且,当微调与提示工程、信息检索和函数调用等其他技术相结合时,会获得更为强大的能力。可以说,作为一个强大的工具,微调极大地扩展了GPT在各种应用场景中的可能性。