当前位置: 首页 > news >正文

tokenspeed:用一串假 token,看懂 LLM 的“快“和“慢“

tokenspeed:用一串假 token,看懂 LLM 的"快"和"慢"

一个纯 Python 的终端小玩具,用假 token 模拟 LLM 的输出速度。没有实际模型,没有 API 调用,只是让你看看 30 tok/s 到底有多快、800 tok/s 又有多快。


这工具是干什么的

每个 LLM 基准测试都在报吞吐量:“M3 上 47 tok/s”、“4090 上 180 tok/s”、“Groq 上 500 tok/s”。但这些数字除非你亲眼见过 token 以这个速度流出来,否则很难产生体感。

tokenspeed做的事很简单:在终端里以你设定的速度流出一串假 token,让你看看那些数字实际看起来是什么样。

三种模式:

  • code— 带语法高亮的伪代码(Python / Rust / JS),模拟看 LLM 写代码的场景
  • text— Wikipedia 散文,模拟聊天/回答场景
  • think— 暗淡斜体的推理句子和代码交替出现,模拟推理模型"边想边说"

用法:

python3 tokenspeed.py# 默认 30 tok/s,交互式选模式python3 tokenspeed.py120# 120 tok/s,交互式选模式python3 tokenspeed.py--modecode# 跳过选模式python3 tokenspeed.py120--modethink# 组合参数

无任何依赖——只要 Python 3 和一个真正的终端(不是 IDE 内嵌的)。


核心洞察:数字是一样的,体感完全不一样

这个工具最有价值的地方,不是帮你测速度,而是帮你建立对速度的直觉

作者给出的建议是这样试:

  1. 默认30tok/s,读一读
  2. 1(5 tok/s)——树莓派级本地模型
  3. 5(60 tok/s)——托管 Claude 或 GPT
  4. 7(200 tok/s)——Groq
  5. 9(800 tok/s)——Cerebras,瓶颈变成你的眼球

然后在同一个速率下,切换--mode code--mode text

差距很明显,而且是有意设计的。

原因在于 token 密度。

30 tok/s 的英文散文,每秒大约传递 23 个单词,信息密度高,你读得过来。30 tok/s 的代码,每秒可能只传递 10-15 个字符,因为标识符和关键字经常被 BPE tokenizer 拆成多块——processUserInput可能被拆成process+User+Inputcalculate_score被拆成calculate+_score

这意味着相同 tok/s 下,代码落地到屏幕上的可见内容远少于自然语言。基准测试的数字没有错,但体感差异非常大,取决于你在看什么类型的输出。


控制

按键作用
+/-按 ×1.25 微调速率
1-9跳转预设(5/10/20/30/60/100/200/400/800 tok/s)
空格暂停/继续
q退出

这个预设的设计也很讲究——不是均匀分布,而是按数量级分布,从 5 到 800 全覆盖。因为不同部署方案的速度差距本质上是数量级的。


"Token"到底是什么

工具用近似 BPE(Byte-Pair Encoding)的方式模拟了常见 tokenizer 的行为,但不是精确复现任何一个具体 tokenizer(tiktoken、Claude、或其他厂商的 tokenizer 之间本身就存在分歧)。

大致规律:

  • 短单词往往是一个 token
  • 较长的标识符经常被拆成多个 chunk
  • 标点和运算符通常也算 token

英文散文平均约 1.3 tokens/word,30 tok/s ≈ 23 words/s。这个换算关系是那串预设数字背后真正的意义。


价值和局限

价值

  • 建立速度直觉:这是最核心的价值。看数字和看实际流出的区别,就像看菜单和吃菜的区别。
  • 零门槛:纯 Python,零依赖,一行命令就能跑。
  • 三种精心设计的模式:覆盖了 LLM 输出的主要场景,特别是 code 和 think 模式,针对的都是前沿使用场景。
  • 信息密度差异的显式暴露:代码 vs 文本的 token 密度差异被设计成核心功能,而不是一个附带发现。

