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

相关推荐
爱打球的白师傅13 分钟前
python机器学习工程化demo(包含训练模型,预测数据,模型列表,模型详情,删除模型)支持线性回归、逻辑回归、决策树、SVC、随机森林等模型
人工智能·python·深度学习·机器学习·flask·逻辑回归·线性回归
烟袅23 分钟前
Trae 推出 Solo 模式:AI 开发的“一人一项目”时代来了?
前端·人工智能·solo
元宇宙时间37 分钟前
AI赋能的$AIOT:打造Web3全周期智能生态的价值核心
人工智能·web3
瑞禧生物ruixibio38 分钟前
Biotin-Oridonin B,生物素标记冬凌草乙素,可用于蛋白质修饰、药物靶标研究
人工智能
MediaTea41 分钟前
Python 第三方库:TensorFlow(深度学习框架)
开发语言·人工智能·python·深度学习·tensorflow
GIS好难学1 小时前
【智慧城市】2025年华中农业大学暑期实训优秀作品(2):基于Vue框架和Java后端开发
人工智能·智慧城市
Joker-Tong1 小时前
大模型数据洞察能力方法调研
人工智能·python·agent
哔哩哔哩技术1 小时前
VisionWeaver:从“现象识别”到“病因诊断”,开启AI视觉幻觉研究新篇章
人工智能
道可云1 小时前
AI赋能:农业场景培育如何支撑乡村全面振兴
人工智能
极客代码1 小时前
第七篇:深度学习SLAM——端到端的革命--从深度特征到神经辐射场的建图新范式
人工智能·python·深度学习·计算机视觉·slam·回环检测·地图构建