1.地址:
https://github.com/huggingface/transformers/blob/main/examples/pytorch/language-modeling/run_clm.py
2. CLM MLM TLM
来源:
Causal Language Modeling (CLM) :因果语言模型,无监督,同Transformer,给定一个句子,根据前k个单词预测第k个单词。
Masked Language Modeling (MLM) :掩模语言模型(MLM),无监督,同BERT,随机替换部分token进行完形填空。不同之处在于,输入不是句子对,而是任意个句子组成的文本流(截断512),并且为了均衡稀有tokens和高频tokens(比如标点符号和停止词), 对高频词进行subsampling后mask。
Translation Language Modeling (TLM) :翻译语言模型,有监督且存在平行语料,将平行句子对作为输入,然后经过mask后进行完形填空。有助于对齐不同语种的representation space,低资源语种可以利用平行语料的上下文信息。
1. 导入包
import logging
import math
import os
import sys
import warnings
from dataclasses import dataclass, field
# 它是一个需要一系列可迭代对象并返回一个迭代器的函数。
# 它将所有可迭代对象组合在一起,并生成一个可迭代对象作为输出。
# 它的输出不能直接使用,因此不能显式转换为可迭代对象。此函数在终止迭代器的类别迭代器下。
from itertools import chain
# Optional表示参数可以是指定类型或者None。
from typing import Optional
import datasets
"""
evaluate 是huggingface在2022年5月底搞的一个用于评估机器学习模型和数据集的库,需 python 3.7 及以上。包含三种评估类型:
Metric:用来通过预测值和参考值进行模型评价,是传统意义上的指标,比如 f1、bleu、rouge 等。
Comparison:同一个测试集对两个(多个)模型评价,比如俩模型结果的 match 程度。
Measurement:用来评价数据集,比如字数、去重后的词数等。
"""
import evaluate
import torch
from datasets import load_dataset
# 检查当前transformers库的版本是否符合指定的要求。
check_min_version("4.37.0.dev0")
# 确保当前所需要的库是在当前范围内
require_version("datasets>=1.8.0", "To fix: pip install -r examples/pytorch/language-modeling/requirements.txt")
from transformers import (
CONFIG_MAPPING,# 用于映射不同架构的配置类
MODEL_FOR_CAUSAL_LM_MAPPING,# 用于映射不同模型架构到相应的预训练模型类
AutoConfig,# 用于根据给定的模型标识符自动选择和加载相应的配置类
AutoModelForCausalLM,#
AutoTokenizer,# 是 transformers 库中的一个类,用于自动选择和加载适用于给定模型的标记器。
HfArgumentParser,# 是 transformers 库中的一个类,它是 argparse 模块的一个扩展,用于解析命令行参数并生成对应的训练和评估参数。
Trainer,#
TrainingArguments,# transformers 库中的一个类,它存储了训练时使用的各种参数,例如学习率、批量大小、训练步数等。
default_data_collator,# 是 transformers 库中的一个函数,用于将样本数据进行批量处理,生成模型训练所需的输入。
is_torch_tpu_available,# 是 transformers 库中的一个函数,用于检查当前环境是否支持使用 PyTorch TPU(Tensor Processing Unit)。
set_seed,
)
MODEL_CONFIG_CLASSES: 包含了所有与模型配置相关的类。这些类是用于配置模型的,例如定义模型的架构、超参数等。
MODEL_TYPES: 包含了所有模型的类型标识符。这些标识符通常是字符串,用于区分不同类型的预训练模型。