为训练预处理文本

使用 PyTorch 高效训练 AI 模型

Dennis Lee

Data Engineer, Amazon

文本转换:为模型精通做准备

  • 概括文档中的文本
  • 复述识别
  • MRPC 数据集:句子对及其标签

需要审核的一大摞文档。

使用 PyTorch 高效训练 AI 模型

数据集结构

from datasets import load_dataset
dataset = load_dataset("glue", "mrpc")
print(dataset)
DatasetDict({
    train: Dataset({
        features: ['sentence1', 'sentence2', 'label', 'idx'],
    })
    validation: Dataset({
        features: ['sentence1', 'sentence2', 'label', 'idx'],
    })
    test: Dataset({
        features: ['sentence1', 'sentence2', 'label', 'idx'],
    })
})
使用 PyTorch 高效训练 AI 模型

操作文本数据集

  • 训练/验证/测试划分的嵌套字典
  • 访问训练划分示例:
dataset["train"]
  • 在划分内访问数据集特定的特征
  • MRPC 特征:sentence1sentence2label
dataset["train"]["sentence1"]
  • 加载预训练分词器
tokenizer = AutoTokenizer.from_pretrained("distilbert-base-cased")
使用 PyTorch 高效训练 AI 模型

定义编码函数

  • 定义函数以对数据集样本进行编码
  • 调用分词器;从训练样本中取出 sentence1sentence2
  • truncation:若超过最大长度(512 个 token)则截断
  • padding:用 0 填充较短序列,使输入等长
def encode(example):

return tokenizer( example["sentence1"], example["sentence2"],
truncation=True,
padding="max_length", )
使用 PyTorch 高效训练 AI 模型

规范列名

  • 使用 map 对训练集中的每个样本应用 encode
train_dataset = dataset["train"].map(encode, batched=True)
  • label 重命名为 labels
train_dataset = train_dataset.map(
    lambda examples: {"labels": examples["label"]}, batched=True
)
  • 在 Hugging Face 文档中查看模型对列的要求
使用 PyTorch 高效训练 AI 模型

保存与加载检查点

  • 将数据集放到可用 GPU 上
dataloader = DataLoader(train_dataset, batch_size=32, shuffle=True)
dataloader = accelerator.prepare(dataloader)
  • 适用于任意 PyTorch 数据集(torch.utils.data.Dataset)在 DataLoader 中使用
  • 保存预处理文本的状态(检查点)
checkpoint_dir = Path("preprocess_checkpoint")
accelerator.save_state(checkpoint_dir)
  • 需要恢复训练时加载该检查点
accelerator.load_state(checkpoint_dir)
使用 PyTorch 高效训练 AI 模型

Passons à la pratique !

使用 PyTorch 高效训练 AI 模型

Preparing Video For Download...