User-Profile-Image
hankin
  • 5
  • 关于
  • 分类
    • 路由器
    • 电脑相关
    • 游戏相关
    • 未分类
    • 服务器相关
    • 数据库
  • 页面
    • 关于
  • 友链
    • 华夏网盟
Help?

Please contact us on our email for need any support

Support
  • 关于
    首页   ›   服务器相关   ›   正文
服务器相关

使用docker运行vllm ollama

2025-03-15 09:05:24
13  0 0

安装好docker,显卡驱动与cuda,拉取vllm镜像

docker pull vllm/vllm-openai
docker pull ollama/ollama

下载好huggingface上的模型。

新建一个docker-compose

ollama:

services:
  ollama:
    # 使用最新的ollama镜像
    image: ollama/ollama:latest
    container_name: ollama_service
    restart: unless-stopped
    ports:
      # 将容器的8000端口映射到主机的8888端口
      - "11434:11434"
    volumes:
      # 挂载模型目录
      - /home/Models_Cache:/root/.ollama/models

    command: >
    
    environment:
    - OLLAMA_KEEP_ALIVE=-1
    - OLLAMA_MAX_LOADED_MODELS=2
    - OLLAMA_NUM_PARALLEL=4
    - OLLAMA_MAX_QUEUE=4096
    - OLLAMA_NEW_ENGINE=true
    - OLLAMA_FLASH_ATTENTION=1
    - OLLAMA_CONTEXT_LENGTH=8192
    - OLLAMA_NUM_THREADS=24
    - OLLAMA_NUM_KV_THREADS=48
    - OLLAMA_MMAN_LOCK_PAGES=1
    - OLLAMA_ORIGINS=*
    - OLLAMA_LOAD_TIMEOUT=10m
    - OLLAMA_SCHED_SPREAD=true

    ipc: host
    deploy:
      resources:
        reservations:
          devices:
            # 使用所有可用的GPU
            - driver: nvidia
              #count: all
              device_ids: ['0', '1']
              capabilities: [gpu]

# 定义网络
networks:
  default:
    name: ollama

VLLM:

services:
vllm-openai:
# 使用最新的vllm-openai镜像
image: vllm/vllm-openai:latest
container_name: vllm_service
restart: unless-stopped
ports:
# 将容器的8000端口映射到主机的8888端口
- "7777:8000"
volumes:
# 挂载模型目录
- /home/models--deepseek-ai/DeepSeek-R1-Distill-Qwen-32B:/root/.cache/model/ds32b

command: >
  --served-model-name ds70b
  --model /root/.cache/model/ds32b
  --tensor-parallel-size 2
  --max-num-seqs 8
  --max-model-len 512
  --max-num-batched-tokens 24576
  --gpu-memory-utilization 0.5
  --api-key "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"
ipc: host
deploy:
  resources:
    reservations:
      devices:
        # 使用所有可用的GPU
        - driver: nvidia
          #count: all
          device_ids: ['0', '1']
          capabilities: [gpu]

#定义网络
networks:
default:
name: vllm

下面是 VLLM 容器启动时传入的命令参数:

–served-model-name “DeepSeek-R1:7b”

设置模型名称为 DeepSeek-R1:7b。这是在容器内加载的模型名称。

–trust-remote-code

允许容器信任远程代码执行。这在使用外部模型时很有用,但在安全性较为敏感的情况下需谨慎使用。

–enforce-eager

启用急切执行模式(Eager Execution)。在某些情况下,急切执行模式可以帮助调试和查看模型的每个操作的结果。

–gpu-memory-utilization “0.8”

指定容器使用 GPU 显存的比例。在此配置中,0.8 表示容器将使用 GPU 显存的 80%。

–model “/app/model/”

指定模型文件的位置,即挂载到容器中的 /app/model/ 目录。这个路径将指向你的 DeepSeek 模型。

–host “0.0.0.0”

设置容器的绑定地址为 0.0.0.0,这意味着容器将接受来自所有 IP 地址的请求。

–port “8000”

