目录
1 概述
浪潮信息KOS是浪潮信息基于Linux Kernel、OpenAnolis等开源技术自主研发的一款服务器操作系统,支持x86、ARM等主流架构处理器,性能和稳定性居于行业领先地位,具备成熟的 CentOS 迁移和替换能力,可满足云计算、大数据、分布式存储、人工智能、边缘计算等应用场景需求。详细介绍见官网链接https://www.ieisystem.com/kos/product-kos-xq.thtml?id=12126
vLLM是一种用于大规模语言模型(LLM)推理的框架,旨在提高模型的吞吐量和降低延迟。vLLM通过优化内存管理和调度策略,显著提升了模型在高并发场景下的性能。vLLM利用了一种名为PagedAttention的注意力机制,该机制借鉴了虚拟内存和分页技术,以减少缓存内存(KV Cache)的浪费,并允许在请求之间灵活共享KV缓存。这种设计使得vLLM在保持与现有系统相同延迟水平的情况下,能够将吞吐量提高2到4倍。官方网址:https://www.vllm.ai
2 环境准备
操作系统版本:KOS 5.8 sp2u1(5.10.134-17.2.2.kos5.x86_64)
测试架构:x86_64,96核1TB物理机
显卡:NVIDIA Tesla V100s * 2
3 部署安装
3.1 安装docker
执行yum install docker –y 安装docker服务
执行systemctl start docker启动docker服务
3.2 下载vllm镜像
执行 docker pull vllm/vllm-openai:latest
可能会遇到下载失败或者速度较慢的情况,推荐使用国内源下载,例如:
docker pull docker.1ms.run/vllm/vllm-openai:latest
3.3 下载deepseek模型到本地服务器
国内推荐从HF-Mirror:https://hf-mirror.com上下载deepseek模型:
将下载好的模型拷贝到服务器空间较大的磁盘目录,推荐放到固态硬盘上,可以提高模型加载速度,例如:
3.4 运行vllm容器
创建容器:
docker run --name ds-vllm-test --gpus all -ti --privileged -v /root/:/workspace -v /data/:/data --ipc=host -p 8090:8090 --security-opt seccomp=unconfined --entrypoint /bin/sh docker.1ms.run/vllm/vllm-openai:latest
其中:
参数 | 作用 | 说明 |
---|---|---|
--name ds-vllm-test | 容器命名 | 指定容器名称为 ds-vllm-test,便于后续管理(如 docker stop ds-vllm-test)。 |
--gpus all | GPU支持 | 允许容器访问宿主机所有GPU |
-ti | 分配伪终端并交互式运行 | -t 分配终端,-i 保持交互 |
--privileged | 特权模式 | 赋予容器几乎与宿主机相同的权限(可访问所有设备,慎用)。适合需要深度系统控制的场景。 |
-v /root/:/workspace | 挂载卷 | 将宿主机的 /root/ 目录挂载到容器的 /workspace,实现文件共享。 |
-v /data/:/data | 挂载卷 | 将宿主机的 /data/ 目录挂载到容器的 /data。 |
--ipc=host | IPC命名空间共享 | 容器与宿主机共享进程间通信(IPC)命名空间,常用于多进程高性能应用(如共享内存)。 |
-p 8090:8090 | 端口映射 | 将容器的 8090 端口映射到宿主机的 8090 端口,允许外部访问容器服务。 |
--security-opt seccomp=unconfined | 禁用安全限制 | 关闭容器的默认安全策略(seccomp),提升容器权限(可能降低安全性)。 |
--entrypoint /bin/sh | 覆盖入口点 | 将容器默认启动命令替换为 /bin/sh,直接进入交互式Shell(而非镜像定义的默认命令)。 |
docker.1ms.run/vllm/vllm-openai:latest | 镜像地址 | 指定使用的容器镜像 |
输入exit退出交互页面,然后执行docker start ds-vllm-test 启动容器:
进入容器:
docker exec -it ds-vllm-test bash
3.5 运行deepseek推理服务
执行命令:
vllm serve "/data/ssdmodels/DeepSeek-R1-Distill-Llama-8B" --max-model-len 4096 --tensor-parallel-size 2 --port 8090 --dtype half --served-model-name DeepSeek-R1-Distill-Llama-8B
其中:
参数 | 作用 | 深度学习场景下的关键意义 | 推荐值/选项 |
---|---|---|---|
/data/ssdmodels/DeepSeek-R1-Distill-Llama-8B | 模型路径 | 支持HuggingFace模型ID(如facebook/opt-1.3b)或本地路径(需为绝对路径)。 | 必填 |
--max-model-len 4096 | 最大序列长度 | 控制模型处理的上下文大小(token数),直接影响显存占用。 | 需根据模型训练长度和GPU显存调整(如7B模型通常设2048-4096) |
--tensor-parallel-size 2 | 张量并行GPU数 | 将模型参数拆分到多张GPU(如2卡并行推理8B模型)。 | 必须≤可用GPU数,8B模型建议2-4卡 |
--port 8090 | 服务监听端口 | 指定API服务的HTTP端口(默认8000),需与Docker映射端口一致。 | 避免使用知名端口(如80/443) |
--dtype half | 计算数据类型 | half表示FP16精度(省显存),float为FP32(更精确但显存翻倍)。 | 大多数GPU推荐half(A100/H100支持bfloat16) |
--served-model-name DeepSeek-R1-Distill-Llama-8B | 服务暴露的模型名称 | 客户端通过此名称访问模型(如API路径/v1/models/DeepSeek-R1-Distill-Llama-8B)。 | 建议与模型实际名称一致 |
显示上图所示表示推理服务已启动成功。
3.6 访问推理服务
另起一个shell窗口,执行命令:
curl http://localhost:8090/v1/completions \ -H "Content-Type: application/json" \ -d '{ "model": "DeepSeek-R1-Distill-Llama-8B", "prompt": "介绍下deepseek", "max_tokens": 100, "temperature": 0 }' |
---|