当前位置: 首页 > news >正文

【LLM】VLLM:容器运行 ModelScope 模型

本文介绍如何通过 Docker 快速运行 VLLM 并加载 ModelScope 模型,适合需要 GPU 加速推理和大模型部署的场景。

一、环境准备

1. 安装 Docker

建议使用官方安装方式:

  • Docker 官方安装指南
  • Docker Compose 安装文档

一键安装脚本(不推荐,需自行判断风险):

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

2. 安装 NVIDIA Container Toolkit

本文使用的 VLLM 需要使用 NVIDIA GPU 推理,需要配置 NVIDIA Container Toolkit

  • 官方安装指南:
    https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html

验证 GPU 是否可见:

docker run --gpus all nvidia/cuda:11.0-base nvidia-smi

3. 拉取 VLLM Docker 镜像

如果拉取速度慢,建议开启科学上网或使用国内镜像源。

sudo docker pull vllm/vllm-openai:v0.10.1.1
  • 当前版本:v0.10.1.1(截至 2025-09-12 最新官方版本)
  • 显卡驱动要求:CUDA 12.8 或以上

请确保宿主机 NVIDIA 驱动版本满足要求,否则容器内无法识别 GPU。


二、测试与运行

使用以下命令启动 vLLM 推理服务

sudo docker run --gpus all \--env "VLLM_USE_MODELSCOPE=true" \-v ~/.cache/modelscope:/root/.cache/modelscope \-p 8000:8000 \--ipc=host \vllm/vllm-openai:latest \--model Qwen/Qwen3-0.6B \--gpu-memory-utilization 0.7 \--max-model-len 2048
参数说明
--gpus all启用宿主机所有 GPU 设备
--env "VLLM_USE_MODELSCOPE=true"使用 ModelScope 下载模型,国内网络更稳定
-v ~/.cache/modelscope:/root/.cache/modelscope挂载本地缓存目录,避免重复下载模型文件
-p 8000:8000将容器 8000 端口映射到宿主机 8000 端口
--ipc=host共享宿主机的 IPC 空间,减少显存碎片问题
vllm/vllm-openai:latestvLLM 官方最新镜像
--model Qwen/Qwen3-0.6B指定要加载的模型
--gpu-memory-utilization 0.7限制单 GPU 最大显存占用比例,避免 OOM
--max-model-len 2048设置最大上下文长度(tokens)

启动成功后,服务将监听在 http://127.0.0.1:8000,并且完全兼容 OpenAI API 规范。


2. 测试 API

使用 curl 发送测试请求,确认服务是否正常工作。

curl http://127.0.0.1:8000/v1/completions \-H "Content-Type: application/json" \-d '{"model": "Qwen/Qwen3-0.6B","prompt": "请用一句话解释人工智能。","max_tokens": 100}'

示例返回结果:

{"id": "cmpl-8328abddc08f4c7c8500a407d92b793a","object": "text_completion","created": 1757669109,"model": "Qwen/Qwen3-0.6B","choices": [{"index": 0,"text": " 人工智能是通过计算机系统模拟人类智能的理论、方法、应用技术或其组合体。\n\n人工智能是通过计算机系统模拟人类智能的理论、方法、应用技术或其组合体。这句话是否正确?如果正确,那么这句话中的“计算机系统”是否正确?\n\n这句话是否正确?如果正确,那么这句话中的“计算机系统”是否正确?\n\n这句话是否正确?如果正确,那么这句话中的“计算机系统”是否正确?\n\n这句话是否正确?如果正确,那么","logprobs": null,"finish_reason": "length","stop_reason": null,"prompt_logprobs": null}],"service_tier": null,"system_fingerprint": null,"usage": {"prompt_tokens": 6,"total_tokens": 106,"completion_tokens": 100,"prompt_tokens_details": null},"kv_transfer_params": null
}

三、VLLM 的常用参数

参考文档:VLLM Engine Arguments

下面介绍 VLLM 在日常部署和使用中最常用、最关键的参数。

参数作用示例
--model指定模型名称或本地路径--model Qwen/Qwen2-7B-Instruct
--gpu-memory-utilization控制 GPU 显存利用率(0.0-1.0)--gpu-memory-utilization 0.7
--max-model-len最大上下文长度,支持 k/K/m/M 格式--max-model-len 256K
--api-key设置 API 访问密钥,提升安全性--api-key sk-123456
--served-model-name为 API 调用定义自定义模型名--served-model-name my-qwen

四、使用 Docker Compose 组织

在实际部署中,手动输入长命令启动容器既麻烦又不利于维护,建议使用 Docker Compose 来管理 vLLM 服务。

通过 docker-compose.yml 文件,可以更直观地定义模型服务、端口映射、本地缓存挂载等配置。


1. 创建目录结构

建议创建一个独立目录,用于存放配置文件和缓存:

mkdir -p ~/vllm
cd ~/vllm
mkdir -p modelscope_cache

目录结构示例:

~/vllm/
│
├── docker-compose.yml      # vLLM 服务配置文件
└── modelscope_cache/       # 本地缓存目录

2. 编写 docker-compose.yml

~/vllm-compose 目录下新建 docker-compose.yml 文件:

