
如果你是按《AI互动数字人 WebRTC 音视频实战》这个系列一路做到这里的前面的信令、推流、拉流链路应该已经能正常跑起来了。我们从浏览器端采集麦克风和摄像头经过 WebRTC 传输到服务端再由服务端做转发或处理这一套“实时音视频骨架”已经具备。但从这一篇开始系统要真正称为“AI 互动数字人”光有音视频传输还不够还要让服务端能听懂用户说话、生成语义回复、合成语音并驱动数字人做出表情和口型动作。而这类 AI 能力绝大多数跑在 PyTorch 上并且依赖 GPU 加速才能保证实时性因此本篇文章把“安装支持 GPU 的 PyTorch”这件事做完整。这篇文章不需要你熟悉深度学习原理只要你有 WebRTC 或音视频服务端的基础能跟着命令行操作即可。完成之后你的开发机上会有一套“能在 GPU 上跑 PyTorch 模型”的 Python 环境同时你也会知道如何在 AI 互动数字人项目里验证显存、排查 CUDA 问题并把它作为一个独立推理服务挂到 WebRTC 链路旁边。下面我们直接开始。1. 本章任务把 AI 能力接入 WebRTC 链路的第一步1.1 为什么安装 PyTorch 会成为数字人实战的关键一步AI 互动数字人的完整链路并不是只靠 WebRTC 就能完成的。WebRTC 负责解决“视频流和音频流怎么实时传输”它本身不做语音识别、语义理解、语音合成和数字人画面生成。真正的“智能感”来自服务端部署的一批 AI 模型。举例来说用户说话后系统先要做语音识别把音频转成文本文本进入大语言模型或业务问答模块后系统要生成回复文本接着文本要经过语音合成转成音频同时还要根据音频或文本内容生成口型、表情和肢体动作参数最终把这些结果渲染成数字人视频帧再推送给用户。这条链路中语音识别、语音合成、数字人驱动等模型很多都使用 PyTorch 训练和推理。即使你最终选择 ONNX、TensorRT 等更轻量的推理框架开发阶段也绕不开 PyTorch。由于音视频实时流对延迟非常敏感如果所有模型都运行在 CPU 上单路用户请求可能还能勉强应付但只要并发用户增加或者模型稍微复杂CPU 推理延迟就会快速上升最终导致画面卡顿、声音和口型不同步。所以在“AI 互动数字人 WebRTC 音视频”项目里GPU 不是一个可选项而是保证实时交互体验的关键资源。1.2 PyTorch 的 CPU 版与 GPU 版到底差在哪里很多初学者在安装 PyTorch 时并不清楚 CPU 版和 GPU 版的区别于是直接执行pip install torch最后发现模型能跑起来但torch.cuda.is_available()一直返回False拿到 NVIDIA 显卡也识别不到。这里需要纠正一个基础认知PyTorch 是一个深度学习框架它支持多种计算后端。CPU 版会调用 CPU 的矩阵运算库来完成神经网络的前向与反向计算GPU 版则会通过 CUDA 调用 NVIDIA 显卡进行并行计算。从功能上看CPU 版也能完成模型推理神经网络不会报错只是计算方式不同。但从实时 AI 互动数字人的场景看GPU 的并行计算能力远远强于 CPU。例如语音合成模型需要逐帧生成音频特征视频口型驱动模型需要对大量特征图做卷积和上采样这些计算非常密集。GPU 可以把几千个计算单元同时用于矩阵乘法而 CPU 更擅长复杂逻辑判断和串行任务。同一个模型在 GPU 上的推理时间可能是 CPU 的几倍甚至几十倍差距尤其当模型较大、batch 较大时这个差距会更明显。因此安装带 CUDA 支持的 PyTorch是数字人项目正式进入 AI 阶段的第一步。1.3 显卡驱动、CUDA Runtime 与 PyTorch 的版本关系要理解 PyTorch GPU 版安装必须先理清“显卡驱动”和“CUDA”之间的区别。NVIDIA 显卡驱动是系统层面的软件它负责让操作系统识别显卡并管理显存与计算任务。CUDA 是 NVIDIA 提供的并行计算平台和编程模型开发者在代码里写到的torch.cuda、cuda()、to(cuda)最终都会调用 CUDA 相关接口。更细致地看CUDA 可以分为 driver、toolkit、runtime。在深度学习场景里你会经常看到“CUDA 11.8”、“CUDA 12.1”这些通常指的是 PyTorch 安装包所编译使用的 CUDA 版本它包含了模型运行所依赖的 CUDA runtime 库、cuDNN 等动态库。运行nvidia-smi时右上角会显示一个 “CUDA Version”很多初学者以为这个版本代表当前环境已经安装了 CUDA Toolkit。实际上这个值表示“当前显卡驱动最高能支持的 CUDA 版本”它不等于 Python 环境里已经具备 CUDA Runtime。PyTorch 官方发布的 GPU wheel 包会将运行所必需的 CUDA Runtime 库一起打包所以你不需要先单独安装一套完整的 CUDA Toolkit。最简单的方式是先确认系统里有 NVIDIA 驱动再根据 PyTorch 官网的安装命令选择对应 CUDA 版本的 wheel 包。这套安装策略可以帮助避免大量网上的“魔改教程”带来的环境混乱。2. 安装前准备确认驱动、环境和安装源2.1 确认显卡与驱动状态安装之前先确认你的机器是否具备 NVIDIA GPU以及驱动是否正常。打开终端或命令行工具执行以下命令nvidia-smi如果系统提示找不到nvidia-smi说明当前机器没有安装 NVIDIA 驱动或者显卡不是 NVIDIA 型号。对于 AI 互动数字人项目建议优先使用 NVIDIA GPU因为 PyTorch 官方对 CUDA 的支持最成熟。使用 AMD 或 Apple Silicon 的开发者也能跑 PyTorch但会走 ROCm 或 Metal 分支安装和排错逻辑与本教程不完全相同。正常执行nvidia-smi后会输出一张表格里面包含显卡型号、驱动版本、显存占用还有右上角一个 “CUDA Version” 字段。这个字段只是驱动支持的 CUDA 最大版本。如果你的电脑有多张显卡可以通过nvidia-smi下方的列表查看每张卡的温度、显存、进程占用。如果命令正常显示说明 GPU 驱动没问题接下来只需要让 PyTorch 能正确匹配到这套驱动即可。整个过程不需要额外卸载或重装驱动不要看到驱动版本较老就直接升级先按后面的步骤确认 PyTorch 版本。2.2 选择虚拟环境与 Python 版本在深度学习项目里我非常不建议把 PyTorch 直接安装到系统的全局 Python 环境中因为不同项目可能依赖不同版本的 PyTorch、CUDA 构建和第三方库全局安装很容易造成版本冲突。常见的做法是使用 Anaconda 或 Miniconda 创建独立虚拟环境。Anaconda 自带 conda 包管理工具对 Python 版本切换和科学计算依赖管理很友好如果你不喜欢厚重的基础环境可以只安装 Miniconda。当然使用 Python 自带的venv也可以但后续如果涉及 cuDNN、MKL 等底层库conda 处理起来会更省心。例如在命令行执行以下命令创建一个名为ai_digital_human的环境conda create -n ai_digital_human python3.10 -y conda activate ai_digital_human为什么建议 Python 3.10这并不代表其他版本不能用而是 PyTorch 官方 wheel 对 Python 3.10 的兼容性非常稳定很多依赖库也早已适配。如果你的安装页面提示支持更新的 Python 版本也可以按你的实际情况选择。重要的是不要直接使用系统 Python 或 base 环境尤其不要随便修改 conda 的 base 环境因为后续如果要重建环境独立的虚拟环境可以让你毫无压力地删除重来。2.3 获取 PyTorch 官方安装命令PyTorch 官方提供了一个非常方便的安装命令生成页面也就是 PyTorch 官网的 Get Started 页面。在这个页面中你可以选择操作系统、包管理工具以及 Compute Platform。Compute Platform 一般会列出当前官方支持的 CUDA 版本例如 cu118、cu121、cu124、cu128甚至更新的 cu130具体以你打开页面时显示的选项为准。页面会为你生成一段完整的 pip 安装命令复制下来即可。这里要特别强调一个容易出错的地方很多教程会写死“用 cu118”或“用 cu121”但这些版本会随 PyTorch 版本迭代而变化。安装带 GPU 的 PyTorch 时不要机械套用网上几年前的命令而是要到官方页面选择与你驱动匹配的 CUDA 版本。判断驱动是否支持某个 CUDA 版本并不难只要nvidia-smi显示的 CUDA Version 数值不低于 PyTorch 安装包对应的 CUDA 版本数字一般就不会有兼容性问题。驱动支持的 CUDA 版本过低时PyTorch 虽然能导入但运行到 CUDA 相关操作时可能报错因此版本匹配是这一步的核心。3. 创建虚拟环境并安装 GPU 版 PyTorch3.1 使用官网命令安装 GPU 版本的 PyTorch假设你已经在终端激活了ai_digital_human环境下面以官网常见的 cu121 安装命令为例演示。请密切关注最后一段--index-urlpip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121这个命令看似和普通 pip 安装没有区别核心在于--index-url。它告诉 pip 不要从默认的 PyPI 源安装而是从 PyTorch 官方单独维护的 CUDA wheel 仓库下载安装包。torch是主框架torchvision用于处理图像、视频相关的模型与数据变换torchaudio用于音频数据加载与语音特征提取。在 AI 互动数字人项目中既会用到视频帧、图片特征也会用到音频波形、梅尔频谱所以三个包建议一起安装。如果你的官网页面生成的是其他 CUDA 版本例如cu124或cu128把命令最后的cu121替换成对应值即可。安装完成后可以通过pip list查看已安装的包。如果命令执行过程中出现超时或下载失败通常是网络问题因为带 CUDA 的 wheel 包体积非常大。不要反复在同一个网络环境下重试几十次建议先看一下下面的下载提速方法。3.2 为什么不能用默认 PyPI 源替代以及下载慢怎么办很多开发者为了下载快会把 pip 源切换成清华、阿里等国内 PyPI 镜像然后执行pip install torch。这样做大概率会安装到不包含 CUDA Runtime 的默认构建版本或者至少不能保证是针对你机器 CUDA 驱动编译的 GPU 版本。默认 PyPI 源和 PyTorch 官方download.pytorch.org的源并不是同一个仓库PyPI 源为了兼容性通常会提供不绑定具体 CUDA 版本的通用构建而 CUDA 版本的 wheel 包体积巨大也更适合放在官方独立源中分发。因此安装 GPU 版 PyTorch 时最稳妥的方式是直接使用官方--index-url。如果官方源下载太慢一个简单有效的办法是先用浏览器或下载工具拿到 wheel 包的完整下载地址