大模型:如何利用旧的tokenizer训练出一个新的来?

背景:

我们在用chatGPT或者SD的时候,发现如果使用英语写提示词得到的结果比我们使用中文得到的结果要好很多,为什么呢?这其中就有一个叫做tokenizer的东西在作怪。

训练一个合适的tokenizer是训练大模型的基础,我们既可以从头开始训练一个全新的tokenizer,也可以利用旧的tokenizer训练出一个新的来,今天就让我们看看如何来以旧换新。

第一步:数据准备

不管是训练大模型,还是训练tokenizer,首先都需要我们准备数据集:

python 复制代码
from datasets import load_dataset
#加载数据集
raw_datasets = load_dataset("code_search_net", "python")

#写一个迭代函数,分配加载数据,防止数据集太大导致内存溢出
def get_training_corpus():
    return (
        raw_datasets["train"][i : i + 1000]["whole_func_string"]
        for i in range(0, len(raw_datasets["train"]), 1000)
    )


training_corpus = get_training_corpus()

第二步:训练

python 复制代码
#加载旧的tokenizer
old_tokenizer = AutoTokenizer.from_pretrained("gpt2")
#进行训练
tokenizer = old_tokenizer.train_new_from_iterator(training_corpus, 52000)

第三步:保存

python 复制代码
tokenizer.save_pretrained("code-search-net-tokenizer")

第四步:使用

python 复制代码
tokenizer = AutoTokenizer.from_pretrained("huggingface-course/code-search-net-tokenizer")

总结:

1、利用AutoTokenizer.train_new_from_iterator()可以很轻松的使用我们自己的数据集来根据旧的tokenizer来训练出一个全新的tokenizer

2、如果我们需要的语言中没有可用的大语言模型,或者我们要预测的数据集与我们选择的大语言模型训练的数据集非常不同,我们就需要使用适合我们的数据的tokenizer从头开始重新训练模型。

相关推荐
软件供应链安全指南12 分钟前
灵脉 IAST 5.4 升级:双轮驱动 AI 漏洞治理与业务逻辑漏洞精准检测
人工智能·安全
lanmengyiyu17 分钟前
单塔和双塔的区别和共同点
人工智能·双塔模型·网络结构·单塔模型
微光闪现18 分钟前
AI识别宠物焦虑、紧张和晕车行为,是否已经具备实际可行性?
大数据·人工智能·宠物
技术小黑屋_35 分钟前
用好Few-shot Prompting,AI 准确率提升100%
人工智能
中草药z1 小时前
【嵌入模型】概念、应用与两大 AI 开源社区(Hugging Face / 魔塔)
人工智能·算法·机器学习·数据集·向量·嵌入模型
知乎的哥廷根数学学派1 小时前
基于数据驱动的自适应正交小波基优化算法(Python)
开发语言·网络·人工智能·pytorch·python·深度学习·算法
DisonTangor1 小时前
GLM-Image:面向密集知识与高保真图像生成的自回归模型
人工智能·ai作画·数据挖掘·回归·aigc
努力学习的小洋2 小时前
Python训练打卡Day5离散特征的处理-独热编码
人工智能·python·机器学习
zuozewei2 小时前
7D-AI系列:OpenSpec:AI编程范式的规范驱动框架
人工智能·ai编程
棒棒的皮皮2 小时前
【深度学习】YOLO 进阶提升之源码解读
人工智能·深度学习·yolo·计算机视觉