部署sglang(预设你已经有cuda和torch的docker了)
docker run \
--gpus all \
--name xxxxxxx \
-v $HOME/model-cache:/root/model_hub \
-v $HOME/sglang-dev:/root/sglang \
-e TRANSFORMERS_CACHE=/root/model_hub \
-e HF_HOME=/root/model_hub \
-e HF_TOKEN=xxxxx \ #HF的个人token
-e http_proxy= \
-e https_proxy= \
--shm-size=16g \
--ulimit memlock=-1 \
-td \
--network host \
--entrypoint /bin/bash \
你对应要拉取的docker 我这里是torch2.5-cuda12.1-ubuntu22.04
启动成功有一串hash字符
https://docs.sglang.com.cn/start/install.html 参考官网
docker exec -it xxxxx /bin/bash
cd /root
git clone -b v0.4.6.post4 https://github.com/sgl-project/sglang.git sglang
cd sglang
pip install --upgrade pip
pip install -e "python[all]" #这个要巨久 感觉一个小时?你可以另起终端htop看实时,也可以prep相关查看
启动SGlang
放在容器里执行(建议用 tmux/nohup 保留日志)。
# 可选:方便本地缓存 本人没用
# 在挂docker的时候我就把这个映射到本地了 以防容器误删 数据丢失
export HF_HOME=/root/model_hub
export TRANSFORMERS_CACHE=/root/model_hub
# 启动(端口 30000,避免和 vLLM 的 8000 冲突)
python -m sglang.launch_server \
--model-path /root/model_hub/Qwen__Qwen3-8B \ #这是我模型参数的地址 你也可以根据自己的选
--dtype bfloat16 \
--tp 1 \
--port 30000 #我这个是为了和别的port错开 一般默认好像是8000
启动成功但sglang有个自身warm的阶段,报错了,可能是因为代理的问题
想让容器外访问,当前是
--network host
,直接 127.0.0.1:30000 即可;否则加--host 0.0.0.0
。其它高级参数(最大上下文、批量等)在 SGLang 的 flag 命名可能与 vLLM 不同。建议先用最小启动,性能参数逐步加(避免不认识的 flag 报错)。
解决:对本地回环禁用代理
在容器里用下面任一方法重启 SGLang:
解决:对本地回环禁用代理
在容器里用下面任一方法重启 SGLang:
方法 A(推荐):设置 NO_PROXY
# 在容器里
export NO_PROXY="127.0.0.1,localhost,::1"
export no_proxy="$NO_PROXY"
python -m sglang.launch_server \
--model-path /root/model_hub/Qwen__Qwen3-8B \
--dtype bfloat16 \
--tp 1 \
--port 30000
方法 B:仅对这个进程“临时取消”代理
env -u http_proxy -u https_proxy \
python -m sglang.launch_server \
--model-path /root/model_hub/Qwen__Qwen3-8B \
--dtype bfloat16 \
--tp 1 \
--port 30000
说明:你仍然可以保留 HF_TOKEN 和代理用于 下载模型;只要把 NO_PROXY 配好,本地 127.0.0.1 的健康检查与暖机会绕过代理。