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

加速框架学习

src/rocket/runners.py代码解读

这份文档用于解释 Rocket 框架里最核心的运行器文件:

Rocket/src/rocket/runners.py

这个文件的职责不是读取数据集、计算指标或写结果文件,而是把同一批 prompt 交给不同推理后端执行,并把 HF、vLLM、SGLang 的输出统一成同一种格式,方便上层 evaluator 做公平对比。

1. 文件定位

runners.py是 Rocket 的“推理后端适配层”。它向上对接evaluator.py,向下调用具体推理引擎:

evaluator.py -> build_backend(config) -> HfBackend -> VllmTextBackend -> SglangTextBackend -> backend.load() -> backend.generate(...) -> backend.runtime_metadata() -> backend.shutdown()

因此,runners.py解决的是一个工程问题:不同推理框架的参数、加载方式、输出格式都不一样,但实验表格需要同一套指标。这个文件把这些差异包起来,让上层只关心“输入 prompt、得到文本和 token 数”。

2. 核心数据结构

2.1Generation

@dataclass(slots=True)classGeneration:text:strgenerated_tokens:int

这是所有后端统一返回的单条生成结果。

  • text:模型生成的文本。
  • generated_tokens:本次生成的 token 数,用于计算吞吐。

HF、vLLM、SGLang 原生返回结构都不同:

  • HF 返回output_idstensor。
  • vLLM 返回 request output 对象。
  • SGLang 返回 dict/list/string 等不同版本格式。

Rocket 最终都转换成Generation,这样 evaluator 不需要理解每个框架的内部结构。

2.2BackendConfig

@dataclass(slots=True)classBackendConfig:model_path:strmethod:MethodSpec batch_size:intmax_model_len:intmax_new_tokens:inttemperature:floattop_p:floatseed:intdtype:strmax_num_batched_tokens:intgpu_memory_utilization:floatsglang_mem_fraction_static:floatinput_mode:str="auto"torch_compile_cache_size_limit:int=16torch_compile_mode:str="reduce-overhead"

这是所有后端共享的运行配置。

这里的设计重点是“变量统一”:同一个实验方法用同一批基础参数,比如模型路径、最大生成长度、batch size、采样温度、top-p 等。后端内部再把这些参数翻译成自己框架能理解的形式。

几个关键字段:

  • method:来自methods.pyMethodSpec,决定使用 HF/vLLM/SGLang、是否开 Rocket bucket、是否开 n-gram。
  • max_model_len:模型总上下文长度上限。
  • max_new_tokens:最大生成 token 数。
  • max_num_batched_tokens:vLLM/SGLang 的 chunked prefill 相关参数。
  • gpu_memory_utilization:vLLM 预留显存比例。
  • sglang_mem_fraction_static:SGLang 静态显存比例。
  • input_modeauto/text/vision,用于 HF 路径区分纯文本模型和视觉语言模型。
  • torch_compile_cache_size_limit:HF + Rocket 使用torch.compile时的图缓存上限。

3. 后端工厂函数

defbuild_backend(config:BackendConfig):ifconfig.method.engine=="hf":returnHfBackend(config)ifconfig.method.engine=="vllm":returnVllmTextBackend(config)ifconfig.method.engine=="sglang":returnSglangTextBackend(config)

这个函数根据method.engine创建具体后端。

例如:

hf_sdpa -> HfBackend hf_rocket -> HfBackend vllm_fa -> VllmTextBackend vllm_rocket_flash -> VllmTextBackend sglang_flashinfer -> SglangTextBackend

注意:Rocket 不做“自动选择最快后端”的路由。这里的每个 method 都是固定后端、固定配置,用于公平实验对比。

4. HF 运行时兼容补丁

函数:

_patch_hf_runtime_for_installed_packages(attn_implementation)

这个函数只服务 HF 后端,目的是让当前环境里的 Transformers 能正常加载模型。

它不安装依赖,不卸载依赖,也不修改外部包文件,只在当前 Python 进程里做运行时兼容。

4.1 为什么需要 patchtorchao

当前环境里transformers 5.8.1可能会尝试导入 torchao quantizer。问题是安装的 torchao 版本依赖更高版本 PyTorch 里的:

torch.utils._pytree.register_consta
http://www.jsqmd.com/news/1184821/

相关文章:

  • 手写ROC与P-R曲线:从混淆矩阵到阈值滑动的底层实现
  • 我用AI Agent从零搭了一个财报分析工具,拆给你看全过程
  • 南京积家回收价格查询与靠谱回收平台实测排行(2026年7月最新) - 嘉价奢侈品回收平台
  • 2026上海大模型应用开发选型指南:技术路径与落地约束解析
  • ShaderForge可视化着色器编辑:从节点化工作流到实战效果实现
  • 线性变换与基变换的本质区别:从PCA到SVD的工程实践解析
  • 幻兽帕鲁1.0正式版Mod整合包:功能详解与安装指南
  • 2026年7月最新唐山百达翡丽官方售后热线及客户服务网点地址 - 百达翡丽官方售后中心
  • TK1开发板时间管理:时区、RTC与NTP四层架构详解
  • ROS2 turtlesim+rqt:机器人仿真开发的第一公里
  • 5.10.4 动态位置编码生成器(PEG):让ViT灵活适应任意输入尺寸
  • Python循环底层原理与生产级避坑指南
  • 一、怎么学习C语言
  • 2026年7月哈尔滨运输包装箱/定制包装箱厂家推荐盘点_哈尔滨英明新型包装制品有限公司 - 行业平台推荐
  • TEL 2L81-050135-V2 通信模块
  • 还在为论文开题报告头秃?这5个AI论文网站让你效率翻倍!
  • Beal猜想实操指南:用Python验证百万美元数学难题
  • 基于大语言模型的合同智能审核系统设计与实现
  • LLaMA-2中文适配实战:从词表扩展到指令微调
  • Rocky Linux 9 国内镜像源配置与网络优化实战
  • NextChat:跨平台免登录的本地化AI对话框架
  • 遗传算法Python实战:从原理到100皇后可运行代码
  • FFmpeg字幕合成全解析:从软封装到硬编码的实战指南
  • ROS2五大核心概念实操解析:Node/Topic/Service/Action/Lifecycle
  • 四川省 CPPM 和 SCMP 报考新选择(众智商学院)联系方式 - 众智商学院cppm官方
  • 2022年五大主流AI编程框架选型指南:PyTorch、TensorFlow、JAX、Scikit-learn与FastAI实战解析
  • Grok 4.5:AI模型政治中立性的技术突破与实践指南
  • Python代理人驱动模型:构建自动化养成系统的核心技术
  • 【游戏逆向】FPS游戏自瞄算法:从内存坐标到屏幕准星的数学推导与实践
  • AIGC内容检测与降AI率实战指南