如果你是按《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 python=3.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 版 PyTorch

3.1 使用官网命令安装 GPU 版本的 PyTorch

假设你已经在终端激活了 ai_digital_human 环境,下面以官网常见的 cu121 安装命令为例演示。请密切关注最后一段 --index-url :

pip 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 包的完整下载地址

Logo

火山引擎视频云技术社区,是面向 AI 音视频开发者的技术交流平台。这里汇聚源自抖音、豆包等亿级 DAU 产品的 RTC、直播、点播、AI 媒体处理、音视频互动技术,提供接入指南、最佳实践、性能调优、场景案例、Demo 代码、开源项目、白皮书和 API 文档。社区汇聚官方工程师与一线开发者,为 AI 视频通话、数字人、AI 视频处理等应用的开发与落地提供技术支持。

更多推荐