0

经过一周的挣扎,我不得不来这里请教专业人士。我一直在尝试使用 PyTorch 从头开始​​编写我自己的 GPT 模型,我完成了这部分工作,但现在我对如何为预训练部分准备数据感到困惑,例如我尝试使用 sentencePiece 标记器来标记我的巨大“印地语”语言语料库,但不知何故它正在抛出错误。

那么任何人都可以指导我如何准备印地语语料库以预训练我的 GPT,任何用于标记或准备数据的库?

这是我尝试过的:我正在使用tokenizers库。

from tokenizers.models import BPE
from tokenizers import Tokenizer
from tokenizers.decoders import ByteLevel as ByteLevelDecoder
from tokenizers.normalizers import NFKC, Sequence
from tokenizers.pre_tokenizers import ByteLevel
from tokenizers.trainers import BpeTrainer

class BytePairEncodingTokenizer(object):
    def __init__(self):
        self.tokenizer = Tokenizer(BPE())
        self.tokenizer.normalizer = Sequence([
            NFKC()
        ])
        self.tokenizer.pre_tokenizer = ByteLevel()
        self.tokenizer.decoder = ByteLevelDecoder()

    def bpe_train(self, paths):
        trainer = BpeTrainer(vocab_size=50_000, show_progress=True, inital_alphabet=ByteLevel.alphabet(), special_tokens=[
            "<s>",
            "<pad>",
            "</s>",
            "<unk>",
            "<mask>"
        ])
        self.tokenizer.train(trainer, paths)

    def save_tokenizer(self, location, prefix=None):
        if not os.path.exists(location):
            os.makedirs(location)
        self.tokenizer.model.save(location, prefix)

tokenizer = BytePairEncodingTokenizer()
tokenizer.bpe_train("/content/drive/MyDrive/datasets/hindi/hindi.txt")
tokenizer.save_tokenizer("/content/drive/MyDrive/datasets/hindi/", prefix="hindiTokenizer")

这不适用于我的语料库。

所以主要问题是如何准备我的语料库来预训练我的 GPT。

colab 笔记本:https ://colab.research.google.com/drive/1UdLrJ8zioMqsSylf4VGmETJiELP6FzFQ?usp=sharing

数据集链接:https ://drive.google.com/file/d/1MKA3FMDUMRqz-_AACv068zWqdHCYamvA/view?usp=sharing

4

0 回答 0