指南 3个标注团队操作手册:提升标注速度与质量

监督式LLM微调

该模板旨在帮助您开始监督式LLM微调的过程。

监督式LLM微调的目标是优化您的大型语言模型(LLM),使其能够根据用户定义的提示生成比原始基础模型更具上下文针对性的响应。

在以下多种场景中,您可能希望使用这种方法:

  • 文档分类
  • 通用问答(QA)系统
  • 信息检索
  • 客户支持服务

通常当您需要以下情况时,会使用此数据集收集模板:

  • 训练大型基础模型以遵循您的指令;
  • 创建任何自然语言处理(NLP)类型的模型,例如针对您领域定制的情绪分析、文本摘要、问答系统、命名实体识别;
  • 修正模型在生成响应中的错误;
  • 以特定风格生成响应;
  • 从少样本模型生成场景切换到零样本学习模式,无需提供任何示例;
  • 降低模型生成成本。

所有这些任务都需要一个包含提示词及对应响应或补全的数据集,例如:

[
  {
    "prompt": "<prompt text>",
    "response": "<generated response>"
  },
  {
    "prompt": "<prompt text>",
    "response": "<generated response>"
  },
  {
    "prompt": "<prompt text>",
    "response": "<generated response>"
  }
]

如何收集数据集

通过收集初始提示集来启动您的项目:

[
  {
    "prompt": "<prompt text>"
  },
  {
    "prompt": "<prompt text>"
  },
  {
    "prompt": "<prompt text>"
  }
]

每个JSON项将在Label Studio中呈现为单独的任务以完成响应。

启动您的标注项目

需要帮助开始使用Label Studio?查看我们的从零到一教程

  1. 在Label Studio中创建新项目
  2. 前往设置 > 标注界面 > 浏览模板 > 生成式AI > 监督式LLM微调
  3. 保存 或者,您也可以使用我们的Python SDK创建新项目:
import label_studio_sdk

ls = label_studio_sdk.Client('YOUR_LABEL_STUDIO_URL', 'YOUR_API_KEY')
project = ls.create_project(title='Chatbot Model Assessment', label_config='<View>...</View>')

导入数据集

使用Python SDK,您可以将包含输入提示的数据集导入Label Studio。使用您刚创建的项目的PROJECT_ID,运行以下代码:

from label_studio_sdk import Client

ls = Client(url='<YOUR-LABEL-STUDIO-URL>', api_key='<YOUR-API_KEY>')

project = ls.get_project(id=PROJECT_ID)
project.import_tasks('prompts.json')

然后您可以通过创建响应来开始标注数据集。

导出数据集

根据问题陈述的复杂程度,通常需要标注数百到数千个任务才能完成对LLM的微调。

在标注足够多的任务后,您可以将数据集导出为以下原始Label Studio JSON格式:

[
  {
    "id": 1,
    "data": {
      "prompt": "Generate a Python function that takes a list of integers as input and returns the sum of all even numbers in the list."
    },
    "annotations": [
      {
        "id": 1,
        "created_at": "2021-03-03T14:00:00.000000Z",
        "result": [
          {
            "from_name": "instruction",
            "to_name": "prompt",
            "type": "textarea",
            "value": {
              "text": [
                "def sum_even_numbers(numbers):\n    return sum([n for n in numbers if n % 2 == 0])"
              ]
            }
          }
        ],
// other fields

它表示带有标注的任务列表。每个任务都有一个包含输入提示的data.prompt字段,每个"annotations"项在result.value.text字段下包含响应结果。 您可以为每个任务创建多个标注。

或者,您可以下载相同数据的CSV格式:

prompt,instruction
"Generate...","def sum..."

如何配置标注界面

Supervised Language Model Fine-tuning 模板包含以下XML格式的标注界面:


<View className="root">
    <Style>
        <!-- Different CSS styles for the prompt and the answer input -->
    </Style>
    <View className="container">
        <View className="prompt">
            <Text name="prompt" value="$prompt"/>
        </View>
        <View className="answer-input">
            <TextArea name="instruction" toName="prompt"
                      maxSubmissions="1" required="true"
                      requiredMessage="You must provide the response to the prompt"
                      placeholder="Type your answer here..."
                      rows="10"
            />
        </View>
    </View>
</View>

这里将输入提示存储在"$prompt"变量中,并通过

你可以修改XML注释中的"prompt"来查看它如何与你的数据配合显示。

如何微调模型

您生成的示例可用于微调开源LLM模型,如LLaMa、Pythia、Falcon、StableLM、MPT等。您可以在HuggingFace LLM排行榜上查看完整的模型列表,并从Model Hub下载和微调模型。 另外,还有一些可用的微调服务:OpenAI、CoHere、MosaicML、Google Cloud AI Platform、AzureML等。