Files
insightface/recognition/partial_fc/mxnet/README_CN.md
2022-03-30 19:03:03 +08:00

125 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## 目录
## Contents
[Partial FC](https://arxiv.org/abs/2203.15565)
- [如何安装](#如何安装)
- [如何运行](#如何运行)
- [错误排查](#错误排查)
## 如何安装
### 1. python依赖
使用以下命令
```shell script
pip install easydict mxboard opencv-python tqdm
```
### 2. 安装nccl
nccl可以不用装但是装上速度更快nccl安装需要对应cuda版本安装方法参考下边链接:
[**NCCL**](https://docs.nvidia.com/deeplearning/nccl/install-guide/index.html)
### 3. 安装openmpi
openmpi必须安装必须采纳我的脚本编译源码安装
[**OpenMPI**](setup-utils/install-mpi.sh)
### 4. 安装horovod, mxnet
有些版本的mxnet的horovod无法安装参考下方表格强烈建议使用**mxnet==1.6.0**和**cuda==10.1**
| mxnet |horovod | cuda |
| :---: | :--- | :---: |
| 1.4.0 | x | x |
| 1.5.0 | 可以安装 | cuda10.0 |
| 1.5.1 | x | x |
| 1.6.0.post0 | 可以安装 | cuda10.1 |
| 1.7.0 | x | x |
horovod 安装方法如下:
[**Horovod**](setup-utils/install-horovod.sh)
horovod 安装完成后使用下面的命令检查horovod是否安装成功(nccl有没有都可以有nccl会更快)
```shell script
# Horovod v0.19.2:
# Available Frameworks:
# [ ] TensorFlow
# [ ] PyTorch
# [X] MXNet
#
# Available Controllers:
# [X] MPI
# [X] Gloo
#
# Available Tensor Operations:
# [X] NCCL
# [ ] DDL
# [ ] CCL
# [X] MPI
# [X] Gloo
```
### 5. ssh无密登录
使用多机分布式训练的时候,每台机器都需要设置无密登录,包括自己与自己,无密码登录具体可见:
这里推荐一个简单的命令:
```shell script
ssh-copy-id user@ip
```
## 如何运行
`horovod`底层调用的还是`mpi`mpi的概念是你有多少块GPU就要启动多少个进程有两种方法启动训练使用`horovodrun`或者`mpirun`。
### 1. 使用 horovodrun 运行
运行8卡(单机)
```shell script
horovodrun -np 8 -H localhost:8 bash config.sh
```
运行16卡(两台机器)
```shell script
horovodrun -np 16 -H ip1:8,ip2:8 bash config.sh
```
### 2. 使用 mpirun 运行
```shell script
bash run.sh
```
## 错误排查
QQ群711302608
### 检查Horovod是否安装成功
运行这个命令 `horovodrun --check` 来检查horovod是否安装成功。
### 检查你的CUDA版本是否与mxnet匹配比如mxnet-cu101需要的cuda版本为CUDA10.1
```shell script
# Make sure your cuda version is same as mxnet, such as mxnet-cu101 (CUDA 10.1)
/usr/local/cuda/bin/nvcc -V
# nvcc: NVIDIA (R) Cuda compiler driver
# Copyright (c) 2005-2019 NVIDIA Corporation
# Built on Wed_Apr_24_19:10:27_PDT_2019
# Cuda compilation tools, release 10.1, V10.1.168
```
### 屏蔽IO对训练速度的影响
可以在`config.py`中开启debug模式来屏蔽IO看看是否是IO对性能的影响。
### 将数据挂载到内存盘来提高训练速度。
如果你发现你训练速度的瓶颈是IO的话你可以把数据挂载到内存盘来提高训练的速度挂载的命令如下
需要注意的是你的RAM必须足够的大。
```shell script
# If your RAM has 256G
sudo mkdir /train_tmp
mount -t tmpfs -o size=140G tmpfs /train_tmp
```