第 3 章 使用 AI Inference Server 提供和推断


使用红帽 AI Inference Server 提供大型语言模型和推测。

先决条件

  • 已安装 Podman 或 Docker
  • 您可以使用 NVIDIA 或 AMD GPU 访问 Linux 服务器,并以具有 root 权限的用户身份登录

    • 对于 NVIDIA GPU:

    • 对于 AMD GPU:

      注意

      AMD GPU 仅支持 FP8 (W8A8)和 GGUF 量化方案。如需更多信息,请参阅 支持的硬件

      流程

      1. 使用下表,识别您的基础架构的正确镜像。

        Expand
        GPUAI Inference Server 镜像

        NVIDIA CUDA (T4, A100, L4, L40S, H100, H200)

        registry.redhat.io/rhaiis/vllm-cuda-rhel9:3.0.0

        AMD ROCm (MI210, MI300X)

        registry.redhat.io/rhaiis/vllm-rocm-rhel9:3.0.0

      2. 在服务器主机上打开一个终端,并登录到 registry.redhat.io

        $ podman login registry.redhat.io
        Copy to Clipboard Toggle word wrap
      3. 为您的 GPU 拉取相关镜像:

        $ podman pull registry.redhat.io/rhaiis/vllm-<gpu_type>-rhel9:3.0.0
        Copy to Clipboard Toggle word wrap
      4. 如果您的系统启用了 SELinux,请将 SELinux 配置为允许设备访问:

        $ sudo setsebool -P container_use_devices 1
        Copy to Clipboard Toggle word wrap
      5. 创建卷并将其挂载到容器中。调整容器权限,以便容器可以使用它。

        $ mkdir -p rhaiis-cache
        Copy to Clipboard Toggle word wrap
        $ chmod g+rwX rhaiis-cache
        Copy to Clipboard Toggle word wrap
      6. 创建或附加 HF_TOKEN Hugging Face 令牌到 private.env 文件。提供 private.env 文件。

        $ echo "export HF_TOKEN=<your_HF_token>" > private.env
        Copy to Clipboard Toggle word wrap
        $ source private.env
        Copy to Clipboard Toggle word wrap
      7. 启动 AI Inference Server 容器镜像。

        1. 对于 NVIDIA CUDA 加速器:

          1. 如果主机系统有多个 GPU 并使用 NVSwitch,则启动 NVIDIA Fabric Manager。要检测您的系统是否使用 NVSwitch,请首先检查 /proc/driver/nvidia-nvswitch/devices/ 中是否存在文件,然后启动 NVIDIA Fabric Manager。启动 NVIDIA Fabric Manager 需要 root 特权。

            $ ls /proc/driver/nvidia-nvswitch/devices/
            Copy to Clipboard Toggle word wrap

            输出示例

            0000:0c:09.0  0000:0c:0a.0  0000:0c:0b.0  0000:0c:0c.0  0000:0c:0d.0  0000:0c:0e.0
            Copy to Clipboard Toggle word wrap

            $ systemctl start nvidia-fabricmanager
            Copy to Clipboard Toggle word wrap
            重要

            只有在使用多个 GPU 的系统上需要使用 NVswitch 的系统才需要 NVIDIA Fabric Manager。如需更多信息,请参阅 NVIDIA 服务器架构

          2. 运行以下命令,检查 Red Hat AI Inference Server 容器是否可以访问主机上的 NVIDIA GPU:

            $ podman run --rm -it \
            --security-opt=label=disable \
            --device nvidia.com/gpu=all \
            nvcr.io/nvidia/cuda:12.4.1-base-ubi9 \
            nvidia-smi
            Copy to Clipboard Toggle word wrap

            输出示例

            +-----------------------------------------------------------------------------------------+
            | NVIDIA-SMI 570.124.06             Driver Version: 570.124.06     CUDA Version: 12.8     |
            |-----------------------------------------+------------------------+----------------------+
            | GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
            | Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
            |                                         |                        |               MIG M. |
            |=========================================+========================+======================|
            |   0  NVIDIA A100-SXM4-80GB          Off |   00000000:08:01.0 Off |                    0 |
            | N/A   32C    P0             64W /  400W |       1MiB /  81920MiB |      0%      Default |
            |                                         |                        |             Disabled |
            +-----------------------------------------+------------------------+----------------------+
            |   1  NVIDIA A100-SXM4-80GB          Off |   00000000:08:02.0 Off |                    0 |
            | N/A   29C    P0             63W /  400W |       1MiB /  81920MiB |      0%      Default |
            |                                         |                        |             Disabled |
            +-----------------------------------------+------------------------+----------------------+
            
            +-----------------------------------------------------------------------------------------+
            | Processes:                                                                              |
            |  GPU   GI   CI              PID   Type   Process name                        GPU Memory |
            |        ID   ID                                                               Usage      |
            |=========================================================================================|
            |  No running processes found                                                             |
            +-----------------------------------------------------------------------------------------+
            Copy to Clipboard Toggle word wrap

          3. 启动容器。

            $ podman run --rm -it \
            --device nvidia.com/gpu=all \
            --security-opt=label=disable \ 
            1
            
            --shm-size=4g -p 8000:8000 \ 
            2
            
            --userns=keep-id:uid=1001 \ 
            3
            
            --env "HUGGING_FACE_HUB_TOKEN=$HF_TOKEN" \ 
            4
            
            --env "HF_HUB_OFFLINE=0" \
            --env=VLLM_NO_USAGE_STATS=1 \
            -v ./rhaiis-cache:/opt/app-root/src/.cache:Z \ 
            5
            
            registry.redhat.io/rhaiis/vllm-cuda-rhel9:3.0.0 \
            --model RedHatAI/Llama-3.2-1B-Instruct-FP8 \
            --tensor-parallel-size 2 
            6
            Copy to Clipboard Toggle word wrap
            1
            启用 SELinux 的系统需要。--security-opt=label=disable 防止 SELinux 重新标记卷挂载中的文件。如果您选择不使用此参数,您的容器可能无法成功运行。
            2
            如果您在共享内存时遇到问题,请将 -shm-size 增加到 8GB
            3
            将主机 UID 映射到容器中 vLLM 进程的有效 UID。您也可以 pass-- user=0,但这比 the- userns 选项不太安全。set-- user=0 在容器内以 root 身份运行 vLLM。
            4
            使用 Hugging Face API 访问令牌设置和导出 HF_TOKEN
            5
            启用 SELinux 的系统需要。在 Debian 或 Ubuntu 操作系统上,或者在不使用 SELinux 的情况下使用 Docker 时,:Z 后缀不可用。
            6
            在多个 GPU 上运行 AI Inference Server 容器时,set -tensor-parallel-size 与 GPU 的数量匹配。
        2. 对于 AMD ROCm 加速器:

          1. 使用 amd-smi static -a 验证容器是否可以访问主机系统 GPU:

            $ podman run -ti --rm --pull=newer \
            --security-opt=label=disable \
            --device=/dev/kfd --device=/dev/dri \
            --group-add keep-groups \ 
            1
            
            --entrypoint="" \
            registry.redhat.io/rhaiis/vllm-rocm-rhel9:3.0.0 \
            amd-smi static -a
            Copy to Clipboard Toggle word wrap
            1
            您必须属于 AMD 系统上的视频和呈现组才能使用 GPU。要访问 GPU,您必须将 --group-add=keep-groups 补充组选项传给容器。
          2. 启动容器:

            podman run --rm -it \
            --device /dev/kfd --device /dev/dri \
            --security-opt=label=disable \ 
            1
            
            --group-add keep-groups \
            --shm-size=4GB -p 8000:8000 \ 
            2
            
            --env "HUGGING_FACE_HUB_TOKEN=$HF_TOKEN" \
            --env "HF_HUB_OFFLINE=0" \
            --env=VLLM_NO_USAGE_STATS=1 \
            -v ./rhaiis-cache:/opt/app-root/src/.cache \
            registry.redhat.io/rhaiis/vllm-rocm-rhel9:3.0.0 \
            --model RedHatAI/Llama-3.2-1B-Instruct-FP8 \
            --tensor-parallel-size 2 
            3
            Copy to Clipboard Toggle word wrap
            1
            --security-opt=label=disable 防止 SELinux 重新标记卷挂载中的文件。如果您选择不使用此参数,您的容器可能无法成功运行。
            2
            如果您在共享内存时遇到问题,请将 -shm-size 增加到 8GB
            3
            在多个 GPU 上运行 AI Inference Server 容器时,set -tensor-parallel-size 与 GPU 的数量匹配。
      8. 在终端中的单独标签页中,使用 API 向模型发出请求。

        curl -X POST -H "Content-Type: application/json" -d '{
            "prompt": "What is the capital of France?",
            "max_tokens": 50
        }' http://<your_server_ip>:8000/v1/completions | jq
        Copy to Clipboard Toggle word wrap

        输出示例

        {
            "id": "cmpl-b84aeda1d5a4485c9cb9ed4a13072fca",
            "object": "text_completion",
            "created": 1746555421,
            "model": "RedHatAI/Llama-3.2-1B-Instruct-FP8",
            "choices": [
                {
                    "index": 0,
                    "text": " Paris.\nThe capital of France is Paris.",
                    "logprobs": null,
                    "finish_reason": "stop",
                    "stop_reason": null,
                    "prompt_logprobs": null
                }
            ],
            "usage": {
                "prompt_tokens": 8,
                "total_tokens": 18,
                "completion_tokens": 10,
                "prompt_tokens_details": null
            }
        }
        Copy to Clipboard Toggle word wrap

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat