大模型:如何利用旧的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从头开始重新训练模型。

相关推荐
Deepoch13 小时前
模块化智能新纪元:Deepoc开发板如何重塑服务机器人产业生态
人工智能·机器人·具身模型·deepoc
人工干智能13 小时前
大模型应用中,创建OpenAI客户端的三种方式
python·llm
. . . . .13 小时前
ComfyUi
人工智能
WZGL123013 小时前
从个体需求到整体守护,科技助力老人安全安心
大数据·人工智能·科技·安全·智能家居
智算菩萨13 小时前
【Python基础】AI的“重复学习”:循环语句(for, while)的奥秘
人工智能·python·学习
FserSuN13 小时前
AI产品:Google Code Wiki
人工智能
周名彥13 小时前
### 基于CP++的天元算盘系统“长度-长“定义及工程实现方案
人工智能·去中心化·知识图谱·量子计算·agi
AMiner:AI科研助手13 小时前
AI如何重新定义研究?以AMiner沉思为例讲透Deep Research
人工智能·glm·智谱·深度调研
数字孪生家族13 小时前
以视频孪生融合空间智能,打造智慧城市领域物联感知与 AI 应用标杆案例
人工智能·智慧城市·视频孪生智慧交通·空间智能应用·视频孪生能源·数字乡村建设
Deepoch13 小时前
智能清洁新纪元:移动式收垃圾机器人如何重塑城市环卫服务体系
人工智能·机器人·具身模型·deepoc·环卫机器人