Hugging Face:NLP Course——A full Training代码实现

我们将使用Hugging Face提供的transformer大模型实现一个完整的训练过程

课程网址:https://huggingface.co/learn

一、数据

1、导包

from datasets import load_dataset
from transformers import AutoTokenizer, DataCollatorWithPadding
from torch.utils.data import DataLoader
from transformers import AutoModelForSequenceClassification, AdamW, get_scheduler
import torch
from tqdm.auto import tqdm # 进度条
import evaluate

(1)AutoTokenizer

功能:AutoTokenizer是一个自动化工具,能够根据给定的模型名称或路径,自动选择并加载适当的分词器(tokenizer)。这意味着你可以轻松使用 Hugging Face 预训练模型而无需手动指定具体的分词器类型。

主要用途:AutoTokenizer可以对文本进行分词、编码(将单词转换为对应的ID)、解码(将ID转换为文本)、填充(padding)和截断(truncation)等操作。它会根据模型的要求自动处理这些步骤。

(2)DataCollatorWithPadding

功能:DataCollatorWithPadding 是一个用于将不同长度的输入序列整理成批次的工具。它会在批处理时自动填充短于最大长度的序列,以确保所有序列在输入到模型时具有相同的长度。

主要用途:在自然语言处理任务中,文本的长度通常是不一致的。这个数据整理器可以将输入序列填充到相同的长度,从而使它们可以被批量处理,提高模型训练的效率。

(3)AutoModelForSequenceClassification、AdamW、get_scheduler

AutoModelForSequenceClassification:用于加载适合文本分类任务的预训练模型。它根据输入的模型名称或路径,自动选择和加载适合的模型架构

AdamW:用于模型训练的优化器,具备权重衰减的功能,常用于 NLP 任务。

get_scheduler:用于创建学习率调度器,动态调整优化器的学习率以优化模型训练过程。通常是在训练过程中逐步减小学习率以提高模型的收敛性

2、准备数据

raw_datasets = load_dataset("glue", "mrpc")  # MRPC是一个用于评估文本重述paraphrase检测能力的数据集
checkpoint = "bert-base-uncased"  # bert-base-uncased是BERT模型的基础版本,具有12层Transformer编码器,110M参数。
tokenizer = AutoTokenizer.from_pretrained(checkpoint)

checkpoint使用BERT模型的基础版本,然后将其传入tokenizer标记器,从而把输入的句子转换成model能够理解的输入格式;MRPC(Microsoft Research Paraphrase Corpus)是用于判断句子对是否同义的任务

3、数据预处理

(1) 定义分词函数

def tokenize_function(example):
    return tokenizer(example["sentence1"], example["sentence2"], truncation=True)

tokenize_function接受的参数example通常是一个字典,truncation=True表示如果输入的句子长度超过模型允许的最大长度,分词器将截断句子。

下面是调用该函数的一个示例:

example = {
"sentence1": "I love you more than you know.",
"sentence2": "I think there are no limits but the sky."
}

调用tokenize_function函数会得到如下输出:

{'input_ids': [101, 1045, 2293, 2017, 2062, 2084, 2017, 2113, 1012, 102, 1045, 2228, 2045, 2024, 2053, 6537, 2021, 1996, 3712, 1012, 102], 

'token_type_ids': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], 

'attention_mask': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值