跳到主要内容

存储文件分析

6.1 概述

SGLang 从持久化存储中读取模型权重,并可选择写入分层缓存数据。它不为模型权重维护自定义文件格式——而是利用 HuggingFace 生态系统(safetensors 格式)并添加了专用加载器。


6.2 模型权重文件

SafeTensors 格式(.safetensors

位置:--model-path 指定(HuggingFace 模型 ID 或本地路径)

加载链:

  1. ModelRunner.load_model() (model_runner.py:1071) — 入口点
  2. ModelRunner._load_model() (model_runner.py:101) — 创建模型架构
  3. loader.load_model() (model_runner.py:1159) — 将权重加载到模型中

模型加载器(loader.py):

加载器使用场景
DefaultModelLoaderloader.py:302标准 safetensors/PyTorch 加载
LayeredModelLoaderloader.py:712逐层加载以节省内存
QuantizedRLModelLoaderloader.py:786量化模型(GPTQ、AWQ)
GGUFModelLoaderloader.py:1974GGUF 格式模型
BitsAndBytesModelLoaderloader.py:1496bitsandbytes 量化模型
ShardedStateLoaderloader.py:1315从 PyTorch 分片状态字典加载
RemoteModelLoaderloader.py:2413从远程服务器加载
RemoteInstanceModelLoaderloader.py:2080从远程 SGLang 实例加载
DummyModelLoaderloader.py:1259测试用(无真实权重)
ModelOptModelLoaderloader.py:2594NVIDIA ModelOpt 量化模型

默认加载流程:

SafeTensors 文件格式:

[8 bytes] Header length (uint64, little-endian)
[N bytes] JSON header: {"__metadata": {...}, "tensor_name": {dtype, shape, data_offsets}}
[Padding] Alignment to 8-byte boundary
[N bytes] Raw tensor data (contiguous, mmap-able)

safetensors 格式优于 PyTorch 的 .bin 格式,原因如下:

  • 内存安全:无需 pickle 反序列化(不会执行任意代码)
  • 支持 Mmap:张量可以通过内存映射加载,无需载入 RAM
  • 快速:大型模型支持零拷贝加载

6.3 权重更新存储

动态权重更新

SGLang 支持在运行时热切换模型权重:

端点存储来源加载器
/update_weights_from_disk本地文件系统路径通过 DefaultModelLoader 重新加载
/update_weights_from_tensor内存中的张量字典直接参数拷贝
/update_weights_from_distributed远程源RemoteModelLoader
/update_weights_from_ipcIPC 共享内存直接内存拷贝

权重更新在 GPU 上就地执行,无需重新初始化模型架构,从而实现快速模型切换。


6.4 分层缓存存储(HiCache)

HiCacheFile(hicache_storage.py:303)

用途: 持久化分层缓存,可将 KV 缓存页面卸载到磁盘或远程存储。

配置:

字段类型用途
hicache_storage_backendstr/None后端类型(文件等)
hicache_write_policystr"write_through" 或 "write_back"

HiCache 存储通过二级存储层扩展了基数缓存:

  • 写穿透(Write-through):KV 缓存页面在创建时立即写入存储
  • 写回(Write-back):KV 缓存页面在从 GPU 内存中驱逐时延迟写入存储

6.5 配置文件

SGLang 在启动时读取以下配置文件:

文件位置用途
config.json模型目录HuggingFace 模型配置(架构、维度、注意力类型)
tokenizer.json / tokenizer.model模型目录分词器词表和合并规则
tokenizer_config.json模型目录分词器元数据、对话模板
generation_config.json模型目录默认生成参数
*.safetensors模型目录模型权重文件
adapter_model.safetensorsLoRA 目录LoRA 适配器权重

6.6 崩溃转储存储

当指定 --crash-dump-folder 时,SGLang 会在崩溃时写入诊断转储信息:

文件内容
scheduler_dump_*.json崩溃时的调度器状态
detokenizer_dump_*.json崩溃时的反分词器状态

6.7 总结

SGLang 不定义任何自定义持久化文件格式。它依赖 HuggingFace safetensors 格式来存储模型权重,并为各种量化方案和远程源添加了专用加载器。它唯一写入的持久化存储是可选的 HiCache(用于 KV 缓存卸载)和崩溃转储。