@jino_rohit:在过去的6到8个月里,我一直尝试转向机器学习系统和AI基础设施领域。以下是我最喜欢的一些…
摘要
作者分享了他们在过去6-8个月里在ML系统和AI基础设施方面的工作,包括一个轻量级的Python LLM推理引擎(tachyon),在消费级硬件上通过连续批处理和前缀缓存实现了每秒600+ tokens,还有关于CUDA/CUTE DSL和集体通信的博客文章,以及对SGLang和vLLM的贡献。
查看缓存全文
缓存时间: 2026/07/13 11:53
过去6-8个月,我一直在努力转向ML系统和AI基础设施领域。以下是我最喜欢的一些工作——
- 一个小型Python推理引擎,主要作为我实现主要推理技术的试验台,在RTX 4060 Ti上启用前缀缓存后,吞吐量约600 tokens/s - https://github.com/JINO-ROHIT/tachyon…
- 写了一篇博客,使用CuTe DSL在Ada上性能超越cuBLAS - https://jino-rohit.github.io/blogs/08_cute_dsl_matmul.html…
- 一篇关于NCCL集体通信的详细文章 - https://jino-rohit.github.io/blogs/11_collective_communication.html…
- 系列博客文章,介绍torch compile的工作原理和内部机制 - https://jino-rohit.github.io/blogs/
- 我在这里维护大部分ML系统相关工作的笔记和实验 - https://github.com/JINO-ROHIT/ml-systems-notes…
- 在SGLang和llm-compressor(vLLM)中的开源工作。
我正努力成为一名更强大的ML系统和推理工程师。接下来几个月我应该专注于提升什么?
JINO-ROHIT/tachyon
来源:https://github.com/JINO-ROHIT/tachyon
tachyon
一个可在消费级硬件上运行的LLM推理引擎。
- 每个请求拥有独立状态,你可以按请求级别选择启用或禁用KV缓存。
- 支持连续批处理:解码步骤被批处理以充分利用GPU,请求一旦从活动批次中完成即被回收,允许新请求进入批次。
- 预填充步骤使用较小的批次大小进行批处理,以避免内存溢出。
- 向量化操作以提高批处理性能。
- 前缀缓存:当存在共享系统提示或少量示例等时,节省昂贵的预填充计算。
- 仅需3行代码即可调用引擎并执行推理!
用法
- 首先下载Llama 1B的权重。
hf_hub_download(
repo_id=f"meta-llama/Llama-3.2-1B-Instruct",
filename="model.safetensors",
local_dir=f"Llama-3.2-1B-Instruct"
)
- 调用引擎。
from tachyon.engine.llm import Engine
engine = Engine("meta-llama/Llama-3.2-1B-Instruct")
print(engine.generate_text("Explain AGI")) # 单个请求
# 多个请求
outputs = engine.generate_text([
"Explain AGI",
"What is vLLM?",
"Tell me about SGLang"
])
for o in outputs:
print(o)
OpenAI兼容服务器
你可以启动服务器,然后使用openai库调用模型:
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:8000/v1",
api_key="anything"
)
resp = client.chat.completions.create(
model="llama-3.2-1b-instruct",
messages=[{"role": "user", "content": "Hello"}],
stream=False,
)
- 基准测试脚本
python3 benchmark.py
当前基准测试结果(RTX 4060 Ti 16GB)
| 实现方式 | 生成令牌数 | 耗时 | 令牌/秒 |
|---|---|---|---|
| 朴素PyTorch | 3031 | 233.171 秒 | 13 tok/s |
| 朴素PyTorch + KV缓存 | 3200 | 37.771 秒 | 84.72 tok/s |
| 静态批处理 | 31309 | 369.081 秒 | 84.83 tok/s |
| 连续批处理(bs=10) | 30600 | 111.657 秒 | 274.05 tok/s |
| 连续批处理(bs=30) | 29000 | 89.755 秒 | 323.10 tok/s |
| 连续批处理(bs=50) | 29800 | 87.442 秒 | 340.80 tok/s |
| 连续批处理(bs=50)+向量化操作与批处理预填充 | 30500 | 71.731 秒 | 425.20 tok/s |
| 前缀缓存(相似请求) | 36100 | 54.469 秒 | 662.76 toks/s |
待办事项
- 实现Llama 3系列模型。
- 将其构建为服务引擎。
- 编写基准测试脚本并检查延迟和吞吐量。
- 添加KV缓存。
- 连续批处理。
- 前缀缓存。
- 添加OpenAI兼容API服务器。
- 测试torch compile的效果(开启PR,回头再处理)。
- 分页注意力。
- 更多技术。
相似文章
@TheAhmadOsman: 自2023年以来,我的使命就是教导人们并帮助他们运行自己的AI。2026年6月将标志着…
Ahmad (@TheAhmadOsman) 宣布了一篇博客文章,涵盖 llama.cpp、vLLM 和 ExLlamaV2 等推理引擎,重点关注多 GPU 设置、张量并行以及批处理推理,以优化 AI 模型性能。
@TheAhmadOsman: 如何学习这一切?第一步:从服务引擎视角开始 - vLLM:PagedAttention、连续批处理...
一份关于学习AI推理引擎内部机制的详细指南,涵盖vLLM和SGLang等服务引擎、使用Triton和CUTLASS的低层GPU内核编程,以及一系列旨在培养实践能力的小型项目。
@ying11231:在TPU上令人印象深刻的性能。
LMSYS Org 的一篇博客文章详细介绍了使用 SGLang-JAX 在 TPU v7x 上优化 Ling-2.6-1T(一个 1 万亿参数的混合 MoE 模型),通过单个 Pallas 内核将 MoE 数据移动隐藏在计算之后,从而实现高效的推理。
@TheAhmadOsman: 为什么我关注你硬件的推理引擎/软件栈? - 2x RTX 3090s: ~14.5 tok/s → ~64 tok/s 提升到…
不同硬件上推理引擎性能对比:在2x RTX 3090s上从基线迁移到TP=2的vLLM,性能从~14.5 tok/s提升至~64 tok/s;在RTX PRO 6000上迁移到Sglang,性能从~32 tok/s提升至~110 tok/s。推荐在CUDA/多GPU场景使用vLLM/Sglang,在边缘设备使用llama.cpp。
大语言模型与本地AI硬件的推理引擎(2026版)
本文提供了一份全面的指南,针对2026年本地AI硬件上的大语言模型推理引擎,解释了如何根据硬件策略、工作负载和服务模型进行选择,并涵盖了诸如llama.cpp、MLX、ExLlamaV2/3、vLLM、SGLang、TensorRT-LLM和NVIDIA Dynamo等引擎。