services:vllm:image: vllm/vllm-openai:latest # vLLM 官方提供的 OpenAI 接口兼容镜像container_name: vllm_service # 容器名称restart: unless-stopped # 自动重启策略:除非手动停止,否则容器会自动重启ports:- "8000:8000" # 将容器的 8000 端口映射到宿主机 8000 端口environment:- VLLM_USE_MODELSCOPE=true # 使用 ModelScope 作为模型下载源- VLLM_ALLOW_LONG_MAX_MODEL_LEN=1 # 模型文件缓存挂载到宿主机,避免重复下载volumes:- ./modelscope_cache:/root/.cache/modelscope  # 模型缓存目录deploy:resources:reservations:devices:- driver: nvidiadevice_ids: ["0"]  # 精确指定第 0 号 GPUcapabilities: [gpu]command:- "--model"- "Qwen/Qwen3-0.6B"            # 模型名称或路径- "--gpu-memory-utilization"- "0.7"                         # 每张 GPU 允许使用 70% 显存- "--max-model-len"- "2048"                        # 最大上下文长度(token 数)

3. 启动与管理服务

操作命令说明
启动服务docker compose up -d后台启动并创建容器(-d 表示 detached 模式)
停止服务docker compose down停止并移除容器、网络,但保留卷(Volume)
查看特定服务日志docker compose logs -f <service_name>跟踪指定服务的日志
查看服务状态docker compose ps列出所有服务的容器运行状态
重启特定服务docker compose restart <service_name>重启指定服务

五、总结

  • 通过 VLLM 配合 ModelScope,可以快速拉取并部署国内外大模型。
  • 使用 Docker Compose 可以方便管理服务、缓存和端口映射。
  • 生产环境建议设置 --api-key 保护接口安全,并明确 GPU 资源分配。
  • 建议挂载模型缓存目录,避免重复下载,节省带宽和启动时间。

文章转载自:

http://GqNzQA9P.bkcnq.cn
http://ahFnI9i0.bkcnq.cn
http://pUxlrIXw.bkcnq.cn
http://a2iUuoqH.bkcnq.cn
http://1sSPzHpR.bkcnq.cn
http://Y9wZZO7A.bkcnq.cn
http://A5xh6QNS.bkcnq.cn
http://yY899h6n.bkcnq.cn
http://g3JwFBoI.bkcnq.cn
http://POfvDydc.bkcnq.cn
http://ID4YWnJw.bkcnq.cn
http://id3YzXEs.bkcnq.cn
http://yUB9lVvl.bkcnq.cn
http://khGLKQCu.bkcnq.cn
http://XerAwlnM.bkcnq.cn
http://jmUs3Rhi.bkcnq.cn
http://LR0HQGZ8.bkcnq.cn
http://GgGN3zzF.bkcnq.cn
http://fc4EB9Lc.bkcnq.cn
http://12T09h6W.bkcnq.cn
http://E0YeCUFG.bkcnq.cn
http://gYos58n7.bkcnq.cn
http://8I67PHSg.bkcnq.cn
http://c2l9OpuF.bkcnq.cn
http://jqj23UCZ.bkcnq.cn
http://N9y6bFFS.bkcnq.cn
http://3Mw0zctI.bkcnq.cn
http://A1Qs9W1d.bkcnq.cn
http://U6yQgjRv.bkcnq.cn
http://OyzRhE8h.bkcnq.cn
http://www.dtcms.com/a/380649.html

相关文章:

  • HarmonyOS 应用开发深度解析:基于 Stage 模型与 ArkUI 的跨组件状态共享最佳实践
  • TOGAF——战术性调整,战略性变更
  • 【计算机 UTF-8 转换为本地编码的含义】
  • 当人工智能遇上知识检索:RAG技术的深度解析与实践探索
  • 在线商城管理系统功能清单的系统设计
  • SLAM 系统设计是如何保证前端(tracking/VO)和后端(优化/BA/图优化)如何同步实时性思路汇总思考
  • 代码随想录二刷之“动态规划”~GO
  • zynq arm全局计时器和私有定时器
  • TCP套接字的使用
  • 红日靶场(三)——个人笔记
  • Linux 进程和线程基础知识解析
  • MySQL 查询不正确身份证号的方法
  • 淘宝商品详情 API 的安全强化与生态协同创新路径
  • 全志A133 android10 secure boot 安全启动
  • 储能电站的监控运维软件推荐,降低运营成本
  • 麒麟v10系统内存不足
  • fpga图像处理
  • 使用netstat 获取各Oracle数据库实例对应应用IP地址脚本
  • QT M/V架构开发实战:QAbstractItemModel介绍
  • PHP 与 WebAssembly 的 “天然隔阂”
  • QML 的第一步
  • IP验证学习之env集成编写
  • Android8 binder源码学习分析笔记(四)——ServiceManager启动
  • fastapi搭建Ansible Playbook执行器
  • 第四阶段C#通讯开发-1:通讯基础理论,串口,通讯模式,单位转换,代码示例
  • 微信小程序——云函数【使用使用注意事项】
  • 【java】常见排序算法详解
  • HarmonyOS 应用开发深度解析:基于声明式UI的现代化状态管理实践
  • Linux 中 exec 等冷门命令的执行逻辑探究
  • Qt多语言翻译实战指南:常见陷阱与动态切换解决方案