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

相关推荐
唯道行几秒前
计算机图形学·21 梁友栋-Barsky直线裁剪算法与三维直线裁剪
人工智能·算法·机器学习·计算机视觉·计算机图形学·opengl
阿杰学AI2 分钟前
AI核心知识32——大语言模型之多模态语音(简洁且通俗易懂版)
人工智能·ai·语言模型·自然语言处理·aigc·语音识别·多模态语音
九河云3 分钟前
智能家居生态数字化:设备联动场景化编程与用户习惯学习系统建设
人工智能·学习·智能家居
阿恩.7706 分钟前
国际会议:评职称、申博、考研的硬核加分项
人工智能·经验分享·笔记·计算机网络·能源
严文文-Chris7 分钟前
【机器学习三大范式对比总结】
人工智能·机器学习
极客BIM工作室7 分钟前
AI导读AI论文: DeepSeek-V3.2: Pushing the Frontier of Open Large Language Models
人工智能·语言模型·自然语言处理
Mintopia14 分钟前
🚀 垂直领域 WebAIGC 技术联盟:协同创新与资源共享模式
人工智能·架构·aigc
Baihai_IDP15 分钟前
用户体验与商业化的两难:Chatbots 的广告承载困境分析
人工智能·面试·llm
研华科技Advantech17 分钟前
重型汽车NVH智能检测方案:边缘计算+数据采集+智能算法技术实践
人工智能·汽车·边缘计算·新能源·nvh
qq_2339070318 分钟前
GEO优化企业2025推荐,提升网站全球访问速度与用户体验
大数据·人工智能·python·ux