服务器配置 :8块H20显卡、两颗至强白金8558P(单颗48核96线程)、2TB内存(32根64GB)

操作系统:Ubuntu24

一、显卡驱动及依赖准备

1、安装H20显卡驱动

安装H20显卡驱动及依赖包,参考:https://www.nvidia.com/en-us/drivers/results/

sudo apt install gcc g++ make
wget https://cn.download.nvidia.com/tesla/550.163.01/NVIDIA-Linux-x86_64-550.163.01.run
sudo sh NVIDIA-Linux-x86_64-550.163.01.run

    2、tookit安装

    tookit安装参考:https://developer.nvidia.com/cuda-toolkit-archive

    参考:https://developer.nvidia.com/cuda-12-4-1-download-archive?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=22.04&target_type=runfile_local

    wget https://developer.download.nvidia.com/compute/cuda/12.4.1/local_installers/cuda_12.4.1_550.54.15_linux.run
    sudo sh cuda_12.4.1_550.54.15_linux.run
    apt-get install -y nvidia-container-toolkit
    apt-get install -y nvidia-fabricmanager

      二、Python环境准备

      1、安装python环境

      准备python环境,Index of /archive

      bash https://repo.anaconda.com/archive/Anaconda3-2024.10-1-Linux-x86_64.sh
      conda -V
      conda create -n vllm python=3.12 -y
      conda activate vllm
      

        2、模型下载

        pip install modelscope
        modelscope download --model deepseek-ai/DeepSeek-R1 --local_dir /mnt/nvme01/models/deepseek671
        modelscope download --model BAAI/bge-m3 --local_dir /mnt/nvme01/models/bge-m3
        modelscope download --model BAAI/bge-reranker-base --local_dir /mnt/nvme01/models/bge-reranker-base

          3、安装依赖

          # 然后到PyTorch 官网(https://pytorch.org/get-started/locally/)查看相符的安装命令,执行
          pip install torch==2.1.2 torchvision torchaudio -i https://pypi.tuna.tsinghua.edu.cn/simple --extra-index-url https://download.pytorch.org/whl/cu118
          # 安装成功后,验证PyTorch 是否正确调用 GPU
          python -c "import torch; print(torch.cuda.is_available()); print(torch.cuda.get_device_name(0))"
          # 返回类似True NVIDIA GeForce RTX 4090就代表安装成功了
          
          #安装显卡状态查看工具nvitop
          pip install nvitop
          nvitop

            4、安装vllm

            #安装vllm, pip install "vllm[triton]" 命令中的[triton]代表我们要安装VLLM的可选组件triton。它是OpenAI 开源的深度学习算子编译框架,vLLM 使用它来实现高性能的「Token 并行生成机制」,使VLLM在运行时性能会得到显著提升,推荐安装
            pip install vllm -i https://pypi.tuna.tsinghua.edu.cn/simple
            # 验证是否安装成功
            python -c "import vllm; print(vllm.__version__)" #如果打印出VLLM相关的东西,则代表安装成功了

              5、vllm服务使用说明

              推荐使用OpenAI API 格式服务启动。因为OpenAI API 格式几乎成为所有AI通用格式,能兼容绝大多数的服务与接口请求

              vllm启动参数可参考:引擎参数 — vLLM 文档

              模型启动示例

              python -m vllm.entrypoints.openai.api_server --model /path/to/model --port 8000

              # 模型参数详解
              python -m vllm.entrypoints.openai.api_server  #启动 vLLM 的 OpenAI API 服务接口,符合 OpenAI API 格式的调用方式

              --model /home/xx/model/deepseek # 模型路径,可以使用本地路径,或 huggingface等远程路径。必填

              --model-name mydeepseek # 最定义模型名称。用户或客户端需要指定模型名,所以你必须提前定义清楚它叫什么。非必填(默认为模型自己的名称)

              --tokenizer /home/xx/model/deepseek # 指定分词器的位置或名称,模型文件结构规范的情况下可以不填。它的作用是防止模型文件夹结构不规范导致报错。日常不需要使用

              --dtype float16 # 张量精度。支持auto(默认值。vLLM 会根据模型配置自动判断 dtype)、float32(单精度浮点数,最精确但显存占用大)、float16(半精度浮点数,推理快,占用小,当前主流推荐)等等参数。非必填(默认auto)

              --port 8088 # 指定模型启动时占用的端口。最好必填

              --host 0.0.0.0    # 指定模型启动时的地址,设为 0.0.0.0 允许所有 IP 访问。最好必填

              --max-model-len 4068 # 最大输入 + 输出 token 长度。需模型支持。非必填。默认为模型的默认值

              --gpu-memory-utilization 0.8 # 使用 GPU 显存的比例。0为最小,1为最大。(1.0=100%,0.1=%10)。调小可以保留一部分显存给系统或其他程序,防止OOM(Out Of Memory显存溢出)。非必填(默认0.9)

              --tensor-parallel-size 2 # 用于多 GPU 并行推理。1 表示单卡运行(比如我的机器有2张显卡,就可以设置为2)。非必填(默认为1)

              --swap-space 4    # 为内存不足时预留的 swap 空间(“交换空间”Swap Space)(单位 GB),在显存爆掉时能缓解崩溃。非必填(默认为4)

              --disable-log-requests False # 是否禁用日志输出请求内容(保护隐私时可加)。非必填(默认为False)

              --max-num-batched-tokens 4068 # 每一批请求最多允许的 token 总数。这个数越大,吞吐量高但延迟可能变大;越小,响应快但效率低。非必填(默认为自动)

              --max-num-seqs 6 # 最大同时处理的请求数量,用于多并发的情况。非必填(默认为自动)

              --seed 42 # 控制生成内容的一致性,设置固定值可复现生成(同样输入,生成的输出可能会不一样。但是如果设置了比如--seed 42,则会出现回答与之前完全一致的情况出现)。非必填(默认为随机)

              --trust-remote-code False # 如果你从 HuggingFace 加载模型并需要运行自定义模型代码(如 LLaVA),必须加此参数。非必填(默认为False)

              三、vllm启动模型

              注意:我们是用VLLM 把模型部署成 openai API server 形式

              vllm serve是vLLM提供的命令行工具,用于快速部署兼容OpenAl API的HTTP服务器。它是对python -m vllm.entrypoints.api_server的封装,语法更简洁。

              1、vllm启动Deepseek

              nohup python -m vllm.entrypoints.openai.api_server \
              --model /mnt/nvme01/models/deepseek671  \
              --served-model-name deepseek14 \
              --dtype float16 \
              --port 8000 \
              --host 0.0.0.0 \
              --max-model-len 4068 \
              --gpu-memory-utilization 0.8 \
              --tensor-parallel-size 8 \
              --swap-space 8 \
              --max-num-batched-tokens 4068 \
              --max-num-seqs 6 &
              
              nohup python -m vllm.entrypoints.openai.api_server \
                --model="/mnt/nvme01/models/DeepSeek-R1-Distill-Qwen-32B" \
                --tensor-parallel-size 4 \
                --gpu-memory-utilization 0.88 \
                --dtype half \
                --served-model-name "DeepSeek-R1-Distill-Qwen-32B" \
                --host 0.0.0.0 \
                --port 8000 --max-model-len 20480 \
                --chat-template /root/soft/deepseek_r1.jinja &

                2、vllm启动Embedding模型bge-m3

                CUDA_VISIBLE_DEVICES=0 nohup python -m vllm.entrypoints.openai.api_server \
                  --model="/mnt/nvme01/models/bge-m3" \
                  --tensor-parallel-size 1 \
                  --gpu-memory-utilization 0.1 \
                  --dtype half \
                  --served-model-name "bge-m3" \
                  --host 0.0.0.0 \
                  --port 8001 --max-model-len 4096 &

                  3、vllm启动Reranker模型bge-reranker-base

                  CUDA_VISIBLE_DEVICES=1 nohup python -m vllm.entrypoints.openai.api_server \
                    --model="/mnt/nvme01/models/bge-reranker-base" \
                    --tensor-parallel-size 1 \
                    --gpu-memory-utilization 0.1 \
                    --dtype half \
                    --served-model-name "bge-reranker-base" \
                    --host 0.0.0.0 \
                    --port 8002 &

                    4、vllm启动Qwen3

                    #下载模型
                    modelscope download --model Qwen/Qwen3-235B-A22B --local_dir /mnt/nvme02/models/Qwen3-235B-A22B
                    #启动模型
                    nohup python -m vllm.entrypoints.openai.api_server \
                      --model /mnt/nvme02/models/Qwen3-235B-A22B \
                      --served-model-name qwen3 \
                      --tensor_parallel_size 8 \
                      --host 0.0.0.0 \
                      --port 8004 \
                      --gpu-memory-utilization 0.8 \
                      --max-num-seqs 16 \
                      --enable-expert-parallel \
                      --max-model-len 4096 \
                      --enable-reasoning \
                      --reasoning-parser deepseek_r1 &

                      四、dify中添加模型

                      模型服务配置

                      1、登录Dify后台 → 设置 → 模型供应商

                      2、安装插件OpenAI-API-compatible

                      3、分别配置LLM、Text Embedding、Rerank模型即可

                      五、待解决问题

                      同时跑多个模型资源调度可能会出现问题,看到网上有帖子说vgpu的方式可解决,待研究,有感兴趣的朋友一起研究。

                      附录:

                      模型下载:

                      阿里魔塔模型库:ModelScope - 模型列表页

                      模型库:Models - Hugging Face

                      AI快站:Models - Fast360

                      科学上网,模型库:https://huggingface.co/models

                      转自:vllm方式部署Deepseek R1、Embedding、Reranker、Qwen3,并集成dify环境_qwen3 embedding-CSDN博客

                      Logo

                      免费领 200 小时云算力,进群参与显卡、AI PC 幸运抽奖

                      更多推荐