Playbook

多模态推理

- [Overview](#overview)

统一模板Markdown 驱动/multi-modal-inference

多模态推理

使用 TensorRT 设置多模态推理

目录


概述

基本思路

多模态推理将不同的数据类型(例如文本、图像和音频)组合在单个模型管道中,以生成或解释更丰富的输出。
多模态系统不是一次处理一种输入类型,而是共享文本到图像生成图像字幕视觉语言推理的表示。

在 GPU 上,这可以实现跨模式并行处理,从而为结合语言和视觉的任务提供更快、更高保真度的结果。

你将完成什么

您将使用 TensorRT 在 NVIDIA Spark 上部署 GPU 加速的多模态推理功能来运行
Flux.1 和 SDXL 扩散模型在多种精度格式(FP16、
FP8、FP4)。

开始之前需要了解什么

  • 使用 Docker 容器和 GPU 直通
  • 使用 TensorRT 进行模型优化
  • Hugging Face 模型中心认证和下载
  • 适用于 GPU 工作负载的命令行工具
  • 对扩散模型和图像生成的基本了解

先决条件

  • 采用 Blackwell GPU 架构的 NVIDIA Spark 设备
  • Docker 已安装并且当前用户可以访问
  • 配置 NVIDIA 容器运行时
  • Hugging Face 帐户可访问 Hugging Face 上的 Black Forest Labs 模型 FLUX.1-devFLUX.1-dev-onnx
  • Hugging Face token 配置为可以访问两个 FLUX.1 模型存储库
  • 至少 48GB VRAM 可用于 FP16 Flux.1 Schnell 操作
  • 验证 GPU 访问:nvidia-smi
  • 检查 Docker GPU 集成:docker run --rm --gpus all nvcr.io/nvidia/pytorch:25.11-py3 nvidia-smi

附属文件

所有必需的文件都可以在 TensorRT 存储库 here on GitHub 中找到

时间与风险

  • 持续时间:45-90 分钟,具体取决于模型下载和优化步骤

  • 风险

    • 大模型下载可能会超时
    • 高 VRAM 要求可能会导致 OOM 错误
    • 量化模型可能会显示质量下降
  • 回滚

    • 从 HuggingFace 缓存中删除下载的模型
    • 然后退出容器环境
  • 最后更新: 2025 年 12 月 22 日
    • 升级到最新的 pytorch 容器版本 nvcr.io/nvidia/pytorch:25.11-py3
    • 添加 HuggingFace 令牌设置说明以进行模型访问
    • 添加docker容器权限设置说明

指示

步骤1.配置Docker权限

要在不使用 sudo 的情况下轻松管理容器,您必须位于 docker 组中。如果您选择跳过此步骤,则需要使用 sudo 运行 Docker 命令。

打开新终端并测试 Docker 访问。在终端中,运行:

docker ps

如果您看到权限被拒绝错误(例如尝试连接到 Docker 守护进程套接字时权限被拒绝),请将您的用户添加到 docker 组,这样您就不需要使用 sudo 运行命令。

sudo usermod -aG docker $USER
newgrp docker

步骤2.启动TensorRT容器环境

启动具有 GPU 访问和 HuggingFace 缓存安装的 NVIDIA PyTorch 容器。这提供了
预安装了所有必需依赖项的 TensorRT 开发环境。

docker run --gpus all --ipc=host --ulimit memlock=-1 \
--ulimit stack=67108864 -it --rm --ipc=host \
-v $HOME/.cache/huggingface:/root/.cache/huggingface \
nvcr.io/nvidia/pytorch:25.11-py3

步骤 3. 克隆并设置 TensorRT 存储库

下载 TensorRT 存储库并配置扩散模型演示的环境。

git clone https://github.com/NVIDIA/TensorRT.git -b main --single-branch && cd TensorRT
export TRT_OSSPATH=/workspace/TensorRT/
cd $TRT_OSSPATH/demo/Diffusion

步骤 4. 安装所需的依赖项

安装 NVIDIA ModelOpt 和其他依赖项以进行模型量化和优化。

## Install OpenGL libraries
apt update
apt install -y libgl1 libglu1-mesa libglib2.0-0t64 libxrender1 libxext6 libx11-6 libxrandr2 libxss1 libxcomposite1 libxdamage1 libxfixes3 libxcb1

pip install nvidia-modelopt[torch,onnx]
sed -i '/^nvidia-modelopt\[.*\]=.*/d' requirements.txt
pip3 install -r requirements.txt
pip install onnxconverter_common

设置您的 HuggingFace 令牌以访问开放模型。

export HF_TOKEN = `<YOUR_HUGGING_FACE_TOKEN>`

步骤 5. 运行 Flux.1 开发模型推理

使用具有不同精度格式的 Flux.1 Dev 模型测试多模态推理。

子步骤 A. BF16 量化精度

python3 demo_txt2img_flux.py "a beautiful photograph of Mt. Fuji during cherry blossom" \
  --hf-token=$HF_TOKEN --download-onnx-models --bf16

子步骤 B. FP8 量化精度

python3 demo_txt2img_flux.py "a beautiful photograph of Mt. Fuji during cherry blossom" \
  --hf-token=$HF_TOKEN --quantization-level 4 --fp8 --download-onnx-models

子步骤 C. FP4 量化精度

python3 demo_txt2img_flux.py "a beautiful photograph of Mt. Fuji during cherry blossom" \
  --hf-token=$HF_TOKEN --fp4 --download-onnx-models

步骤 6. 运行 Flux.1 Schnell 模型推理

使用不同的精度格式测试更快的 Flux.1 Schnell 变体。

[!警告]
FP16 Flux.1 Schnell 需要 >48GB VRAM 才能进行本机导出

子步骤 A. FP16 精度(高 VRAM 要求)

python3 demo_txt2img_flux.py "a beautiful photograph of Mt. Fuji during cherry blossom" \
  --hf-token=$HF_TOKEN --version="flux.1-schnell"

子步骤 B. FP8 量化精度

python3 demo_txt2img_flux.py "a beautiful photograph of Mt. Fuji during cherry blossom" \
  --hf-token=$HF_TOKEN --version="flux.1-schnell" \
  --quantization-level 4 --fp8 --download-onnx-models

子步骤 C. FP4 量化精度

python3 demo_txt2img_flux.py "a beautiful photograph of Mt. Fuji during cherry blossom" \
  --hf-token=$HF_TOKEN --version="flux.1-schnell" \
  --fp4 --download-onnx-models

步骤 7. 运行 SDXL 模型推理

测试 SDXL 模型以与不同精度格式进行比较。

子步骤 A. BF16 精度

python3 demo_txt2img_xl.py "a beautiful photograph of Mt. Fuji during cherry blossom" \
  --hf-token=$HF_TOKEN --version xl-1.0 --download-onnx-models

子步骤 B. FP8 量化精度

python3 demo_txt2img_xl.py "a beautiful photograph of Mt. Fuji during cherry blossom" \
  --hf-token=$HF_TOKEN --version xl-1.0 --download-onnx-models --fp8

步骤 8. 验证推理输出

检查模型是否成功生成图像并测量性能差异。

## Check for generated images in output directory
ls -la *.png *.jpg 2>/dev/null || echo "No image files found"

## Verify CUDA is accessible
nvidia-smi

## Check TensorRT version
python3 -c "import tensorrt as trt; print(f'TensorRT version: {trt.__version__}')"

步骤 9. 清理和回滚

删除下载的模型并退出容器环境以释放磁盘空间。

[!警告]
这将删除所有缓存的模型和生成的图像

## Exit container
exit

## Remove HuggingFace cache (optional)
rm -rf $HOME/.cache/huggingface/

步骤 10. 后续步骤

使用经过验证的设置生成自定义图像或将多模态推理集成到您的
应用程序。尝试不同的提示或探索使用已建立的 TensorRT 进行模型微调
环境。

故障排除

症状原因使固定
“CUDA 内存不足”错误模型 VRAM 不足使用 FP8/FP4 量化或更小的模型
“HF 令牌无效”错误HuggingFace 令牌丢失或过期设置有效令牌:export HF_TOKEN=YOUR_TOKEN`
无法访问 URL 的门禁存储库某些 HuggingFace 模型的访问受到限制重新生成你的 HuggingFace token;并请求在您的网络浏览器上访问 gated model
模型下载超时网络问题或速率限制重试命令或预下载模型

[!笔记]
DGX Spark 使用统一内存架构 (UMA),可实现 GPU 和 CPU 之间的动态内存共享。
由于许多应用程序仍在更新以利用 UMA,因此即使在
DGX Spark 的内存容量。如果发生这种情况,请使用以下命令手动刷新缓冲区缓存:

sudo sh -c 'sync; echo 3 > /proc/sys/vm/drop_caches'