设置容器服务监听的端口为 8000,也就是你通过 localhost:8000 或宿主机的 IP 地址和端口来访问该容器提供的 API 服务。

–max-model-len “10000”

该参数设置模型能够处理的最大输入文本长度,通常这个值的设置需要根据模型和任务的需求来进行调节。

–api-key “12345678”

设置访问 API 的密钥,这个密钥通常用于验证客户端请求的合法性和安全性。你可以将其替换为实际的 API 密钥。

–tokenizer “/app/model/”

设置 分词器 的路径,在这里,分词器位于 /app/model/ 目录下,这个目录包含了模型的相关资源文件,包括分词器。

其它参数可参考官方说明。

VLLM在多张GPU上运行

在运行 vLLM 时,使用 –tensor-parallel-size 参数指定 GPU 数量。例如,如果你有 2 张 RTX 4090,可以这样运行:只需在上面的命令中加入:复制

"--tensor-parallel-size", "2"

这样,VLLM 会自动将计算任务拆分到 2 张显卡上。你可以通过 nvidia-smi 观察显存占用情况。如果你有 4 张 GPU,可以将 –tensor-parallel-size 设为 4,以获得更高的计算吞吐量。

KV 缓存优化

在 Transformer 结构中,每次生成新 token 时,模型需要重新计算所有之前的 token(自回归推理)。这会导致长文本推理速度越来越慢。KV 缓存(Key-Value Cache) 是一种优化策略,它将计算过的 Key(键)和 Value(值)存储起来,避免重复计算,从而加速推理。

vLLM 的 Paged KV 缓存

vLLM 采用了一种 Paged KV 缓存 技术,相比传统的 KV 缓存,它能更高效地管理显存,避免显存碎片化,提高推理效率。

特点:

动态分配内存 —— 仅在需要时分配缓存,减少不必要的显存占用

支持流式生成 —— 适用于长文本对话,避免显存溢出

减少重复计算 —— 加快推理速度,特别适用于长文本生成

开启 KV 缓存优化

vLLM 默认开启 KV 缓存,但如果要手动调整 KV 缓存的大小,可以使用 –max-num-batched-tokens 参数。如果你的模型处理长文本较多,建议调大 –max-num-batched-tokens,但要注意 GPU 显存的使用情况。

VLLM 常用参数简介

参数类别关键参数作用
核心设置–model、–tensor-parallel-size选择模型 & 多 GPU 并行
显存管理–gpu-memory-utilization、–dtype控制显存占用
推理优化–max-num-batched-tokens、–enable-kv-cache提高吞吐量 & KV 缓存优化
API 服务器–port、–host控制 vLLM API 监听地址
输出控制–max-tokens、–temperature控制输出质量

如果你在使用 VLLM 过程中遇到 显存溢出(OOM) 或 推理速度慢 的问题,可以尝试调整:

  1. 降低 –max-num-batched-tokens
  2. 调整 –gpu-memory-utilization(一般设为 0.85~0.95)
  3. 使用 –dtype float16 减少显存占用
  4. 在多 GPU 服务器上增加 –tensor-parallel-size

评论 (0)

Click here to cancel reply.

欢迎您 游客  

近期文章

  • 用于网速测试的下载测速文件合集
  • docker构建SB镜像
  • pterodactl docker install
  • OpenWRT流量实时监控插件
  • docker部署dify

近期评论

No comments to show.

归档

  • 1 月 2026
  • 8 月 2025
  • 5 月 2025
  • 4 月 2025
  • 3 月 2025
  • 2 月 2025
  • 12 月 2024
  • 4 月 2024
  • 10 月 2023
  • 8 月 2023
  • 4 月 2023
  • 3 月 2023
  • 2 月 2023
  • 10 月 2021
  • 5 月 2021
  • 3 月 2021
  • 2 月 2021

分类

  • 数据库
  • 服务器相关
  • 未分类
  • 游戏相关
  • 电脑相关
  • 路由器
Copyright © 2026
smarty_hankin 主题. Designed by hankin
主页
页面
  • 关于
博主
hkthomas 管理员
136 文章 0 评论 18277 浏览
测试
测试