📚 模块6:数据集准备和指令格式

6.1 指令微调的数据集格式

对于文本生成任务(聊天、指令、问答),最常见的格式是Alpaca格式,它由一个JSON组成,每个示例包含三个字段:

{
  "instruction": "为科技产品写一个简短的描述。",
  "input": "产品:带降噪功能的无线耳机。价格:$129.99。",
  "output": "通过这些高保真无线耳机享受无干扰的音乐。主动降噪功能和长达30小时的电池续航,非常适合旅行、工作或放松。仅售$129.99。"
}
  • instruction:模型必须执行的任务。
  • input:额外的上下文或输入(可选)。
  • output:期望的响应。

6.2 分词和打包

这种格式必须转换为模型能够理解的张量。模型的分词器将文本转换为ID,如果需要的话还会应用聊天模板(如Qwen或Llama 3)。

def format_instruction(example):
    return f"""### 指令:
{example['instruction']}

### 输入:
{example['input']}

### 响应:
{example['output']}"""

# 分词
def tokenize_function(example):
    text = format_instruction(example)
    tokenized = tokenizer(
        text,
        truncation=True,
        max_length=512,
        padding="max_length",
    )
    tokenized["labels"] = tokenized["input_ids"].copy()
    return tokenized

重要:在指导模型中,通常在labels中屏蔽输入标记(指令+输入),这样模型只在输出上计算损失。这是通过为这些标记分配-100来完成的(被PyTorch的损失函数忽略)。


Course Info

Course: AI-course3

Language: ZH

Lesson: Module6