首页 > 其他分享 >扩展说明: 指令微调 Llama 2

扩展说明: 指令微调 Llama 2

时间:2024-02-08 17:12:05浏览次数:30  
标签:flash 模型 微调 dataset 指令 Llama import model

这篇博客是一篇来自 Meta AI,关于指令微调 Llama 2 的扩展说明。旨在聚焦构建指令数据集,有了它,我们则可以使用自己的指令来微调 Llama 2 基础模型。

目标是构建一个能够基于输入内容来生成指令的模型。这么做背后的逻辑是,模型如此就可以由其他人生成自己的指令数据集。这在当想开发私人个性化定制模型,如发送推特、写邮件等,时很方便。这也意味着你可以通过你的邮件来生成一个指令数据集,然后用它来训练一个模型来为你写邮件。

好,那我们来开始吧?我们将进行:

  1. 定义应用场景细节并创建指令的提示词模板
  2. 构建指令数据集
  3. 使用 trlSFTTrainer 指令微调 Llama 2
  4. 测试模型、进行推理

1. 定义应用场景细节并创建指令的提示词模板

在描述应用场景前,我们要更好的理解一下究竟什么是指令。

指令是一段文本或提供给大语言模型,类似 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.

2. 创建指令数据集

在定义了我们的应用场景和提示模板后,我们需要创建自己的指令数据集。创建高质量的指令数据集是获得良好模型性能的关键。研究表明,“对齐,越少越好” 表明,创建高质量、低数量 (大约 1000 个样本) 的数据集可以达到与低质量、高数量的数据集相同的性能。

创建指令数据集有几种方法,包括:

  1. 使用现有数据集并将其转换为指令数据集,例如 FLAN
  2. 使用现有的 LLM 创建合成指令数据集,例如 Alpaca
  3. 人力创建指令数据集,例如 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

我们使用

标签:flash,模型,微调,dataset,指令,Llama,import,model
From: https://www.cnblogs.com/huggingface/p/18011953

相关文章

  • CMakeLists常用指令
    #指定cmake最低版本cmake_minimum_required(VERSION3.10.2)#指定工程名字和支持的语言project(testLANGUAGESCXX)#指定cmake模块路径set(CMAKE_MODULE_PATH"${CMAKE_SOURCE_DIR}/cmake")#指定C++标准set(CAMKE_CXX_STANDARD17)#搜索第三方包......
  • Prompt原则 - 强调行动指令而非限制
    在与语言模型(LLM)的交流中,明确指导(告诉它做什么)往往比单纯指出禁止行为(告诉它不做什么)更加有效。这种方法的优点在于能够更直接、更精确地引导模型的回答方向,减少模型需要考虑的可能性范围,从而提高获取期望答案的几率。OpenAI的官方文档https://help.openai.com/en/articles/66......
  • Prompt原则 - 强调行动指令而非限制
    在与语言模型(LLM)的交流中,明确指导(告诉它做什么)往往比单纯指出禁止行为(告诉它不做什么)更加有效。这种方法的优点在于能够更直接、更精确地引导模型的回答方向,减少模型需要考虑的可能性范围,从而提高获取期望答案的几率。OpenAI的官方文档https://help.openai.com/en/articles/66......
  • Prompt原则 - 强调行动指令而非限制
    在与语言模型(LLM)的交流中,明确指导(告诉它做什么)往往比单纯指出禁止行为(告诉它不做什么)更加有效。这种方法的优点在于能够更直接、更精确地引导模型的回答方向,减少模型需要考虑的可能性范围,从而提高获取期望答案的几率。OpenAI的官方文档https://help.openai.com/en/articles/66......
  • Prompt原则 - 强调行动指令而非限制
    在与语言模型(LLM)的交流中,明确指导(告诉它做什么)往往比单纯指出禁止行为(告诉它不做什么)更加有效。这种方法的优点在于能够更直接、更精确地引导模型的回答方向,减少模型需要考虑的可能性范围,从而提高获取期望答案的几率。OpenAI的官方文档https://help.openai.com/en/articles/66......
  • docker---dockerfile自定义镜像指令
    dockerfile指令FROM#指定所基于的镜像名称及其标签来创建新镜像。RUN#在镜像中执行命令。ADD#将文件或目录复制到镜像中。可以使用URL作为源文件。COPY#与ADD类似,将文件或目录复制到镜像中,但不支持URL作为源文件。CMD#指定运行容器时要执行的命令,如果在......
  • 模块化全局指令调用 - 我的世界OCO指令系列
    最近在搞我的世界指令的模块化。本指令不需要引用任何模块。意义计分板和标签经常作为模块化的入口,然而当我们的操作不具体到实体时,如何才能保证有一个可供我们随意添加标签和计分项目的实体来供我们调用其他模块呢?一个简单的方法是弄一个盔甲架,用特殊的标签标记它,尽量让它......
  • 电子取证之volatility相关指令
    本文展示的raw为beginctf-学取证咯系列,以及西湖论剑easy_rawraw题目附件,有了这些能做大部分题目了,其他就刷刷题就好了。获取基本信息python2vol.py-f1.rawimageinfo#f:指定分析的内存镜像文件名上述输出中,SuggestedProfile(s)显示了Volatility推荐的几个内存镜像分析......
  • LoRA:语言模型微调的计算资源优化策略
    编者按:随着数据量和计算能力的增加,大模型的参数量也在不断增加,同时进行大模型微调的成本也变得越来越高。全参数微调需要大量的计算资源和时间,且在进行切换下游任务时代价高昂。本文作者介绍了一种新方法 LoRA,可以在保持模型性能的同时大幅减少微调的参数量和所需资源。LoRA通过引......
  • C#预处理器指令
    c#预处理指令预处理器指令告诉C#编译器要编译哪些代码,并指出如何处理代码中的特定错误或者警告。C#预处理器指令还可以告诉C#编译器有关代码组织的信息。每个预处理器指令都以#开头,而且必须一行写完。换行符标志着预处理器指令的结束。常见的预处理器指令如下所示:if指令#if......