运行深度学习的环境理解及安装;cosyvoice的GPU推理实现;请求头中的请求体编码规则书;

运行深度学习的环境理解及安装;

回顾一下深度学习运行环境问题,与后面遇到的大坑有关,如有不对请指正;

深度学习的环境理解

运行深度学习,必须要安装NVIDIA Driver(显卡驱动)。
CUDA(准确叫 CUDA Runtime)、CUDA Toolkit(开发工具包)以及cuDNN(深度学习加速库)反而是选装。

  1. NVIDIA Driver(显卡驱动)(系统必须安装)
    对应查看命令nvidia-smi (注意:显示的 CUDA 12.8 是驱动支持的最高 CUDA 版本)

  2. CUDA(准确叫 CUDA Runtime)(可选安装)(一般可由pytorch自带)
    GPU 程序运行时用的动态库

  3. CUDA Toolkit(开发工具包)(系统可选安装)
    CUDA Toolkit包含CUDA + 编译器 + SDK + 工具;
    系统级安装它主要是防止一些库系统级的调用,对应验证命令nvcc --version

  4. cuDNN(深度学习加速库)(系统可选安装)
    专门给 CNN / Transformer 用的 GPU 库;
    PyTorch、ORT、TensorRT 都严重依赖它,系统中安装它主要是防止一些库系统级的调用;

  5. PyTorch(最容易让人混的)
    PyTorch基本都自带了CUDA Runtime、cuDNN、cuBLAS、cuFFT、NCCL;
    但是有些库(flash-attn)不会使用PyTorch自带的CUDA Runtime或者cuDNN。
    PyTorch 自带 CUDA,是“私有”的,系统 CUDA + cuDNN,是“公共的”。

cosyvoice的GPU推理实现;

cosyvoice部署完以后,发现根本就没有用GPU进行推理,原因是ONNX Runtime GPU找不到 libcudnn.so.8;

找不到 libcudnn.so.8 → 这是 NVIDIA cuDNN 库,cuDNN 是 CUDA 的深度学习加速库。
ONNX Runtime 尝试使用 CUDA GPU 加速(CUDAExecutionProvider);
系统中没有安装对应版本的cuDNN 库,而ONNX Runtime也没有用PyTorch的cuDNN,于是就产生了这个问题;

ONNX Runtime GPU 没有用 PyTorch wheel 里的 cuDNN,它就去找系统里的cuDNN

  • PyTorch GPU ✅ 能跑
  • ONNX Runtime GPU ❌ 找不到cuDNN的libcudnn.so.8

所以 GPU 推理失败,ONNX 会退回 CPU 推理。
要让 ONNX Runtime 正常用 GPU,需要安装cuDNN到系统里面;

请求头中的请求体编码规则书;

因为以前没用过拿python做服务,所以看到python直接从请求体直接拿参数有点懵,于是再重新整理一下;

请求头中Content-Type其实就是告诉后端:
我接下来 body 里的内容,指定的规则进行解析

  • Content-Type:text/plain 👉请你 按 text 规则解析
  • application/json 👉请你 按 json 规则解析
  • application/x-www-form-urlencoded 👉简单 key-value
  • multipart/form-data 👉请求规则解析里可以混:文本 + JSON + 文件

之前所有的模型都需要传文件,一直都是用的multipart/form-data规则解析
UploadFile + JSON Form,
JSON Form有两种校验方式:

  1. 通过后端json.loads转为json格式,
  2. 更优雅一点通过以下方式👇结构校验
class Config(BaseModel):
    texts: list[str]
    threshold: float
config_obj = Config.model_validate_json(config)

所以请求中没有文件就可以用application/json规则解析,直接从请求体拿参数最方便;
但只要请求里有文件,真实的 Content-Type 一定是 multipart/form-data,JSON 只能“塞进字符串里”,不能当顶层结构

posted @ 2026-02-05 17:27  asphyxiasea  阅读(6)  评论(0)    收藏  举报