./run.sh
https://user-images.githubusercontent.com/8133/216773986-3d26d73a-9206-45b1-ae8f-d5d8fdb01199.mp4
https://user-images.githubusercontent.com/8133/225555655-7bf1e15c-ecdd-45da-a084-7cce1eef7b29.mp4
https://user-images.githubusercontent.com/8133/236672299-c4cf39c0-a7a0-44d8-b9be-c1b056b1df35.mp4
https://github.com/telexyz/symato/assets/8133/d536b9ef-d7c6-4529-9640-b32d84e29373
Symato 是 Symbol + Mark + Tone 的缩写。Google 翻译成越南语是 "Đồng Cảm"
这是建立大型越南语数据集语言模型的试验场所,专注于越南语音节,旨在减小参数量并突出越南语的特点。 并回答以下问题:
RWKV 是一个非常有趣的模型,它兼具 GPT 的并行训练能力以及 RNN 只需 t 时刻的隐状态即可计算 t+1 时刻系统状态的特点。因此,它比 Transformer 更节省计算和内存。这样可以加快训练速 度,简化部署,甚至在智能手机上也能良好运行。RWKV 已经在 The Pile 数据集上进行了 1B 到 14B 参数的训练,其性能与其他 transformer 模型相当。对于像 Google、Microsoft 这样的公司,他们拥有强大的计算能力和庞大的数据量,这些优势也许并不显著。但对于计算资源有限(例如配备 8 个 GPU 的高性能电脑)和数据量有限的越南语来说,RWKV 可以带来显著的差异。
当前的大型语言模型主要由英语和拉丁语系语言主导,而越南语由于数据量少且具有独特性(utf-8 编码 2-4 字节),在分词处理时处于劣势(见下图)。这会导致性能和经济成本上的损失(更多的 tokens / words ,因此句子生成速度更慢,资源消耗更多)。
上述图示说明在同一段落中,越南语的 tokens 数量是英语的 4 倍。结果是上下文长度减少到 1/4,生成数据的速度降低 4 倍,如果按 token 计费,越南语也会比英语高出 4 倍。 原因是由于 chatgpt 的 tokenization 模块进行了英语和拉丁语言优化,因此它不理解许多越南语的 unicode 编码(用 2-4 个字节编码)。具体来说,“ngôn ngữ”中的字符“ữ”被 tokenized 成 3 个字节(在上图中显示为 3 个问号 ???)。这种 tokenization 的方式对越南语非常不利,再加上训练数据量相对于英语被削弱,但 chatgpt 对越南语的结果仍然令人印象深刻(如下视频)。
https://user-images.githubusercontent.com/8133/215305323-4d776242-d8fe-497e-96f5-9c95f344b992.mp4
视频显示,由于 chatgpt 对越南语的生成速度比对英语要慢很多,它是一个一个字符甚至一个一个字节地生成越南语。而对于英语,它主要是按词生成的。尽管如此不利,但模型依然足够强大,能够存储越南语信息并找到合理的答案。这表明了语言模型的巨大力量,chatgpt 是第一个将这种力量以舒服的方式交到用户手中的应用。换句话说,chatgpt 建立了一个合理的界面,让用户能够利用大型语言模型的力量。(注意:chatGPT 对越南语音节的回答并不完全准确)。
哪种 tokenization 方式适合越南语?
Tknz 是将文本分解成信息单元以便处理的方式。Tknz 需要在以下三者之间保持平衡:1/ 词汇数量(唯一标记),2/ 标记的信息覆盖度和 3/ 模型的灵活性:
越南语音节在文本语料库中占约 80%,这是越南语言和书写的特征。使用音节作为单元是合理的。越南语大约有 16K 个有意义的音节,12K 个常用音节,当它们拆分为无标记的书写方式(sym)+ 标记(mark)和声调(tone)时,单元数量显著减少。只剩大约 2500 个 sym 和 18 个 marktone。这样,2560 个标记可以覆盖所有的 sym + marktone,还能用其他标记表示大写和小写...
3k tokens 的词汇表(约 2800 个 token 用于纯越南语编码 + 256 个 token 相当于 256 个字节来表示其他所有内容)可以高效地对包含大量越南语的语料库进行 tokenizer。以上述的 chatgpt 示例为例,它通过字符和字节对越南语进行 tokenizer 以编码 80% 的越南语语料并且仍然产生令人印象深刻的结果,那么使用 256 个字节编码其余 20% 的部分肯定也能良好工作。
完全可以在需要时扩展词汇表,但限制词汇表的小量将有助于节约参数数量并加快模型的速度。我相信这样的词汇表已经足够适用于当前的越南语资源(参见上面的解释和下面的统计数据).
约 1Gb 文本的统计,混合了来自 Facebook 评论、新闻标题、越南 opensub、维基百科、书籍、故事的数据:
=> 非越南语且为 1 个字符的标记数量占到 18%,这些标记用 256 个字节编码是非常合理的。剩余少量非越南语的 tokens 用 256 个字节编码也不太影响模型性能。