symato

symato

处理越南语的开源语言模型,适用于低资源环境

该项目使用独特的音节、标记和声调分割方法,开发了高效的越南语语言模型。通过创新的token化技术和RWKV架构,解决了传统Transformer模型在处理越南语多字节编码时的性能瓶颈。项目包括小数据集实验、大规模数据处理及大型模型训练,展示了在有限计算资源下应用规模规律的潜力。模型具有广泛适应性,既节省计算资源,又保持高效的文本生成和语言理解能力。

RWKVSymato语音模型越南语大规模语言模型Github开源项目

待办事项

小数据测试(已完成)

  • 寻找适合越南语的分词方法(参见 symato
    1. 音节是越南语的主要特征,也是分析语言时合理的单位。
    2. 将音节拆分为 sym、mark 和 tone 等单位,有助于减少需要使用的单位数量。
    3. 3k 词汇表足以有效编码包含大量越南语的语料库,使用 256 字节编码其余部分也能很好地工作。
  • 阅读理解 rwkv(参见 rwkv.md简要版本
  • 重写 rwkv 推理引擎 ~200 loc in python
  • 阅读理解并简化 [训练代码](./rwkv-v4neo
  • 使用任意越南语音节数据集进行 rwkv-lm
    • 设计 symato 词汇表
    • 创建 mini 数据集 vlc.xyz (16MB)
    • 训练 symato-2816-vlc-23m
    • 运行 symato-2816-vlc-23m ./run.sh
    • 改进 Symato tknz 减少音节之间的 token 空间
    • 上下文长度增加 2 倍,损失减少一半

大数据测试(进行中)

  • 收集并处理 100G 数据: 参见 vi 项目
  • 在过滤和平衡数据后,训练与数据量相适应的模型
    • 构建 symato_16k(对比 sentencepiece 16k)
    • symato_16k 的效率(参见 技术报告
  • 发布 racoon 精简版 RWKV-v4 以用于训练语言模型
  • 在约 100G 选定数据上训练 2.5 亿参数的大型语言模型

https://user-images.githubusercontent.com/8133/216773986-3d26d73a-9206-45b1-ae8f-d5d8fdb01199.mp4

Symato 同时能做两件事,自动添加声调并生成文本

试验做聊天机器人

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"

介绍

这是建立大型越南语数据集语言模型的试验场所,专注于越南语音节,旨在减小参数量并突出越南语的特点。 并回答以下问题:

  • 是否能在有限的数据量和计算资源下重复缩放定律?(参见 cramming paper)
  • 是否能在处理小规模语言任务时重复缩放定律?(参见 santacoder)
  • 在不进行微调的情况下,有哪些不同的方法可以利用模型?
  • 有哪些不同的方法可以提高模型效率?(继续预训练,为每个任务微调,RLHL 等)
  • 需要多少数据量才能对现有模型进行针对性预训练,以适应新的语言?
  • 对于特定领域的有限数据量,应该如何进行分词?需要多少参数 / 训练多长时间才够?

为什么选择 RWKV 而不是 Transformer?

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 对越南语音节的回答并不完全准确)。

Symato

哪种 tokenization 方式适合越南语?

Tknz 是将文本分解成信息单元以便处理的方式。Tknz 需要在以下三者之间保持平衡:1/ 词汇数量(唯一标记),2/ 标记的信息覆盖度和 3/ 模型的灵活性:

  • 词汇数量大增加参数并使模型变慢。词汇数量小,则信息覆盖度低
  • 信息覆盖度低但灵活性高,反之信息覆盖度高则灵活性降低。比如,只要一个词汇表中的词可以构成,新词也可以处理。最灵活的表达方式是使用 256 个字节作为词汇表,因为任何数据都可以用一串字节表示。
  • 信息覆盖度低导致模型难以学习如何表示信息,并且处理速度变慢,因为每个标记的处理速度是一样的,但低覆盖率需要(非常)多的标记才能呈现需要提取的信息。
  • 信息覆盖度高导致更好的表达和模型能够控制的上下文(标记数量)更长。
  • BPE(字节对编码)是一种通过定义最基本的符号集(通常是 256 个字节或 unicode 字符)和最大词汇量来在词汇量大小、信息覆盖度和模型灵活性之间自动平衡的方式,然后它会找到方法将现有符号组合起来,以在不超过最大词汇量的情况下达到最高的信息覆盖度。
  • 由于标记之间有重叠,一个句子可以有多种 tokenization 方式,为了保持模型的灵活性,我们可以__用多种 tokenization 方法对其进行训练__。

越南语音节在文本语料库中占约 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 个字节编码也不太影响模型性能。

能否扩展词汇表?

完全可以通过保持 symato 的同时增加更长的 token 来扩展词汇表,例如 16k 个音节。这样一来,每个越南语句子可以有多种 tokenization 方式,我们可以对多种 tokenization 方式进行训练。当解码时,依据不同的任务我们可以优先选择不同的 tokenization 方式。例如,添加声调时使用 symato,而生成句子时优先使用长标记(音节,词...)

我不太懂你能不能解释得更清楚一点?

总结一下,symato 主要有 3 种词库及其扩展版本:

  1. symato-3k 包含 256 字节,18 种声调符号,大约 2800 个音节(不带标点的小写字母)及辅助标记。
  2. symato-16k 包含 symato-3k 词库,加上约 13k 个常见的带声调的单音节和双音节越南语单词,这些单词在训练数据中较为常见(单词和双词)。
  3. symato-32k 包含 symato-16k 词库,再加上双词和三词。
  4. symato+ 包含 symato-3k、16k、32k 及其他通过 BPE 构建以更好覆盖非音节数据的标记。

以下是为法律文本数据集构建的 symato-16k 中双词的例子。

 城市规划广告系统,确保统一、同步,为各单位、企业、组织、个人的宣传和户外广告活动提供有利的法律基础。按照规定,有力地支持政治任务的宣传工作;促进生产发展、商品流通和民生服务;同时为城市增添美丽景观,促进旅游发展。
 确定具体的土地位置、使用空间、规模、形式和内容,在主要道路上的广告牌、公告栏、临时广告等,并基于此向相关部门提交土地使用权评估,或长期租赁土地的规划,适应总体规划、地区规划和城市发展的规模;不破坏建筑景观和城市空间,满足交流、整合和发展的需求;采用先进的广告技术,符合省经济社会发展的实际情况,并符合当地居民的特点、风俗和习惯。
 2. 具体目标:
 2.1. 建立视觉宣传系统:
 2011-2015阶段:
 查看现有的视觉宣传系统,公告栏、照明广告牌和其他户外广告设施,以便根据总体规划调整和设置于城市中心(如城市、县、市镇)。
 在 Thanh Hoa 中心城市的 Le Loi 大道、新城区东部和西部及其出入口建设新的视觉宣传设施。
 在 Le Loi 大道和城市主干道上设置照明广告牌。
 在乡、村、镇的主干道上建造视觉宣传系统和公告栏。

词汇量大小如何影响模型?

以下是两个在架构上相同的模型,唯一不同的是词汇表(vocab),第一个使用 PhoBert tokenizer,词汇表大小约为 64k,第二个使用 Symato tokenizer,词汇表大小为 2816。词汇量大大增加了 emb 和 head 的参数数量。将block的主要参数缩减到三分之一,以适应 RTX3050ti 4G VRAM。尽管参数数量已翻倍!(参数量不在正确的位置上)

PhoBert tknz, vocab_size ~64k

# --------------------------------------
#   | 名称   | 类型       | 参数
# --------------------------------------
# 0 | emb    | 嵌入        | 20.6 M
# 1 | blocks | 模块列表    | 6.7 M
# 2 | ln_out | 层规范化    | 640
# 3 | head   | 线性层      | 20.6 M
# --------------------------------------
# 47.8 M    可训练参数
# 0         不可训练参数
# 47.8 M    总参数

Symato tknz, vocab_size 2816

# --------------------------------------
#   | 名称   | 类型       | 参数
# --------------------------------------
# 0 | emb    | 嵌入        | 1.4 M
# 1 | blocks | 模块列表    | 20.5 M
# 2 | ln_out | 层规范化    | 1.0 K
# 3 | head   | 线性层      | 1.4 M
# --------------------------------------
# 23.4 M    可训练参数
# 0         不可训练参数
# 23.4 M    总参数

注意:在相同数据集上训练 20 个epoch,PhoBert tknz 48m 参数损失 0.14, Symato tknz 23m 参数损失 0.04 (提升 3.5 倍)

没有足够的越南语数据来训练?

注意:使用越南语->英语->越南语或越南语->英语->德语->越南语来“扰乱”标准越南语句子。然后训练模型从扰乱的句子恢复标准句子。并将其作为从英语到越南语翻译的后处理模块。

编辑推荐精选

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

热门AI工具生产力协作转型TraeAI IDE
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

聊天机器人AI助手热门AI工具AI对话
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

热门AI工具AI办公办公工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

模型训练热门AI工具内容创作智能问答AI开发讯飞星火大模型多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

AI助手热门AI工具AI创作AI辅助写作讯飞绘文内容运营个性化文章多平台分发
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

下拉加载更多