局限

  • 模拟而非真实:它生成的是伪代码和固定文本,不是真正的 LLM 输出。真实模型输出时会有停顿、思考、修正,这种"不均匀性"没有被模拟。
  • 终端依赖:在 IDE 内嵌终端或受限环境中效果不好。
  • 没有网络版本的可比展示:虽然有一个index.html文件,但核心体验在终端。
  • 单机/单 session:不能模拟并发或多轮对话的累积效应。
  • 没有提供真实的 tokenizer:无法精确复现某个具体模型的 token 开销,对于需要精确计费评估的场景帮助有限。

这个工具的存在说明了什么

tokenspeed很小——一个 Python 文件,两百多行代码,189 个 stars(对于一个纯玩具来说已经不少了)。

但它指向了一个真实的问题:LLM 行业在"快"的定义上缺乏统一标准。

tok/s 是一个技术指标,不是用户体验指标。同样的 tok/s,不同内容类型、不同终端、不同阅读速度下,体感可以差几倍。而绝大多数基准测试只报一个数字,没有人去解释"这个速度下用户实际看到的是什么"。

这个工具有点像一个"翻译器"——把 tok/s 翻译成人类可感的体验。虽然它没有解决标准化问题,但至少让更多的人意识到了这个问题的存在。


Sources:

  • MikeVeerman/tokenspeed - GitHub
  • tokenspeed - index.html(Web 版)
http://www.jsqmd.com/news/1204850/

相关文章:

  • Fabric 是一个用于简化 SSH 远程服务器自动化运维的 Python 库
  • Transformer 自回归生成机制笔记
  • Linux包管理工具YUM核心机制与优化实践
  • Windows下Claude Code BASE URL配置全指南
  • 电池内阻测试方法对比:AC毫欧法 vs DC法 vs EIS,产线到底该用哪个?
  • 2026年国内专业的工程机械水性漆厂家推荐 - 品牌排行榜
  • 十大开源AI Agent框架深度解析:从AutoGPT到AutoGen的选型与实战指南
  • Spring Boot集成AES与RSA加密:构建生产级安全组件化方案
  • 3分钟极速汉化:Android Studio中文语言包终极安装指南
  • LoongSuite AI采集套件:跨语言AI系统可观测性实战
  • 企业微信自建应用部署与云端调试全攻略:HTTPS、Nginx与JupyterLab实践
  • RISC-V开发板Start_DSC28034PNT硬件解析与开发实践
  • 报表别再靠Excel截图传来传去:用Metabase做一个实时数据看板
  • 奇幻纯音如何实现极速降噪?深度解析沉浸式音频的专注力提升原理
  • WSL2:Windows开发者的Linux开发环境终极指南
  • 电源振铃与过热问题的诊断与解决方案
  • Linux运维必备命令与实战技巧全解析
  • Livehouse现场直拍全流程:从设备准备到后期处理实战指南
  • 从模糊到清晰:Upscayl如何用AI技术重塑你的图像世界
  • C++ STL容器深度解析:vector、deque、list性能对比与选型指南
  • AR Foundation 3D物体追踪实战:从原理到iOS应用开发全解析
  • Zed 的搜索体验进化:从“光标猜词“到“记忆优先“
  • 大模型量化技术:AWQ原理与实战部署指南
  • CentOS Stream9下BIND9 DNS服务器搭建与优化指南
  • FPGA实现GT高速收发器+Reed-Solomon编解码数据通信架构,提供7套工程源码和技术支持
  • 飞腾派4G版开发指南:硬件解析与OpenKylin系统实战
  • 具身智能工程化跃迁:从能动到敢用的三重生死线
  • C++11异步线程池:从生产者-消费者模型到std::future的完整实现
  • 企业 AI 成本治理实战:RAG、Agent、模型路由与上线前检查清单
  • MemGen: Weaving Generative Latent Memory for Self-Evolving Agents——为自进化代理编织生成式潜在记忆