AI数字人与WebRTC实战:GPU版PyTorch安装排错指南

AI数字人与WebRTC实战:GPU版PyTorch安装排错指南 做 AI 互动数字人加 WebRTC 音视频实战最绕不开的一步就是装支持 GPU 的 PyTorch。数字人模块里的语音驱动、口型生成、人脸渲染和对话模型绝大多数都要跑在 PyTorch 上WebRTC 负责把实时画面和声音送到浏览器端但真正的模型推理压力仍然集中在 GPU。装完 GPU 版之后很多人在验证阶段会直接卡住最常见的就是torch.cuda.is_available()返回 False或者import torch本身报错。我自己的建议是不要一开始就盯着“哪个命令能装上”先把 PyTorch、NVIDIA 驱动、CUDA 三者之间的关系弄清楚。版本对不上后面跑数字人工程时会出现各种奇怪问题而且排查成本很高。这篇内容按“需求分析 - 版本确认 - 安装 - 验证 - 排错”的顺序讲重点保证一件事让 PyTorch 真正吃到 GPU能用于后续数字人和 WebRTC 工程的联调。1. 先搞清楚数字人项目里的 GPU 压力到底在哪在装环境之前先想一个问题数字人工程里GPU 到底负责干什么很多人会以为 WebRTC 是音视频服务装了 GPU 就能让画面更流畅其实不是。PyTorch 的 GPU 版本主要服务于模型推理和 WebRTC 的推流、拉流、媒体转发是两回事。1.1 数字人 WebRTC 链路中GPU 更多花在模型推理上一个典型的 AI 互动数字人后端大概长这样浏览器或者客户端采集画面和声音通过 WebRTC 推到服务端服务端拿到音频后可能需要调用语音识别、语音合成、对话模型、口型驱动等能力最后把实时生成的画面和声音再通过 WebRTC 拉回浏览器。这里面WebRTC 只负责传输。真正消耗算力的是语音合成模型和数字人驱动模型。比如根据一段音频去生成口型、表情、头部姿态这些操作最终都会变成 PyTorch 张量计算。如果你的数字人还要接大语言模型做实时对话那又多了文本生成这一层。在 CPU 上跑这些模型不是完全不能跑而是实时性很难保证。单次推理可能从几百毫秒到几秒不等。放在演示环境里勉强能看一旦同时收到多个用户请求CPU 会被立刻打满。所以安装支持 GPU 的 PyTorch目标不是让 WebRTC 更流畅而是让数字人后端的模型推理更快、吞吐更高。理解了这一点后面配置环境时就不会把注意力放偏。1.2 NVIDIA 驱动、CUDA 和 PyTorch 三者是什么关系这个问题是新手最容易糊涂的地方。我们平时说的“安装 CUDA”有时候指的是安装 NVIDIA 驱动有时候指的是安装 CUDA Toolkit有时候又指安装 PyTorch 的 CUDA 版本。其实它们是三层不同的东西。NVIDIA 驱动是操作系统和显卡之间的桥梁。没有驱动系统认不到显卡后面的 CUDA、PyTorch 都用不了。CUDA 是 NVIDIA 提供的并行计算平台。PyTorch 官方发布的 GPU 版本会在安装包里带上编译好的 CUDA runtime 相关库所以我们不一定需要在系统里手动安装完整的 CUDA Toolkit。PyTorch 是最上层。它调用 CUDA 提供的接口把神经网络计算分发到 GPU 上执行。打个比方驱动是路CUDA 是交规PyTorch 是跑在路上的车。路太旧新车跑不了路太新而车没升级那只是没有充分利用路况而已好在 NVIDIA 驱动通常向后兼容。真正需要关注的是驱动版本能不能支撑你选的 PyTorch 版本。命令行输入nvidia-smi后右上角会显示一个CUDA Version。这个版本不是指你机器里已经装好了对应 CUDA Toolkit而是指当前驱动最高支持到哪个 CUDA 版本。如果你安装的 PyTorch 要求更高版本装的时候不一定报错但一旦把模型放到 GPU 上运行就可能出现CUDA driver version is insufficient。1.3 先按硬件和场景决定安装路径开始安装前先确认机器上到底有没有 NVIDIA 显卡。在 Linux 或 Windows 终端中输入nvidia-smi如果有完整的表格输出能看到显卡型号、显存、驱动版本和右上角的 CUDA 版本说明驱动是好的。如果提示找不到命令先检查 NVIDIA 驱动有没有装好。有 NVIDIA 显卡再考虑装 GPU 版 PyTorch。如果没有 NVIDIA 显卡比如是 Apple Silicon 的 MacPyTorch 可以使用 MPS 后端的苹果 GPU如果只是学习先用 CPU 版把流程跑通也没有问题等正式训练或推理时再换 GPU 机器。数字人项目如果上生产我会更推荐使用容器。用官方 PyTorch 镜像配合 NVIDIA Container Toolkit能减少很多本地环境冲突。但容器方案依赖已经存在的基础镜像如果项目是第一次从零搭建还是要先从本机的 Python 虚拟环境开始。2. 安装前先收集版本信息别看到命令就复制很多安装失败不是命令敲错了而是安装前没有确认版本。比如驱动版本太低、Python 版本不对、conda 环境没激活这些都会导致后面跑数字人工程时无法定位问题。2.1 查看显卡、驱动和 Python 版本打开终端先执行下面几条命令nvidia-smi python3 --version python --version where python # Windows which python # Linux / macOSnvidia-smi输出里的Driver Version表示当前驱动版本CUDA Version表示驱动能支持的最高 CUDA 版本。Python 版本要重点看。PyTorch 的官方安装页会标明支持哪些 Python 版本如果项目用的是 Python 3.8、3.10 或 3.11要保证你当前正在使用的 Python 和 conda 环境匹配。很多 Windows 上的坑是系统里有多个 Python终端敲python时用的不是虚拟环境里的解释器。2.2 nvidia-smi 右上角的 CUDA Version 不是已安装版本这里几乎每次都要强调一遍nvidia-smi右上角的CUDA Version不代表你已经安装了 CUDA Toolkit。比如你的驱动显示 CUDA Version 是 12.2这说明当前驱动最高能支持到 CUDA 12.2。PyTorch 官方如果发布了基于 CUDA 12.1 或 12.2 的安装包正常来说可以跑。但你不能因为这个数字是 12.2就以为驱动已经帮你装好了 CUDA也不需要额外配置了。真正安装 PyTorch 时PyTorch 会带入自身需要的 CUDA 相关库。我们需要保证的是驱动能支持 PyTorch 对应的 CUDA 运行版本。2.3 查看显卡算力老显卡尤其要注意NVIDIA 显卡除了看型号还要关心 Compute Capability也就是计算能力。不同架构的显卡对 CUDA 版本的支持范围不一样。太老的显卡比如 GTX 10 系列如果安装最新版 PyTorch有可能出现CUDA error: no kernel image is available for execution on the device这种情况不是没装好而是新版本的 PyTorch 没有针对老架构生成可执行内核或者驱动版本太新、显卡算力不支持。可以先在 NVIDIA 官网查这张显卡的 Compute Capability再决定 PyTorch 版本。如果查不到最稳妥的办法是先用一个中等版本的 PyTorch 尝试比如标题带 cu118 或 cu121 的安装包不要一上来就装最新版本。3. 在 Linux 上安装 GPU 版 PyTorch 的完整流程Linux 服务端是数字人项目最常见的使用环境。下面这套流程不是让你无脑复制而是先把每一步的目的讲清楚。具体命令里的版本号会随时间变化最终要打开 PyTorch 官网的 Install 页面选择你的系统、包管理器、CUDA 版本拿到当时最新的安装命令。3.1 创建独立的 Python 虚拟环境数字人项目通常依赖特别多有 PyTorch、OpenCV、音频处理库、WebRTC 封装库等。如果直接装在系统 Python 或者 conda 的 base 环境里很容易产生依赖冲突。推荐用 conda 创建独立环境conda create -n digital_human python3.10 -y conda activate digital_human这里用 Python 3.10 只是示例。最终用哪个版本要以你下载的数字人项目代码为准很多项目会在requirements.txt或README里写明。激活环境后再确认一下当前 Python 路径which python python --version如果路径里面没有digital_human说明 conda 环境没有正确激活需要先检查 conda 本身的初始化配置。3.2 使用官方 index-url 安装 PyTorch而不是默认 pip install torchPyTorch 官方推荐的安装方式是使用带有index-url的 pip 命令。这样能确保安装的是带 CUDA 支持的 wheel 包而不是不包含 GPU 支持的版本。下面是一条示例命令pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121注意cu121是示例表示 CUDA 12.1。具体数字要按官网实际页面选择。如果你的机器驱动版本较新可以选更新的 CUDA 版本如果是老显卡优先考虑 cu118 或更早的版本。这条命令执行前还需要确认两件事是否已经把虚拟环境激活。显卡驱动是否能支撑这个 CUDA 版本。安装过程中如果网络不稳定可以给 pip 加长超时时间pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121 --timeout 600安装完成后用pip list看一下版本pip list | grep torch正常会显示 torch、torchvision、torchaudio 三个包。如果结果显示的版本不是带cu121之类的后缀有可能是从默认 PyPI 源安装了另一份这会直接影响后续 GPU 验证结果。3.3 安装数字人项目里其他依赖时的注意事项PyTorch 装好后再安装数字人项目的其他依赖。常用命令是pip install -r requirements.txt但这里有一个很常见的坑如果requirements.txt里也写了torch后面安装可能会把刚装好的 GPU 版覆盖成默认版本。建议在安装项目依赖前先看一下需求文件里对 torch 的约束grep -i torch requirements.txt如果文件里写了torch2.0或者torch2.1.2在安装时很容易从 PyPI 重新拉取一份。更稳妥的做法是在requirements.txt里固定让它读本地的已安装版本或者把 torch 从需求列表里去掉使用单独维护的 GPU 版本安装命令。数字人项目里还会遇到一堆编译相关的基础库比如 cmake、ninja、opencv-python。这些库本身不参与 PyTorch 的 GPU 计算但它们可能在安装时依赖默认 Python 环境。如果安装某个库时报了编译器错误先安装系统编译工具sudo apt update sudo apt install build-essential cmakeCentOS 或 RHEL 类的系统则用 yum 安装对应的 gcc、g、cmake。这部分环境和你的服务器发行版强相关不要只在报错时改 PyTorch 版本先确认为什么编译失败。3.4 验证 PyTorch 是否能调用 GPU安装完成后用一段最小验证代码确认 GPU 可用python -c import torch; print(torch.__version__); print(torch.cuda.is_available()); print(torch.version.cuda)如果返回2.3.1cu121 True 12.1说明当前环境的 PyTorch 是 GPU 版本CUDA 运行时也能正常加载。如果第一行是纯版本号没有cu后缀说明安装的可能不是 GPU wheel。想看到具体的显卡名称和计算能力可以再执行python -c import torch; print(torch.cuda.get_device_name(0)); print(torch.cuda.get_device_capability(0))这里我先强调一个经验不要在验证时急着加载完整数字人模型。先用官方自带的 CUDA 检查代码确认环境再加载模型这样能把“环境问题”和“模型问题”分开。很多人一上来就加载一个 2GB 的权重文件结果报错后分不清是显卡驱动问题还是模型代码问题。4. 在 Windows 上安装 PyTorch GPU要注意这些差异Windows 也是常见的数字人本地调试环境。大部分流程和 Linux 一样但有几个点特别容易踩坑。4.1 激活独立环境后再安装避免 Python 混乱Windows 上如果安装了多个 Python 环境比如官网安装包、Anaconda、Miniconda 同时存在终端里的python命令指向谁会直接影响安装结果。创建并激活环境conda create -n digital_human python3.10 -y conda activate digital_human然后检查where python where nvidia-smiwhere python应该显示当前 conda 环境路径。where nvidia-smi应该能找到 NVIDIA 驱动自带的命令。如果找不到 nvidia-smi检查驱动是否安装完整或者 PATH 环境变量里是否包含 System32。Windows 上还有个容易忽略的问题安装路径中如果有中文、空格或特殊符号可能导致torch.hub下载权重、本地模型加载失败。项目路径尽量保持简单比如D:\code\digital_human。4.2 官方命令下载慢不要随意换成 CPU 镜像PyTorch 的 GPU wheel 体积很大动辄 1GB 以上。Windows 下如果直接使用官方地址下载很慢可以开一个临时显存缓存目录或者用支持断点续传的下载工具但核心命令仍然要从官方页面拿。这里特别注意很多人会因为下载慢把安装源换成国内 pip 镜像。问题是某些镜像源同步的 may be CPU 版本或者没有及时更新 GPU 版本。装完后torch.cuda.is_available()返回 False你再回头排查时间成本更高。如果实在网络不稳定更推荐的做法是第一次先用 conda 的集合安装包试试或者找一个离你近的 PyTorch wheel 镜像源但装完后必须执行我上面写的验证代码。4.3 缺少 DLL 或编译库时先看 VS Build ToolsWindows 上最常见的安装问题之一是ImportError: DLL load failed while importing torch出现这个问题不一定是 PyTorch 没装好。先检查三件事NVIDIA 驱动是否正常nvidia-smi是否能输出。PyTorch 是从哪个源安装的虚拟环境是否干净。系统是否有 C 运行库。如果后面还要编译 WebRTC 客户端 SDK 或者数字人相关的 C 扩展Python 环境需要和 Visual Studio Build Tools 配合。即使只是安装 PyTorch也建议先装好 VC 运行库不要等到报错时再一个个猜。4.4 Windows 下不要所有项目都共用 base 环境Windows 本机调试时很多人习惯直接打开 Anaconda Prompt在 base 环境里跑所有项目。这种方式在数字人项目里非常危险。原因是数字人项目需要的依赖太多了。base 环境里可能已经有旧版 torch、旧版 numpy、旧版 opencv安装新项目时 pip 会尝试升级或卸载已有包最后可能导致系统里其他脚本也跑不了。我一般会为每个数字人项目建一个独立 conda 环境环境名和项目名保持一致。这样做的好处是把调试记录和环境污染隔离。后面如果遇到找不到原因的问题直接删除环境重建比重装驱动、卸载 Anaconda 快得多。5. 装完不是结束放回数字人和 WebRTC 工程里实测环境验证通过后不要急着欢呼。很多项目的模型代码里可能根本没有把数据放到 GPU 上或者保存模型时把权重保存成了 CPU 版本导致安装成功但模型仍然跑在 CPU 上。5.1 数字人模型代码里需要显式指定设备PyTorch 不会因为你安装了 GPU 版就让所有模型自动运行在 GPU 上。代码里必须做两件事。第一指定设备import torch device torch.device(cuda if torch.cuda.is_available() else cpu) model model.to(device)第二推理时把输入数据也放到同一个设备上input_tensor input_tensor.to(device) output model(input_tensor)如果数字人项目里用的是现成框架一般在配置文件里会有一个device或者use_gpu选项。直接改成cuda再试运行。如果代码里到处写的是.cpu()或者没传device即使 PyTorch 装的是 GPU 版实际仍在使用 CPU。5.2 加载旧权重时注意权重保存设备很多数字人模型是直接提供.pth或者.pt权重文件的。如果作者保存权重时是在 CPU 上加载到 GPU 时需要加map_locationstate_dict torch.load(model_path, map_locationcuda)如果不加PyTorch 可能试图先按照保存时的设备加载然后转换有时候会报错有时候又会隐式降级到 CPU。等你跑起来一看发现模型计算仍然很慢才意识到设备没有指定对。我自己踩过的一个坑是项目配置文件默认写devicecpu代码虽然支持 GPU但优先读取配置文件。安装完 GPU 版 PyTorch 后以为会自动变快实际一直跑在 CPU 上。所以装完环境后一定要在项目日志里打印当前使用的设备不要只看nvidia-smi的显存占用。5.3 用最小推理测试看延迟和显存占用数字人工程最关心的是实时性。在正式联调 WebRTC 之前可以用最小模型跑一次完整推理统计延迟和显存占用。计时时不要忘了做 CUDA 同步import torch import time torch.cuda.synchronize() start time.perf_counter() # 这里放模型推理 torch.cuda.synchronize() elapsed time.perf_counter() - start print(finference time: {elapsed:.4f}s)如果不加torch.cuda.synchronize()PyTorch 的一些算子会异步执行计时结果会偏小看起来很快实际上端到端并没有那么快。显存占用的查看方法仍然是nvidia-sminvidia-smi或者循环查看nvidia-smi -l 2在 Windows PowerShell 里也可以使用nvidia-smi --loop2观察显存变化时要区分是模型加载占用的显存还是推理过程中动态分配的中间张量。5.4 数字人服务跑起来后再和 WebRTC 做端到端验证环境安装的最终验证要看整个数字人服务能不能在 GPU 推理的情况下稳定跑通。建议按下面顺序做一次全链路测试。先启动 WebRTC 信令服务和媒体服务浏览器端能正常推流、拉流。不要在这个阶段加载模型先确认音视频链路是通的。再启动数字人模型服务用测试音频跑一次离线推理确认输出画面、音轨基本正常。此时主要看模型有没有报错显存有没有超限。最后把两边串起来浏览器推流到服务端服务端触发数字人推理把结果回推给浏览器。这个过程中如果出现画面卡顿先用时间戳判断卡在 WebRTC 传输还是模型推理。比较常见的现象是模型推理占用 GPU 时显卡驱动把其他任务阻塞了。如果发现视频卡顿但模型服务本身没有报错可以先降低推理的输入分辨率或者把数字人前置流程改成队列模式不要让每个请求都在 GPU 上并行猛冲。6. 常见报错和排查顺序GPU 版 PyTorch 安装过程中会遇到的问题大多数有通用规律。下面列一个现象和优先检查点的对照表比一句一句看报错快得多。现象优先检查点nvidia-smi无法运行NVIDIA 驱动未安装或未正确加载torch.cuda.is_available()返回 Falsetorch 是否从官方 index-url 安装驱动版本是否太低import torch 时报 DLL 加载失败VC 运行库、Python 位数、虚拟环境是否干净报错CUDA driver version is insufficient显卡驱动版本低于 PyTorch 所需 CUDA 版本报错no kernel image is available显卡太老PyTorch 版本不支持当前显卡算力加载权重时显存不足模型太大 / 批处理数量太高 / 其他进程占用显存程序正常运行但模型速度没有明显提升代码里没有把模型和输入放到 GPU 上6.1 先确认 GPU 和驱动状态排查顺序不要乱来。第一步永远先执行nvidia-smi这一步能确认显卡看得见、驱动正常运行。如果这一步都不行后面所有操作都不用继续。nvidia-smi正常后再执行 PyTorch 检查import torch print(torch.__version__) print(torch.version.cuda) print(torch.cuda.is_available())这里有个细节torch.version.cuda返回的是 PyTorch 编译时使用的 CUDA 版本。如果这个值不是 None说明当前 torch 包确实带有 CUDA 支持。如果它是 None那基本可以断定安装的是 CPU 版本的 torch。6.2 版本不匹配时的处理顺序如果 PyTorch 能正常导入但torch.cuda.is_available()返回 False优先查看当前 PyTorch 是怎么装的。python -m pip show torch注意输出里的Location字段。如果显示的位置不在你当前 conda 环境里说明 pip 实际安装到了其他 Python 环境。这种情况在多个 Python 并存时特别常见。接下来对比驱动支持的 CUDA 版本和 PyTorch 要求的 CUDA 版本。驱动版本如果偏低有两个选择升级 NVIDIA 驱动到支持更高 CUDA 版本的版本。卸载当前 PyTorch安装更早的 CUDA 版本对应的包。不要同时进行。先做其中一个再验证。6.3 老显卡和新 PyTorch 不兼容时的解决方法老显卡遇到no kernel image is available for execution on the device时说明 PyTorch 的二进制里没有针对你显卡架构的算子。此时换 PyTorch 版本比换驱动更有效。具体做法pip uninstall torch torchvision torchaudio -y pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118cu118 在老显卡上通常兼容度会好一些。如果还是不行可以选择 CPU 版本先用起来或者换一张架构更新的显卡。这里要特别提醒不要因为老显卡不兼容新版本就去修改什么底层配置文件或者强行绕过检查。那样做很容易引入更多不稳定因素。数字人项目更需要稳定可复现的环境而不是极限压榨一张老显卡。6.4 环境乱到无法定位时直接重建虚拟环境如果尝试了各种办法PyTorch 仍然时好时坏最节省时间的方案并不是继续卸载安装而是删除整个虚拟环境重新创建。conda deactivate conda env remove -n digital_human -y conda create -n digital_human python3.10 -y conda activate digital_human然后严格按照官网命令安装 PyTorch再安装项目其他依赖。这样做虽然要重新下载一遍依赖但比在乱掉的环境中一个个排查要稳得多。6.5 不要把所有报错都推到 PyTorch 上数字人工程里还经常出现一种情况PyTorch 明明验证通过但项目启动后仍然报错。此时要看一下报错栈里具体是哪个模块。比如import cv2失败比如 WebRTC 相关扩展库找不到这些和 PyTorch GPU 安装没有直接关系。先单独处理对应模块不要一上来就把 PyTorch 卸载重装。判断依据很简单用最小验证脚本只 import torch如果一切正常那就说明 PyTorch 环境没有问题。问题出在数字人项目的其他依赖上。7. 安装完成后的几个长期建议到这里GPU 版 PyTorch 已经能正常运作了数字人项目也能把模型放到 GPU 上推理。下面再补充几条在真实项目里长期有用的经验。7.1 把 GPU 环境检查写成一个脚本推荐在项目里放一个check_gpu.py脚本内容固定为import platform import torch import sys print(python:, sys.version) print(platform:, platform.platform()) print(torch:, torch.__version__) print(cuda runtime:, torch.version.cuda) print(cuda available:, torch.cuda.is_available()) if torch.cuda.is_available(): print(gpu name:, torch.cuda.get_device_name(0))以后每次项目部署或换机器时先跑这个脚本。它能帮你快速确认环境是否满足要求避免在项目主流程里被各种奇怪问题干扰。7.2 多条 GPU 时用环境变量指定设备服务器如果有多张显卡PyTorch 默认使用的是cuda:0。但cuda:0不一定是你想用的卡也不一定显存最大。通过nvidia-smi先确认可用显存再指定设备export CUDA_VISIBLE_DEVICES1 python main.py代码里也可以写device torch.device(cuda:1)注意如果设置了CUDA_VISIBLE_DEVICES1代码里实际看到的设备索引会被重新映射cuda:1可能就不存在了。所以更稳妥的做法是在代码里读取环境变量而不是写死设备索引。7.3 模型加载逻辑不要重复执行数字人在线服务经常会使用 WebSocket 或者 HTTP 接口。如果把模型加载放到每次请求的处理函数里相当于每个用户进来都会加载一次模型显存很快就会耗尽。更合适的方式是启动服务时加载模型保存在全局变量或单例对象里请求只做 model inference。_model None def get_model(): global _model if _model is None: _model load_model() return _model很多数字人 WebRTC 服务是长连接模式同一时间在线用户可能很多。重复加载模型会引发两个问题一是显存不够二是加载耗时导致请求超时。务必在项目初始阶段就把模型生命周期设计好。7.4 端到端性能优化时先分清瓶颈GPU 安装完成后如果数字人和 WebRTC 联调时机仍然卡顿不要只盯着显卡利用率。瓶颈可能在 WebRTC 的编码、网络带宽、服务端媒体转发、模型推理队列甚至可能是磁盘读取权重太慢。排查顺序建议看 GPU 利用率是不是接近 100%如果是考虑优化模型或降低分辨率。看 CPU 利用率是否被媒体处理打满如果是把媒体服务和 AI 推理服务拆开。看 WebRTC 推流端和拉流端的网络延迟判断是网络问题还是服务端处理速度问题。看服务进程是否有明显的排队等待时间比如多个用户同时点击时请求是否串行。有一次我遇到的情况是GPU 利用率不高画面还是卡。后来才发现是音频切片等待时间太长模型一直没拿到足量的输入数据。所以不要只盯着 GPU 安装和显存整个数据处理链路都要看。7.5 版本升级和项目隔离数字人项目依赖的大模型、人脸驱动、语音合成框架迭代很快PyTorch 版本升级后很多第三方扩展不一定能立刻适配。尤其是老权重文件、老服务框架升级 PyTorch 后可能出现输出不一致或者算子兼容问题。我的习惯是项目建立时固定 PyTorch 大版本并在requirements-gpu.txt里单独保存 GPU 安装命令。上线后除非有明确需求否则不随便执行pip install --upgrade torch。安装支持 GPU 的 PyTorch 只是数字人与 WebRTC 实战链路里的一小步。真正让项目稳定跑起来还要靠环境规范、版本锁定和清晰的日志。以后遇到模型变慢、显存溢出、启动失败先回到环境检查这一步会省下很多排查时间。