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

相关推荐
长不大的杨瑞杰5 小时前
OpenCode v2 Custom Tools 实战:开发数据库、工单与发布工具
人工智能·typescript·开发工具·opencode·custom tools
羊仔AI探索5 小时前
离世仅仅半个月,张雪峰被蒸馏了
人工智能·aigc·蒸馏·张雪峰·skills
zhippt_10146 小时前
只剩截图没有源文件?图转PPT把图片还原成可编辑幻灯片
前端·人工智能·powerpoint
小oo呆6 小时前
【自然语言处理与大模型】自然语言处理的漫漫长路之深度学习时代
人工智能·深度学习·自然语言处理
JavaPub-rodert6 小时前
AI Agent 的记忆系统怎么设计?从短期记忆、长期记忆到 RAG,讲透 Memory 工程化
人工智能
智恒百亿6 小时前
一台 5090 八卡服务器怎么分给一个团队用?多模型多任务的显存分配实战
java·大数据·人工智能
MCT1236546 小时前
AI VRM 高频设计|功率电感磁材选型与电源损耗、效率关系
人工智能·dc-dc电源·功率电感·一体成型电感
汤姆宝库6 小时前
安全深拆:越狱、Sleeper与可解释性
人工智能
skywalk81636 小时前
lightmem记忆系统实战存取.小浣熊一句话:从lightmem记忆中,取出FreeBSD linux仿真环境安装启动workbuddy的信息,整理成文档
人工智能·硬件架构·记忆·lightmem
Solange__6 小时前
在线3D预览器、Blender和游戏引擎怎么选?按5类任务比较格式、隐私与编辑性
人工智能·游戏·3d·游戏引擎·blender·1024程序员节·关卡设计