jingyaogong / minimind

「大模型」3小时完全从0训练26M的小参数GPT,个人显卡即可推理训练!
https://jingyaogong.github.io/minimind
Apache License 2.0
2.7k stars 329 forks source link

请问现有的模型是否支持英文呢? #83

Closed chongkuiqi closed 1 week ago

chongkuiqi commented 1 week ago

首先感谢作者的工作,非常好的入门教程和学习教程!

目前我的项目中需要用到中文和英文,请问现有的预训练模型是否支持英文呢?好像ModelScope在线测试中不支持英文。

jingyaogong commented 1 week ago

谢谢关注! 目前几乎没有,训练数据里没什么英文

chongkuiqi commented 1 week ago

谢谢关注! 目前几乎没有,训练数据里没什么英文

谢谢回复! 如果我要加入英文数据重新训练模型的话,是否有必要换一个更大的词表呢?6400长度的词表,对中文+英文来讲,是否比较小?

jingyaogong commented 1 week ago

谢谢关注! 目前几乎没有,训练数据里没什么英文

谢谢回复! 如果我要加入英文数据重新训练模型的话,是否有必要换一个更大的词表呢?6400长度的词表,对中文+英文来讲,是否比较小?

不需要,首先 0-255 的字节范围理论上可以编码和解码任意字符。这个范围涵盖了所有可能的单字节字符,包括 ASCII 字符和其他扩展字符集中的字符,例如用一个只有259长度的tokenizer,编解码一串字符试试,这里直接选择奥巴马就职演讲(中文翻译+英文): image 259长度词表都不会有问题,可以肯定的是,不会出功能性的问题

问题体现在效率,比如原本 "human" 可以encode变成1个整型数字 如果词表太短,就会encode成5个整型数字(词表中没有这个单词,所以把每个字母都拆开独立encode) 词表足够长,一个短语乃至句子都可以encode变成1个整型数字,效率更高

暂时无需关注效率,因为现在minimind_tokenizer虽然是6400长度,但是测试起来可以保证大部分encode是单词级别,或者中文的词语级别,而极小概率会拆成字母或者字节。 增加词表数量带来的 (单词级别->词组级别) 的效率收益,也同时直接增加了模型的"分类负担"和参数,性价比不高。

chongkuiqi commented 1 week ago

谢谢关注! 目前几乎没有,训练数据里没什么英文

谢谢回复! 如果我要加入英文数据重新训练模型的话,是否有必要换一个更大的词表呢?6400长度的词表,对中文+英文来讲,是否比较小?

不需要,首先 0-255 的字节范围理论上可以编码和解码任意字符。这个范围涵盖了所有可能的单字节字符,包括 ASCII 字符和其他扩展字符集中的字符,例如用一个只有259长度的tokenizer,编解码一串字符试试,这里直接选择奥巴马就职演讲(中文翻译+英文): image 259长度词表都不会有问题,可以肯定的是,不会出功能性的问题

问题体现在效率,比如原本 "human" 可以encode变成1个整型数字 如果词表太短,就会encode成5个整型数字(词表中没有这个单词,所以把每个字母都拆开独立encode) 词表足够长,一个短语乃至句子都可以encode变成1个整型数字,效率更高

暂时无需关注效率,因为现在minimind_tokenizer虽然是6400长度,但是测试起来可以保证大部分encode是单词级别,或者中文的词语级别,而极小概率会拆成字母或者字节。 增加词表数量带来的 (单词级别->词组级别) 的效率收益,也同时直接增加了模型的"分类负担"和参数,性价比不高。

明白了,谢谢!