Shortcuts

从源码编译 MMCV

编译 mmcv-full

在编译 mmcv-full 之前,请确保 PyTorch 已经成功安装在环境中,可以参考 PyTorch 官方安装文档。可使用以下命令验证

python -c 'import torch;print(torch.__version__)'

注解

注解

  • 如果克隆代码仓库的速度过慢,可以使用以下命令克隆(注意:gitee 的 mmcv 不一定和 github 的保持一致,因为每天只同步一次)

git clone https://gitee.com/open-mmlab/mmcv.git
  • 如果打算使用 opencv-python-headless 而不是 opencv-python,例如在一个很小的容器环境或者没有图形用户界面的服务器中,你可以先安装 opencv-python-headless,这样在安装 mmcv 依赖的过程中会跳过 opencv-python

  • 如果编译过程安装依赖库的时间过长,可以设置 pypi 源

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

在 Linux 上编译 mmcv-full

| TODO: 视频教程

  1. 克隆代码仓库

    git clone https://github.com/open-mmlab/mmcv.git
    cd mmcv
    
  2. 安装 ninjapsutil 以加快编译速度

    pip install -r requirements/optional.txt
    
  3. 检查 nvcc 的版本(要求大于等于 9.2,如果没有 GPU,可以跳过)

    nvcc --version
    

    上述命令如果输出以下信息,表示 nvcc 的设置没有问题,否则需要设置 CUDA_HOME

    nvcc: NVIDIA (R) Cuda compiler driver
    Copyright (c) 2005-2020 NVIDIA Corporation
    Built on Mon_Nov_30_19:08:53_PST_2020
    Cuda compilation tools, release 11.2, V11.2.67
    Build cuda_11.2.r11.2/compiler.29373293_0
    

    注解

    如果想要支持 ROCm,可以参考 AMD ROCm 安装 ROCm。

  4. 检查 gcc 的版本(要求大于等于5.4

    gcc --version
    
  5. 开始编译(预估耗时 10 分钟)

    MMCV_WITH_OPS=1 pip install -e . -v
    
  6. 验证安装

    python .dev_scripts/check_installation.py
    

    如果上述命令没有报错,说明安装成功。如有报错,请查看问题解决页面是否已经有解决方案。

    如果没有找到解决方案,欢迎提 issue

在 macOS 上编译 mmcv-full

| TODO: 视频教程

注解

如果你使用的 mac 是 M1 芯片,请安装 PyTorch 的 nightly 版本,否则会遇到 issues#2218 中的问题。

  1. 克隆代码仓库

    git clone https://github.com/open-mmlab/mmcv.git
    cd mmcv
    
  2. 安装 ninjapsutil 以加快编译速度

    pip install -r requirements/optional.txt
    
  3. 开始编译

    MMCV_WITH_OPS=1 pip install -e .
    
  4. 验证安装

    python .dev_scripts/check_installation.py
    

    如果上述命令没有报错,说明安装成功。如有报错,请查看问题解决页面是否已经有解决方案。

    如果没有找到解决方案,欢迎提 issue

在 Windows 上编译 mmcv-full

| TODO: 视频教程

在 Windows 上编译 mmcv-full 比 Linux 复杂,本节将一步步介绍如何在 Windows 上编译 mmcv-full。

依赖项

请先安装以下的依赖项:

  • Git:安装期间,请选择 add git to Path

  • Visual Studio Community 2019:用于编译 C++ 和 CUDA 代码

  • Miniconda:包管理工具

  • CUDA 10.2:如果只需要 CPU 版本可以不安装 CUDA,安装 CUDA 时,可根据需要进行自定义安装。如果已经安装新版本的显卡驱动,建议取消驱动程序的安装

注解

如果不清楚如何安装以上依赖,请参考Windows 环境从零安装 mmcv-full。 另外,你需要知道如何在 Windows 上设置变量环境,尤其是 “PATH” 的设置,以下安装过程都会用到。

通用步骤

  1. 从 Windows 菜单启动 Anaconda 命令行

    如 Miniconda 安装程序建议,不要使用原始的 cmd.exe 或是 powershell.exe。命令行有两个版本,一个基于 PowerShell,一个基于传统的 cmd.exe。请注意以下说明都是使用的基于 PowerShell

  2. 创建一个新的 Conda 环境

    (base) PS C:\Users\xxx> conda create --name mmcv python=3.7
    (base) PS C:\Users\xxx> conda activate mmcv  # 确保做任何操作前先激活环境
    
  3. 安装 PyTorch 时,可以根据需要安装支持 CUDA 或不支持 CUDA 的版本

    # CUDA version
    (mmcv) PS C:\Users\xxx> conda install pytorch torchvision cudatoolkit=10.2 -c pytorch
    # CPU version
    (mmcv) PS C:\Users\xxx> conda install install pytorch torchvision cpuonly -c pytorch
    
  4. 克隆代码仓库

    (mmcv) PS C:\Users\xxx> git clone https://github.com/open-mmlab/mmcv.git
    (mmcv) PS C:\Users\xxx> cd mmcv
    
  5. 安装 ninjapsutil 以加快编译速度

    (mmcv) PS C:\Users\xxx\mmcv> pip install -r requirements/optional.txt
    
  6. 安装 mmcv 依赖

    (mmcv) PS C:\Users\xxx\mmcv> pip install -r requirements/runtime.txt
    
  7. 设置 MSVC 编译器

    设置环境变量。添加 C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\bin\Hostx86\x64PATH,则 cl.exe 可以在命令行中运行,如下所示。

    (mmcv) PS C:\Users\xxx\mmcv> cl
    Microsoft (R) C/C++ Optimizing  Compiler Version 19.27.29111 for x64
    Copyright (C) Microsoft Corporation.   All rights reserved.
    
    usage: cl [ option... ] filename... [ / link linkoption... ]
    

    为了兼容性,我们使用 x86-hosted 以及 x64-targeted 版本,即路径中的 Hostx86\x64

    因为 PyTorch 将解析 cl.exe 的输出以检查其版本,只有 utf-8 将会被识别,你可能需要将系统语言更改为英语。控制面板 -> 地区-> 管理-> 非 Unicode 来进行语言转换。

编译与安装 mmcv-full

mmcv-full 有两个版本:

  • 只包含 CPU 算子的版本

    编译 CPU 算子,但只有 x86 将会被编译,并且编译版本只能在 CPU only 情况下运行

  • 既包含 CPU 算子,又包含 CUDA 算子的版本

    同时编译 CPU 和 CUDA 算子,ops 模块的 x86 与 CUDA 的代码都可以被编译。同时编译的版本可以在 CUDA 上调用 GPU

CPU 版本
  1. 设置环境变量

    (mmcv) PS C:\Users\xxx\mmcv> $env:MMCV_WITH_OPS = 1
    
  2. 编译安装

    (mmcv) PS C:\Users\xxx\mmcv> python setup.py build_ext  # 如果成功, cl 将被启动用于编译算子
    (mmcv) PS C:\Users\xxx\mmcv> python setup.py develop  # 安装
    
GPU 版本
  1. 设置环境变量

    (mmcv) PS C:\Users\xxx\mmcv> $env:MMCV_WITH_OPS = 1
    
  2. 检查 CUDA_PATH 或者 CUDA_HOME 环境变量已经存在在 envs 之中

    (mmcv) PS C:\Users\xxx\mmcv> ls env:
    
    Name                           Value
    ----                           -----
    CUDA_PATH                      C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2
    CUDA_PATH_V10_1                C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1
    CUDA_PATH_V10_2                C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2
    

    如果没有,你可以按照下面的步骤设置

    (mmcv) PS C:\Users\xxx\mmcv> $env:CUDA_HOME = "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2"
    # 或者
    (mmcv) PS C:\Users\xxx\mmcv> $env:CUDA_HOME = $env:CUDA_PATH_V10_2  # CUDA_PATH_V10_2 已经在环境变量中
    
  3. 设置 CUDA 的目标架构

    # 这里需要改成你的显卡对应的目标架构
    (mmcv) PS C:\Users\xxx\mmcv> $env:TORCH_CUDA_ARCH_LIST="7.5"
    

    注解

    可以点击 cuda-gpus 查看 GPU 的计算能力,也可以通过 CUDA 目录下的 deviceQuery.exe 工具查看

    (mmcv) PS C:\Users\xxx\mmcv> &"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\extras\demo_suite\deviceQuery.exe"
    Device 0: "NVIDIA GeForce GTX 1660 SUPER"
    CUDA Driver Version / Runtime Version          11.7 / 11.1
    CUDA Capability Major/Minor version number:    7.5
    

    上面的 7.5 表示目标架构。注意:需把上面命令的 v10.2 换成你的 CUDA 版本。

  4. 编译安装

    (mmcv) PS C:\Users\xxx\mmcv> python setup.py build_ext  # 如果成功, cl 将被启动用于编译算子
    (mmcv) PS C:\Users\xxx\mmcv> python setup.py develop # 安装
    

    注解

    如果你的 PyTorch 版本是 1.6.0,你可能会遇到一些 issue 提到的错误,你可以参考这个 pull request 修改本地环境的 PyTorch 源代码

验证安装

(mmcv) PS C:\Users\xxx\mmcv> python .dev_scripts/check_installation.py

如果上述命令没有报错,说明安装成功。如有报错,请查看问题解决页面是否已经有解决方案。 如果没有找到解决方案,欢迎提 issue

编译 mmcv

如果你需要使用和 PyTorch 相关的模块,请确保 PyTorch 已经成功安装在环境中,可以参考 PyTorch 官方安装文档

  1. 克隆代码仓库

    git clone https://github.com/open-mmlab/mmcv.git
    cd mmcv
    
  2. 开始编译

    pip install -e . -v
    
  3. 验证安装

    python -c 'import mmcv;print(mmcv.__version__)'
    

在 IPU 机器编译 mmcv

首先你需要有可用的 IPU 云机器,可以查看这里

选项1: 使用 Docker

  1. 拉取镜像

    docker pull graphcore/pytorch
    
  2. 编译 mmcv

选项2: 使用 SDK

  1. 编译 mmcv

  2. 参考 IPU PyTorch document 安装 sdk。

在昇腾 NPU 机器编译 mmcv-full

1. 安装 torch_npu

2. 编译 MMCV NPU

拉取 MMCV 源码 进行编译安装

编译:

MMCV_WITH_OPS=1 MAX_JOBS=8 FORCE_NPU=1 python setup.py build_ext

安装:

MMCV_WITH_OPS=1 FORCE_NPU=1 python setup.py develop

验证:

import torch
import torch_npu
from mmcv.ops import softmax_focal_loss
x = torch.randn(3, 10).npu()
x.requires_grad = True
y = torch.tensor([1, 5, 3]).npu()
w = torch.ones(10).float().npu()
output = softmax_focal_loss(x, y, 2.0, 0.25, w, 'none')

使用说明:

注解

在 tensor 末尾加上 .npu() 就可以调用到 npu 算子

Read the Docs v: v1.7.0
Versions
latest
stable
2.x
v1.7.0
v1.6.2
v1.6.1
v1.6.0
v1.5.3
v1.5.2_a
v1.5.1
v1.5.0
v1.4.8
v1.4.7
v1.4.6
v1.4.5
v1.4.4
v1.4.3
v1.4.2
v1.4.1
v1.4.0
v1.3.18
v1.3.17
v1.3.16
v1.3.15
v1.3.14
v1.3.13
Downloads
On Read the Docs
Project Home
Builds

Free document hosting provided by Read the Docs.