OLMo3-190M-zh-v2 Tokenizer
这是 OLMo3-190M 中文 v2 预训练链路使用的自训练 tokenizer。
它的作用是统一后续几个阶段的 token 语义:
原始中文语料 -> tokenizer -> tokenized.bin -> OLMo3-190M base pretrain
-> continue pretrain
-> SFT / reasoning 数据准备
注意:token id 本身只是数字,数字的语义由 tokenizer 决定。使用本项目的 tokenized.bin、模型 config 和 checkpoint 时,必须使用这个 tokenizer,不能和其他 tokenizer 混用。
基本信息
| 项目 | 值 |
|---|---|
| 算法 | ByteLevel BPE |
| 词表大小 | 48,000 |
| normalizer | NFC |
| pre_tokenizer | Qwen regex split + ByteLevel |
| decoder | ByteLevel |
| min_frequency | 2 |
| initial_alphabet | ByteLevel alphabet |
| 主要语言 | 中文 |
| 主要用途 | OLMo3-190M 中文 v2 base/continue/SFT 链路 |
训练语料
Tokenizer 训练语料来自 base pretrain 原始语料的代表性抽样,不混入 SFT 对话数据。
| 数据源 | 作用 |
|---|---|
| Ultra-FineWeb-zh | 通用中文网页文本,提供覆盖面 |
| Fineweb-Edu-Chinese-V2.2 | 教育类中文文本,提高知识密度 |
训练 tokenizer 的抽样规模:
| 指标 | 数值 |
|---|---|
| raw shard 数 | 10 |
| 文档数 | 445,359 |
| 字符数 | 660,001,818 |
| 训练耗时 | 约 2,388 秒 |
这样做的目的不是“用满所有预训练语料”,而是从最终 base 语料中抽一个足够大、分布尽量代表性的子集,让 BPE merge 规则覆盖中文网页、说明文、教育文本和少量中英混排场景。
Special Tokens
<|endoftext|> -> 0
<|pad|> -> 1
<|bos|> -> 2
<|unk|> -> 3
<|im_start|> -> 4
<|im_end|> -> 5
<think> -> 6
</think> -> 7
| token | 用途 |
|---|---|
| `< | endoftext |
| `< | pad |
| `< | bos |
| `< | unk |
| `< | im_start |
<think> / </think> |
为后续 reasoning 数据格式预留 |
验证样例
| 输入 | token 数 |
|---|---|
人工智能是机器学习和深度学习的重要方向。 |
8 |
北京大学位于北京市海淀区。 |
5 |
Python 是一种常用的编程语言。 |
5 |
今天天气不错,我准备去图书馆学习。 |
9 |
| `< | im_start |
<think>先分析问题</think> |
4 |
所有 special token 均为单 token,AutoTokenizer 可正常加载,固定中文测试句 encode/decode 可还原。
使用方法
from transformers import AutoTokenizer
tok = AutoTokenizer.from_pretrained("Nwna/olmo3-190m-zh-v2-tokenizer")
ids = tok.encode("人工智能是机器学习的重要方向。", add_special_tokens=False)
text = tok.decode(ids, skip_special_tokens=False)
与模型配置的关系
后续 OLMo3-190M 模型 config 必须从 tokenizer 单向同步这些字段:
vocab_size = 48000
eos_token_id = 0
pad_token_id = 1
bos_token_id = 2
unk_token_id = 3
如果模型 config 的 vocab_size 仍保留其他模型的值,例如 100278,会造成 embedding/lm_head 大小和 tokenized 数据不一致。
相关数据
匹配的正式 base tokenized 数据:
Nwna/olmo3-190m-zh-v2-base-data
该数据使用本 tokenizer 编码,保存为 uint16 tokenized.bin。由于 vocab size 小于 65,535,uint16 可以覆盖所有 token id,同时比 uint32 节省一半磁盘和 IO。
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support