news 2026/9/8 22:19:12

1GB 文本分词提速 3 倍:tiktoken BPE 分词器五分钟跑通

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
1GB 文本分词提速 3 倍:tiktoken BPE 分词器五分钟跑通

1GB 文本分词提速 3 倍:tiktoken BPE 分词器五分钟跑通

【免费下载链接】tiktokentiktoken is a fast BPE tokeniser for use with OpenAI's models.项目地址: https://gitcode.com/GitHub_Trending/ti/tiktoken

一 GB 文档集卡在分词这一步,终端转了四分钟没有进度条,同事那边已经跑完开始看结果了。区别只在换了一个库:tiktoken,OpenAI 为自家模型写的快速 BPE(Byte Pair Encoding)分词器,它干的就一件事——把文本转成 token,并且转得很快。

一行安装,三行跑通

pip install tiktoken装完就能用,不用先拉一堆 transformers 的依赖。

import tiktoken enc = tiktoken.get_encoding("o200k_base") print(enc.encode("hello world")) # 或者一行拿到某个模型对应的编码 enc = tiktoken.encoding_for_model("gpt-4o")

返回值是 token ID 列表,想还原回文本再跑一次enc.decode(ids)就行,往返无损。

encoding_for_model内部做的是模型名到编码名的映射:gpt-4o、gpt-4.1、o1、o3 这类走o200k_base,gpt-4、gpt-3.5-turbo 以及 embedding 系列走cl100k_base。匹配走前缀,比如模型名只要以gpt-4o-开头就能命中,OpenAI 发新版模型时通常不用急着升库。

真实数字:1GB 文本快 3-6 倍

仓库里给出的实测数据:用 GPT-2 分词器处理 1GB 文本,tiktoken 比 HuggingFace 的GPT2TokenizerFast3-6 倍(对照组是 tokenizers==0.13.2 加 transformers==4.24.0)。

原因不神秘:核心编码循环用 Rust 写,Python 侧只是薄壳;批量场景还能用encode_ordinary_batch把线程数拉上去。你要是对着大语料算 token 数,这个差距就是"跑一晚上"和"咖啡没凉就出结果"的差别。

深入一步:把自定义编码挂进 get_encoding

如果现成编码不够用、要改词表,轻量路线是先拿一个已有编码的参数,自己组装一个tiktoken.Encoding对象,增删几个 special tokens 即可。

重一点的是tiktoken_ext插件机制,让tiktoken.get_encoding("你的名字")能直接找到你的编码。做法:建一个名叫tiktoken_ext的命名空间包(注意不放__init__.py),里面放一个my_encodings.py,定义ENCODING_CONSTRUCTORS字典——键是编码名,值是无参的构造函数;setup.py里声明install_requires=["tiktoken"],然后pip install ./my_tiktoken_extension(不能用 editable 安装)。官方自带的示例看 tiktoken_ext/openai_public.py,插件的发现与加载逻辑在 tiktoken/registry.py。

落地场景:RAG 入库时加一道 token 闸门

具体一点的用法:你搭 RAG 管道,每个 chunk 送去 gpt-4o 之前要数 token 数,防止上下文超限、顺便预估 API 成本。入库环节写一行tiktoken.encoding_for_model("gpt-4o").encode(chunk),长度就是len(tokens),超了就先切再入库。

下一步:跑pip install tiktoken,再打开 tiktoken/core.py 过一遍Encoding的完整 API,五分钟就能把整条链路跑起来。

【免费下载链接】tiktokentiktoken is a fast BPE tokeniser for use with OpenAI's models.项目地址: https://gitcode.com/GitHub_Trending/ti/tiktoken

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/8 22:18:58

RTOS事件进阶:事件优先级、Slab内存池与ISR安全的工程实践

中断里发了一个事件,整个系统直接卡死在临界区里。那个周五晚上我盯着调试器看了三个小时,最后发现祸根不在中断,而在事件控制块的内存分配——我在 ISR 里调用了一个并不安全的内存分配函数。这个教训让我把"事件、优先级、内存池、ISR…

作者头像 李华
网站建设 2026/9/8 22:15:29

终端里的图形界面:Claude Code如何重塑命令行交互

第一次在终端里敲下claude命令的时候,我愣了几秒。屏幕底部弹出一条状态栏,任务列表像表格一样整齐排列,代码修改的前后差异用不同底色标了出来,工具调用的过程一行行带缩进地展开。这不是传统印象里那种"黑底白字、全靠 pri…

作者头像 李华