赞
踩
这篇博客是一篇来自 Meta AI,关于指令微调 Llama 2 的扩展说明。旨在聚焦构建指令数据集,有了它,我们则可以使用自己的指令来微调 Llama 2 基础模型。
目标是构建一个能够基于输入内容来生成指令的模型。这么做背后的逻辑是,模型如此就可以由其他人生成自己的指令数据集。这在当想开发私人个性化定制模型,如发送推特、写邮件等,时很方便。这也意味着你可以通过你的邮件来生成一个指令数据集,然后用它来训练一个模型来为你写邮件。
好,那我们来开始吧?我们将进行:
定义应用场景细节并创建指令的提示词模板
构建指令数据集
使用 trl
与 SFTTrainer
指令微调 Llama 2
测试模型、进行推理
在描述应用场景前,我们要更好的理解一下究竟什么是指令。
指令是一段文本或提供给大语言模型,类似 Llama,GPT-4 或 Claude,使用的提示词,用来指导它去生成回复。指令可以让人们做到把控对话,约束模型输出更自然、实用的输出,并使这些结果能够对齐用户的目的。制作清晰的、整洁的指令则是生成高质量对话的关键。
指令的例子如下表所示。
能力 | 示例指令 |
---|---|
头脑风暴 | 提供一系列新口味的冰淇淋的创意。 |
分类 | 根据剧情概要,将这些电影归类为喜剧、戏剧或恐怖片。 |
确定性问答 | 用一个单词回答“法国的首都是哪里?” |
生成 | 用罗伯特·弗罗斯特的风格写一首关于大自然和季节变化的诗。 |
信息提取 | 从这篇短文中提取主要人物的名字。 |
开放性问答 | 为什么树叶在秋天会变色?用科学的理由解释一下。 |
摘要 | 用 2-3 句话概括一下这篇关于可再生能源最新进展的文章。 |
如开头所述,我们想要微调模型,以便根据输入 (或输出) 生成指令。我们希望将其用作创建合成数据集的方法,以赋予 LLM 和代理个性化能力。
把这个想法转换成一个基础的提示模板,按照 Alpaca 格式.
- ### Instruction:
- Use the Input below to create an instruction, which could have been used to generate the input using an LLM.
-
- ### Input:
- Dear [boss name],
-
- I'm writing to request next week, August 1st through August 4th,
- off as paid time off.
- I have some personal matters to attend to that week that require
- me to be out of the office. I wanted to give you as much advance
- notice as possible so you can plan accordingly while I am away.
- Please let me know if you need any additional information from me
- or have any concerns with me taking next week off. I appreciate you
- considering this request.
- Thank you, [Your name]
- ### Response:
- Write an email to my boss that I need next week 08/01 - 08/04 off.
在定义了我们的应用场景和提示模板后,我们需要创建自己的指令数据集。创建高质量的指令数据集是获得良好模型性能的关键。研究表明,“对齐,越少越好” 表明,创建高质量、低数量 (大约 1000 个样本) 的数据集可以达到与低质量、高数量的数据集相同的性能。
创建指令数据集有几种方法,包括:
使用现有数据集并将其转换为指令数据集,例如 FLAN
使用现有的 LLM 创建合成指令数据集,例如 Alpaca
人力创建指令数据集,例如 Dolly。
每种方法都有其优缺点,这取决于预算、时间和质量要求。例如,使用现有数据集是最简单的,但可能不适合您的特定用例,而使用人力可能是最准确的,但必然耗时、昂贵。也可以结合几种不同方法来创建指令数据集,如 Orca: Progressive Learning from Complex Explanation Traces of GPT-4.。
为了简单起见,我们将使用 **Dolly**,这是一个开源的指令跟踪记录数据集,由数千名 Databricks 员工在 InstructGPT paper 中描述的几个行为类别中生成,包括头脑风暴、分类、确定性回答、生成、信息提取、开放性回答和摘要。
开始编程吧,首先,我们来安装依赖项。
!pip install "transformers==4.31.0" "datasets==2.13.0" "peft==0.4.0" "accelerate==0.21.0" "bitsandbytes==0.40.2" "trl==0.4.7" "safetensors>=0.3.1" --upgrade
我们使用 本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/81148
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。