冻结层微调:在冻结层微调中,模型的一部分参数(通常是预训练模型的底层参数)被冻结,不参与微调过程,而只有顶层的参数会被更新。这种方法适用于新任务与预训练任务相似度较高,或者新任务的数据量较小的情况。
适应性微调:适应性微调是一种更为灵活的方法,它允许模型在微调过程中动态地调整哪些参数需要更新。这种方法可以根据新任务的特定需求,有选择性地更新模型参数。
三、模型微调的流程
1、准备数据:
更新 LLM 需要提供一个包含示例的数据集。该数据集应该是一个 JSONL 文件,其中每一行对应一个提示词补全文本对。
JSONL 文件是文本文件,其中每一行表示一个单独的 JSON 对象。有点儿类似于 MangoDB 之类的文档数据库类型。
如果你有足够的数据,那么该工具会询问你是否要将数据分为训练集和验证集。这是一种推荐的做法。算法将使用训练集来微调模型参数。验证集则用于衡量模型在未用于更新参数的数据上的性能。
对 LLM 的微调受益于高质量示例,最好由专家审核。当使用已有数据集进行微调时,请确保对数据进行筛查,以排除具有冒犯性的内容或不准确的内容。如果数据集过大而无法手动审核所有内容,则可以检查随机样本。
2、上传数据
准备好数据后,需要将其上传到 OpenAI 服务器。OpenAI API 提供了不同的函数来操作文件。上传文件的方法如下:
两个参数是必需的:file 和 purpose。在微调时,将 purpose 设置为 fine-tune。这将验证用于微调的下载文件格式。此函数的输出是一个字典,你可以在 id 字段中检索文件 ID。
删除文件:openai.File.delete ( “ file-z5mGg ( … ) ” ) ,file_id 参数是必需的。
列出所有已上传的文件:openai.File.list ( )
3、执行微调的任务
微调已上传文件是一个简单的过程。端点 openai.FineTune.create 在 OpenAI 服务器上创建一个作业,以根据给定的数据集优化指定的模型。该函数的响应包含排队作业的详细信息,如作业的状态、fine_tune_id,以及过程结束时模型的名称。
列出微调作业:openai.FineTune.list ( )
取消微调作业:openai.FineTune.cancel ( )
4、微调模型的调用
当模型完成微调作业后,调用微调后的模型名称,即可使用微调后的模型,这个模型会使用训练数据的领域知识,来进行对话输出。
四、模型微调的优势
模型微调之所以受到广泛关注,主要得益于以下几个优势:
1、微调可以使预训练模型更好地适应特定的任务,从而提高模型在该任务上的性能。
2、相比于从头开始训练一个模型,微调可以节省大量的计算资源和时间。
3、微调可以利用预训练模型在大规模数据上学习到的知识,将其迁移到新的任务或领域中。
五、模型微调的应用
模型微调在实际应用中非常广泛,以下是一些典型的例子:
问答系统:在问答系统中,微调可以使模型更好地理解特定领域的知识,从而提供更准确的答案。
文本分类:在文本分类任务中,微调可以帮助模型识别特定类型的文本,如垃圾邮件检测、情感分析等。
机器翻译:在机器翻译领域,微调可以使模型更好地适应特定语言对的翻译任务。
摘要生成:在自动摘要任务中,微调可以帮助模型生成更准确、更连贯的摘要。
对话系统:在对话系统中,微调可以使模型更好地理解上下文,提供更自然、更相关的回应。
模型微调作为大语言模型的高阶应用,已经在多个领域展现出其独特的价值。
随着技术的不断发展,我们有理由相信,模型微调将在未来发挥更加重要的作用,推动人工智能技术的进步。
对于产品经理和和开发者来说,深入理解和掌握模型微调技术,无疑为在 AI 领域探索和创新提供强大的助力。