
AutoDL部署DeepSeek-R1-0528-Qwen3-8B全记录
一、通过Vllm部署
1.租用实例,选择镜像
2.conda创建隔离环境
2.1首先调整下默认环境路径。因默认在系统盘上,系统盘的容量有限,很快用完
1 | #把环境路径设置在数据盘 |
2.2创建隔离环境
1 | conda create -n myenv python=3.11 |
2.3初始化conda环境并激活隔离环境
1 | conda init bash |
3.安装modelscope和vllm
1 | pip install modelscope vllm |
4.下载模型,以在modelscope下载DeepSeek-R1-0528-Qwen3-8B为例:
1 | #方式一:用modelscope下载 |
关于推理引擎的缓存路径(注意事项)
在使用vllm运行启动模型的时候,指定模型的方法默认是模型的ID,而且如果不加指定的环境变量(VLLM_USE_MODELSCOPE=true
),会从huggingface上下载,并且缓存到用户的家目录下。这时如果没有科学上网环境,下载还会失败。所以,如果不从huggingface下载,需要在运行时加入VLLM_USE_MODELSCOPE=true
另外,自定义模型的缓存路径需要指定全局变量,基于此,最好在用户配置文件中直接加入以下配置:
1 | export HF_HOME=/root/autodl-tmp/hf_cache |
5.安装open-webui
1 | #创建隔离环境 |
6.vllm启动模型
1 | # 进入模型下载的models目录 |
注意事项:这里的--tensor-parallel-size 1
中的1,指的是单卡,如果要用双卡,这里需为2
--max-model-len
指的是模型的序列长度,这个值设置不当将导致启动失败,以DeepSeek-R1-0528-Qwen3-8B这个模型为例,在单卡3090的情况下,最大16K,也就是16384,如果设置为32768将启动失败!!
关于序列长度,这里补充说明一下,序列长度直接影响KV cache.以DeepSeek-R1-0528-Qwen3-8B这个模型为例,在序列长度为32K(32768)时,KV cache大约为16G,这样加上模型自身16G(fp16精度),总计需要32G。单张3090只有24G,肯定会爆显存。而如果将序列长度降至16K(16384),KV cache也减半大约为8G,加上模型自身16G,总计24G,通过vllm的优化机制,单张3090是可以支持的。
而在双卡3090的情况下,显存可以到48G。这样序列长度32K肯定是没问题的,在双卡的情况下,最多可以支持的序列长度为64K(65536),64K的KV cache为32G,加上模型自身16G,总计48G。
综上,单卡3090可支持的最大序列长度为16K(16384),双卡3090可支持的最大序列长度为64K(65536)
以上在AutoDL上亲测有效
成功启动后,将显示开启8000端口,如:
7.启动open-webui
1 | open-webui serve |
8.启用ssh隧道
因为是在远程的docker容器中运行,没有独立ip,无法访问,只能通过ssh tunel的方式,将远程端口映射到本地
1 | ssh -CNg -L 8080:127.0.0.1:8080 root@connect.nmb2.seetacloud.com -p 38241 |
11.配置open-webui
经过以上设置后,就可以在本地以http://localhost:8080的方式打开webui了,但由于open-webui默认是对接ollama的,所以需要设置,添加对外部连接的支持:
点击左下角的“管理员面板”
点击“设置”-“外部连接”
点击”+”号,添加连接
这样设置后,再点击“模型”,open-webui就可以正确对接到我们的模型了
二、通过SGLang部署
其他步骤都与vllm一样,只是需要注意以下几点:
1.创建隔离环境、安装sglang
1 | conda create -n sglang python=3.11 |
2.使用sglang启动
1 | python3 -m sglang.launch_server --model /root/autodl-tmp/models/DeepSeek-R1-0528-Qwen3-8B --trust-remote-code --tp 1 --api-key nanyuzuo.xin --served-model-name DeepSeek-R1-0528-8B |
与 vllm 一样:在命令前加
SGLANG_USE_MODELSCOPE=true
指定从 modelscope下载模型,如果不加,默认就会从huggingface下载--model
后面可以指定模型ID(会自动下载),也可以指定模型路径--tp 1
与 vllm 中的--tensor-parallel-size 1
意义相同,都指的是单卡启动完成后,不同于vllm,sglang默认会开启30000端口