logo
1
0
Login

CNB Sglang


介绍

本项目的目标是构建一个开箱即用的 SgLang 环境,并且支持多种后端模型,包括: - gemma3 - qwen2.5-vl - qwen3 - qwen3-coder

安装

CNB 环境中如何平衡以下问题呢? - 仓库大小 - 云原生开发环境启动时间 - Docker 产物大小 - SGLang 启动时间/模型加载时间

1. 仓库大小

我们应该构建一个单纯的 Runtime 环境,分离模型和运行时配置,确保仓库大小不会太大

2. 云原生开发环境启动时间

云原生开发的原理本质上就是: 1. 分配容器 2. 构建/拉取镜像 3. 拉取仓库 4. 启动容器

其中,步骤 2 和 步骤 3 都有缓存,主要的时间开销来自于冷启动。但是也有优化的技巧,例如: - 避免使用 vscode.docker.build 命令启动容器,这样的容器仅会缓存一周,且无法命中他人的缓存;使用构建好的上传镜像可以避免这个问题。 - 仓库大小不宜过大,如果将多个模型权重同时包含在仓库中, 即使我们只需要一个模型,也需要下载整个仓库。

因此,本仓库使用预先构建的镜像 docker.cnb.cool/maikebuke/runtime/gpu:latest 作为运行环境; 同时,代码仓库中不包含任何模型文件,而是每次启动都从 ai-models 中拉取。

经过测试,首次命中缓存的速度大概是 500 mb/s; 而拉取模型的速度也大致是 420 mb/s。在仅使用部分模型的情况下,速度优势很明显。

3. Docker 产物大小

使用预先构建的 Docker 镜像,完全不占用自己组织的对象存储容量;

4. SGLang 启动时间

手动下载,大概 420 mb/s 。 传统的 git 下载的 Checkout 速度很慢,使用 aria2 手动下载 git-lfs 文件加速。

大概 3 分钟可以准备好一个模型

使用方法

# 1. 安装 SGLang 的环境 (会自动运行) ./scripts/sglang.sh install # 2. 下载模型 (手动下载一个) # gemma3 qwen2.5-vl qwen3 qwen3-coder ./scripts/download-model.sh gemma3 # 3. 启动模型 API 服务器 ./scripts/sglang.sh qwen2.5-vl

About

No description, topics, or website provided.
Language
Shell40.3%
Python35.9%
Dockerfile23.9%