十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Detectron2 构建时提示 “nvcc not found“ 怎么解决

Detectron2 构建时提示 “nvcc not found“ 怎么解决 Detectron2 构建时提示 nvcc not found 怎么解决【免费下载链接】detectron2Detectron2 is a platform for object detection, segmentation and other visual recognition tasks.项目地址: https://gitcode.com/GitHub_Trending/de/detectron2从源码构建 Detectron2 时如果构建日志里出现nvcc not found、Not compiled with GPU support或Detectron2 CUDA Compiler: not availableINSTALL.md 给出的解释只有一句话构建 detectron2 时没有找到 CUDA。这篇文章按官方 FAQ 的路径说明如何确认构建环境能否被 PyTorch 看到 CUDA、如何清理旧的构建产物并重建以及构建后如何核对结果。适用于在 Linux 或 macOS 上、Python ≥ 3.7、PyTorch ≥ 1.8 的环境里从源码安装 detectron2 的读者。先理解这个报错的触发条件setup.py 里的get_extensions()决定了构建走哪条编译路径只有当torch.cuda.is_available()为真且torch.utils.cpp_extension.CUDA_HOME不为None时或者显式设置了环境变量FORCE_CUDA1才会使用CUDAExtension去编译.cu源码也就需要调用 nvcc。换句话说出现nvcc not found说明构建时 PyTorch 认为“要用 CUDA 编译”但系统里找不到 nvcc 可执行文件。所以解决方向只有两条且都必须以 INSTALL.md 的官方判定标准为准让构建时的 PyTorch 环境能看到一个有效的 CUDA 目录如果环境里根本没有 GPU就退回到纯 CPU 的使用方式后面单独说明。第一步确认构建环境能否看到 CUDA在准备构建 detectron2 的那个 Python 环境里运行 INSTALL.md 给出的检查命令python -c import torch; from torch.utils.cpp_extension import CUDA_HOME; print(torch.cuda.is_available(), CUDA_HOME)官方要求在构建 detectron2 的时刻这条命令应打印(True, a directory with cuda)即 GPU 可用且CUDA_HOME指向一个真实存在的 CUDA 目录。注意 INSTALL.md 特别强调是 “at the time you build detectron2”——如果你平时用 venv/conda 环境构建时必须激活同一个环境再跑这条命令。如果输出不符合预期GPU 不可用或CUDA_HOME为None说明当前 PyTorch 装的就是不带 CUDA 的构建或系统里没装 PyTorch 能识别的 CUDA。INSTALL.md 的“Common Installation Issues”中多个相邻条目如invalid device function、Undefined CUDA symbols给出了同一类修复方向二选一安装一个与你本地 CUDA 版本匹配的 PyTorch 构建或自行编译 PyTorch安装一个与你当前 PyTorch 匹配的 CUDA 版本。INSTALL.md 的 Requirements 部分还要求 PyTorch ≥ 1.8 与 torchvision 版本互相匹配建议从 PyTorch 官网一并安装并保证 gcc g ≥ 5.4。第二步清理旧构建产物并重建改好环境重装 PyTorch 或补装 CUDA之后必须清掉旧的构建产物再重新构建。INSTALL.md 原文# 对本地 clone 构建的 detectron2先清理旧的 build 产物 rm -rf build/ **/*.so这条命令会删除 detectron2 源码目录下的build/目录和所有.so编译产物只影响当前这个源码目录不会影响已安装的其它 Python 包。INSTALL.md 同时指出“You often need to rebuild detectron2 after reinstalling PyTorch.”——重装过 PyTorch 就应重建否则二进制扩展还是按旧环境编译的。清理后重新执行构建二选一均来自 INSTALL.md# 本地 clone 后安装 python -m pip install -e detectron2 # 或直接从 git 仓库安装 python -m pip install githttps://github.com/facebookresearch/detectron2.git # 没有写权限时可加 --user在 macOS 上INSTALL.md 建议给上面的安装命令加前缀环境变量CCclang CXXclang ARCHFLAGS-arch x86_64 python -m pip install ...第三步构建后核对 CUDA 版本是否一致构建完成后用python -m detectron2.utils.collect_env检查环境汇总。该命令的实现见 collect_env.py输出中包含几项直接相关的信息CUDA_HOME如果该目录不存在输出会额外标注- invalid!CUDA compiler即 nvcc 的版本如果_C扩展没构建好会打印detectron2._C: not built correctly: ...。INSTALL.md 对 CUDA 相关故障的统一判据是在collect_env的输出里Detectron2 CUDA Compiler、CUDA_HOME、PyTorch built with - CUDA三处应指向相同版本的 CUDA 库不一致时就需要按第一步的两种方式让 PyTorch 与本地 CUDA 匹配。没有 GPU 时的替代路径如果你只是想跑推理、机器上没有可用 GPUINSTALL.md 明确说明大多数模型可以在没有 GPU 支持的情况下运行推理但不能训练做法是在 config 里设置MODEL.DEVICEcpu。对应地由 setup.py 的判定逻辑可知当torch.cuda.is_available()为假且CUDA_HOME为None时构建本身就走CppExtension纯 CPU 路径不再需要 nvcc。反过来要留意FORCE_CUDA1会强制进入 CUDA 编译路径在 CUDA 不可见的环境里设置它只会让报错更直接不是解决方案。小结排查顺序在构建所用的同一环境里运行检查命令确认输出为(True, a directory with cuda)不符合就调整 PyTorch/CUDA 的匹配关系按 INSTALL.md 建议从官方渠道安装匹配版本rm -rf build/ **/*.so清理后重新pip install用python -m detectron2.utils.collect_env核对CUDA_HOME、CUDA compiler等字段确认没有- invalid!或not built correctly。文档边界INSTALL.md 只针对 “nvcc not found” 给出上述检查与清理重建流程没有给出具体某版本 CUDA 的安装命令不同 CUDA 与 PyTorch 构建的对应关系需要以 PyTorch 官方发布渠道的说明为准。【免费下载链接】detectron2Detectron2 is a platform for object detection, segmentation and other visual recognition tasks.项目地址: https://gitcode.com/GitHub_Trending/de/detectron2创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表