前言:

为什么要用VLLM呢?

Ollama非常方便快捷,适合个人快速部署使用,高并发的场景下就捉襟见肘了!

高效的企业生产环境应该使用的一般都采用 vllm、sglang 进行部署,本文是用 vLLM 部署 DeepSeek-R1模型。

vLLM 是一个开源的大型语言模型(LLM)推理和服务框架,它强调速度和易用性,能够即开即用。它支持分布式张量并行推理和服务,利用先进的技术在多个GPU上优化性能,其核心功能基于Megatron-LM的张量并行算法,允许有效模型分布。此外,vLLM 还支持在线服务的流水线并行作为测试版功能,增强了部署选项的灵活性。

VLLM 的核心和特点:

vLLM 设计为灵活易用,提供以下功能:
- 与流行的HuggingFace模型无缝集成
- 通过各种解码算法(包括并行采样和束搜索)实现高吞吐量服务
- 在分布式推理中支持张量和流水线并行
- 支持实时应用的流式输出
- 兼容NVIDIA和AMD GPU
- 提供OpenAI兼容的API服务器
- 实验性功能,如前缀缓存和多lora支持。

vLLM 还提供了实验性支持视觉语言模型(VLMs),并强调开发过程的协作性质。核心开发团队与更广泛的社区一起,为生态系统中支持的第三方模型的稳健性和多样性做出贡献。

vLLM 通常在处理并发请求方面表现优异,特别是在企业级应用中,需要高并发的场景。它利用PagedAttention技术进行细粒度的资源管理,实现显著的吞吐量改进。vLLM 的效率在于其能够高效处理多个并发请求,这使其非常适合高需求场景。

vLLM 文档:https://docs.vllm.ai/en/latest/index.html 如果要进一步可以到这里看一下文档

准备环境:

Ubuntu 20.04
环境配置:Ubuntu 20.04, Driver 525.105.17, Python 3.8, CUDA 12.0, cuDNN 8
算力类型:两卡GPU基础型 - 2*16GB+ | 16+TFlops SP | CPU - 16 核 | 内存 - 64GB

安装 Conda

使用 conda 创建 python 环境,直接贴脚本:
 

  1. wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh && chmod +x Miniconda3-latest-Linux-x86_64.sh

  2. ./Miniconda3-latest-Linux-x86_64.sh -b

  3. source /root/miniconda3/bin/activate

  4. conda init

  5. conda config --set auto_activate_base false

使用 vLLM 部署 DeepSeek-R1

使用 conda 创建 python 环境,命令如下:
 

  1. conda create -n vllm python=3.12 -y

  2. conda activate vllm


安装 vllm、modelscope,命令如下:
 

  1. pip install vllm modelscope


使用 modelscope 下载 DeepSeek-R1 模型,命令如下:
 

  1. mkdir -p /data/models && modelscope download --model 'deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B' --local_dir '/data/models/DeepSeek-R1-Distill-Qwen-1.5B'


参考:https://modelscope.cn/docs/models/download

使用 vllm 启动 deepseek 模型,命令如下:
 

  1. vllm serve "/data/models/DeepSeek-R1-Distill-Qwen-1.5B" --served-model-name "DeepSeek-R1"  --load-format "safetensors" --gpu-memory-utilization 0.8 --tensor-parallel-size 2 --dtype half --port 8000

  2. 如果遇到“Bfloat16 is only supported on GPUs with compute capability of at least 8.0. Your Tesla T4 GPU has compute capability 7.5. You can use float16 instead by explicitly setting the`dtype` flag in CLI, for example: --dtype=half.”警告,根据警告添加参数即可。

    备注:
     

  3. --tensor-parallel-size 和 GPU 数量设置一致

  4. --gpu-memory-utilization 控制使用显存的百分比

  5. --served-model-name API 中使用的模型名称

引擎参数请查询网站:https://docs.vllm.ai/en/latest/serving/engine_args.html

浏览器打开:http://ip:8000/
接口文档:http://ip:8000/docs

  1. wget https://raw.githubusercontent.com/vllm-project/vllm/refs/heads/main/benchmarks/benchmark_utils.py

  2. wget https://raw.githubusercontent.com/vllm-project/vllm/refs/heads/main/benchmarks/benchmark_throughput.py

执行命令如下:
 

  1. python benchmark_throughput.py --model "/data/models/DeepSeek-R1-Distill-Qwen-1.5B" --backend vllm --input-len 128 --output-len 512 --num-prompts 50 --seed 1100 --dtype half

 结果:Throughput: 2.43 requests/s, 1669.25 total tokens/s, 1235.01 output tokens/s

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