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

news/2024/5/19 12:32:08 标签: 人工智能, tokenizer, train, LLM, Transformer

背景:

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

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

第一步:数据准备

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

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()

第二步:训练

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

第三步:保存

tokenizer.save_pretrained("code-search-net-tokenizer")

第四步:使用

tokenizer = AutoTokenizer.from_pretrained("huggingface-course/code-search-net-tokenizer")

总结:

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

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


http://www.niftyadmin.cn/n/5035362.html

相关文章

【100天精通Python】Day64:Python可视化_Matplotlib绘制误差线图,绘制填充图,示例+代码

1 绘制误差线图(errorbar) 误差线图用于可视化一个或多个数据集的测量值及其相关误差或不确定性。每个数据点可能有不同的误差范围,这些误差可以表示为上下误差条、对称误差、非对称误差等。通常,误差线图用于比较多个实验条件或数…

ssh登录时间久或登陆后报错

情况1 问题描述: ssh登录时间很久,登录后出现abrt-cli status timed out 的报错 问题原因: .lock文件被锁导致 执行systemctl status abrtd.service可以看到被锁的.lock 处理方式: ps -ef | grep pid 找到被锁的进程kill掉…

代码随想录算法训练营Day51 | 动态规划(12/17) LeetCode 309.最佳买卖股票时机含冷冻期 714.买卖股票的最佳时机含手续费

最后一天的股票买卖问题练习! 第一题 309. Best Time to Buy and Sell Stock with Cooldown You are given an array prices where prices[i] is the price of a given stock on the ith day. Find the maximum profit you can achieve. You may complete as many…

Mac cocoapod 3分钟安装教程( 国内镜像源方法)

参考链接:2023最新总结,Mac下使用Homebrew完全指南! - 知乎 1.打开终端, 执行: /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)" 2.运行,可以选择清…

分类算法(KNN算法)

KNN(k-Nearest Neighbors)算法是一种常见的分类和回归算法。它的核心思想是通过计算待分类对象和训练集中已分类对象之间的距离来确定待分类对象所属的类别。其中,k表示选取距离待分类对象最近的k个训练样本,将这些样本的类别作为…

小区物业管理缴费报修活动报名商城小程序开源版开发

小区物业管理缴费报修活动报名商城小程序开源版开发 以下是小区物业管理缴费报修活动报名商城小程序开源版的功能列表: 用户注册和登录小区信息展示(包括小区简介、周边设施等)物业公告显示和发布功能小区物业费用查询和缴费功能基础设施报…

STM32F4X UCOSIII任务

STM32F4X UCOSIII任务 什么是任务UCOS任务任务控制块(OS_TCB)UCOSIII任务的状态任务状态图UCOSIII任务状态 任务优先级任务调度抢占式调度时间片轮转调度任务调度点 任务栈UCOSIII任务常用函数任务创建函数OSTaskCreate任务删除函数OSTaskDel任务挂起函数OSTaskSuspend任务恢复…

支付通道简述

1、苹果内购流程图 官方文档:简体中文文档 - Apple Developer 苹果内购没有通知,需要前端调用后端接口,通知后端支付成功。 2、微信支付 官方文档:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter7_4 JSAPI时序图…