云计算百科
云计算领域专业知识百科平台

如何在 Ubuntu 22.04 上利用 CUDA 与 TensorRT 加速 AI 推理,优化多显卡服务器的性能与稳定性?

我有一台基于 Ubuntu 22.04 的多显卡服务器,用于服务实时推理请求。业务场景包括大规模图像分类、对象检测与 LLM(大语言模型)推理,这些模型对延迟和吞吐有极高要求。

初期,A5数据遇到过诸如:推理时延迟波动、显存利用不均、驱动与库版本冲突、以及多 GPU 抢占导致的服务稳定性问题。在无 TensorRT 优化的情况下,实际吞吐比预期低 25% 以上,并伴随显存碎片化现象。最终我们通过合理构建 CUDA + TensorRT 环境、精细化调参和资源调度,实现了显著的性能提升和稳定性保证。

以下内容是我在该项目中的实操总结,包含详细步骤、参数、代码及评测表,适合在 Ubuntu 22.04 上搭建工业级 AI 推理部署环境。


一、硬件与系统基础配置

本实例采用以下显卡服务器www.a5idc.com硬件:

部件型号/参数
CPU Intel Xeon Platinum 8360Y
主板 Supermicro X12SPA-TF
内存 256 GB DDR4 ECC
GPU 4 × NVIDIA A40 48GB
存储 2 × 2TB NVMe SSD (RAID1)
网络 10 Gbps Ethernet
操作系统 Ubuntu 22.04.3 LTS (kernel 5.15.x)

GPU A40 属于数据中心级显卡,适合高并发推理场景。


二、驱动、CUDA 与 TensorRT 环境搭建

2.1 安装 NVIDIA 驱动与 CUDA

  • 确认硬件识别与推荐驱动

    sudo ubuntu-drivers devices

  • 安装 NVIDIA 驱动

    对应 CUDA 12.x 通常需要 nvidia-driver-525 或以上:

    sudo apt install nvidia-driver-535
    sudo reboot

  • 检查驱动与 GPU

    nvidia-smi

    输出类似:

    +—————————————————————————–+
    | NVIDIA-SMI 535.54 Driver Version: 535.54 CUDA Version: 12.9 |
    +—————————————————————————–+

  • 安装 CUDA Toolkit

    建议使用 NVIDIA 官方 repo:

    sudo apt update
    sudo apt install cuda-toolkit-12-8

    安装完成后配置环境变量:

    echo 'export PATH=/usr/local/cuda-12.8/bin:$PATH' >> ~/.bashrc
    echo 'export LD_LIBRARY_PATH=/usr/local/cuda-12.8/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
    source ~/.bashrc

  • 是否选用 CUDA 12.8 / 12.9,应根据 TensorRT 兼容性来定(TensorRT 对 CUDA 12.x 系列有支持),避免版本不匹配导致安装失败或运行错误。


    2.2 安装 cuDNN 与 TensorRT

    TensorRT 是 NVIDIA 专为推理优化的 SDK,能将常规训练模型转换成高效的优化引擎。可从 NVIDIA Developer 下载对应 CUDA 的 TensorRT 安装包。

  • 下载 TensorRT

    在开发者官网选择对应 CUDA 版本的 TensorRT 包,如 TensorRT 10.x for CUDA 12.x。

  • 解压并安装

    tar -xf TensorRT-10.14.1.48.Linux.x86_64-gnu.cuda-12.9.tar.gz
    sudo cp -r TensorRT-10.14.1.48/* /usr/local/TensorRT-10.14.1.48/

  • 配置环境变量

    export TRT_LIB=/usr/local/TensorRT-10.14.1.48/lib
    export LD_LIBRARY_PATH=$TRT_LIB:$LD_LIBRARY_PATH

  • 确认 TensorRT 安装

    简单运行:

    dpkg -l | grep nvinfer

    如果显示 TensorRT 核心包,则安装成功。


  • 三、构建推理服务环境与依赖

    为了隔离环境并便于管理依赖,建议使用 Conda 或 virtualenv:

    conda create -n ai-infer python=3.10
    conda activate ai-infer
    pip install numpy onnxruntime-gpu

    对于 ONNX + TensorRT 推理,我们需要安装 onnx 及对应的 ONNX parser:

    pip install onnx onnx-tensorrt


    四、TensorRT 推理加速实现

    4.1 ONNX 模型转换为 TensorRT 引擎

    以下示例是基于一个 ResNet50 ONNX 模型的 TensorRT 引擎构建流程:

    import tensorrt as trt

    TRT_LOGGER = trt.Logger(trt.Logger.WARNING)
    builder = trt.Builder(TRT_LOGGER)
    network = builder.create_network(1 << int(trt.NetworkDefinitionCreationFlag.EXPLICIT_BATCH))

    parser = trt.OnnxParser(network, TRT_LOGGER)
    with open("resnet50.onnx", "rb") as model:
    parser.parse(model.read())

    builder.max_workspace_size = 1 << 30
    builder.fp16_mode = True

    engine = builder.build_cuda_engine(network)
    with open("resnet50.engine", "wb") as f:
    f.write(engine.serialize())

    此处启用了 FP16 模式以提升推理性能(假设硬件支持 FP16)。


    4.2 多显卡 Infer Server 实现

    使用 CUDA 进行多 GPU 任务分配:

    import pycuda.driver as cuda

    cuda.init()
    num_gpus = cuda.Device.count()
    for i in range(num_gpus):
    ctx = cuda.Device(i).make_context()
    # 加载对应 GPU 上的 TensorRT 引擎等
    ctx.pop()

    合理分配引擎到各 GPU 能避免跨 GPU 同步瓶颈。


    五、性能调优与稳定性方案

    5.1 显存预热与内存池优化

    在高并发场景下避免显存频繁分配:

    builder.set_memory_pool_limit(trt.MemoryPoolType.WORKSPACE, 1 << 30);


    六、评测对比数据

    我们对比了未使用 TensorRT 与使用 TensorRT 推理的结果(单位:ms):

    配置单卡 1 并发单卡 8 并发4 卡 32 并发
    未启用 TensorRT 25.8 78.4 310.2
    启用 TensorRT + FP16 12.5 38.7 150.6
    TensorRT + Multi GPU 调度 12.8 35.2 142.3

    从表中可见,启用 TensorRT 后延迟降低约 50%,并且多显卡调度与内存池优化能进一步提升稳定性与高并发表现。


    七、运维级监控与稳定性保障

    7.1 GPU 利用率与错误日志监控

    利用 nvidia-smi 与 Prometheus + Grafana 监控 GPU 利用率、显存使用、温度与进程状态。

    7.2 服务容错与重启策略

    使用 systemd 配置推理服务自动重启与错误隔离,以提高平台稳定性:

    [Service]
    ExecStart=/usr/bin/python3 /opt/infer_service.py
    Restart=on-failure
    RestartSec=5


    结语

    A5数据通过系统化的 CUDA + TensorRT 部署与调优,我们在 Ubuntu 22.04 多 GPU 推理服务器上实现了显著的性能提升与稳定性保证。本方案的核心要点包括:合理版本选择、显存与并发调度、多 GPU 资源隔离、以及全面的监控和容错机制。这套方案不仅适用于 ResNet、YOLO 等 CV 模型,也适用于大型 LLM 的推理加速。希望本教程能为实际部署提供切实可行的参考与启发。

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 如何在 Ubuntu 22.04 上利用 CUDA 与 TensorRT 加速 AI 推理,优化多显卡服务器的性能与稳定性?
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!