Vega简介
Vega是诺亚方舟实验室自研的AutoML算法工具链,有主要特点:
- 完备的AutoML能力:涵盖HPO(超参优化, HyperParameter Optimization)、Data-Augmentation、NAS(网络架构搜索, Network Architecture Search)、Model Compression、Fully Train等关键功能,同时这些功能自身都是高度解耦的,可以根据需要进行配置,构造完整的pipeline。
- 业界标杆的自研算法:提供了诺亚方舟实验室自研的业界标杆算法,并提供Model Zoo下载SOTA(State-of-the-art)模型。
- 高并发模型训练能力:提供高性能Trainer,加速模型训练和评估。
算法列表
安装
1. 安装前的准备
安装Vega的主机有GPU,且需要满足如下要求:
- Ubuntu 16.04 or later (其他linux发行版未完全测试)。
- CUDA 10.0 下载 文档
- Python 3.7 下载
- pip
在安装Vega前,除了通过pip安装一些必备的软件包外,还需要单独安装 MMDetection 和 pycocotools。
1.1 通过pip安装必备软件包
在安装前,需要预先安装一些必备的软件包,可下载脚本install_dependencies.sh后安装:
bash install_dependencies.sh
在安装完成后,需要执行如下命令,确保环境设置正确:
which dask-scheduler
若该命令返回dask-scheduler的文件位置,则安装成功。若未返回路径信息,可考虑重新登录服务器,使得安装脚本设置的路径生效。 若该命令还未返回dask-scheduler文件位置,那需要将路径$HOME/.local/bin/配置到PATH环境变量中。
1.2 安装MMDetection
首先下载mmdetection-1.0rc1.zip。
然后解压后安装:
unzip mmdetection-1.0rc1.zip
cd mmdetection-1.0rc1
python3 setup.py develop --user
2. 安装Vega
完成以上准备后,下一步是在release下载vega-0.9.1-py3-none-any.whl,执行pip安装:
pip3 install vega-0.9.1.py3-none-any.whl
安装完成后,可以尝试在python中引入vega库,确保安装成功:
$ python3
Python 3.7.6 (default, Feb 27 2020, 19:54:18)
[GCC 5.3.1 20160413] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import vega
>>>
部署指导
1. 本地集群部署
1.1 部署前准备
本地集群部署Vega,需满足如下条件:
- Ubuntu 16.04 or later (其他Linux发行版和版本未测试)。
- CUDA 10.0 下载 文档
- Python 3.7 下载
- 安装pip
- 集群在部署时,需要预先安装一些必备的软件包,可下载脚本install_dependencies.sh后安装:
bash install_dependencies.sh
- 安装MPI软件, 可参考附录安装MPI完成安装过程。
- 安装 MMDetection(可选, 物体检测类算法所需的组件), 可参考附录安装MMDetection完成安装过程。
- 配置SSH互信。
- 构建NFS。
以上准备工作完成后,请从Vega库中下载如下部署包vega deploy package,部署包含有如下脚本,准备开始部署:
- 部署脚本:deploy_local_cluster.py
- 调测脚本:verify_local_cluster.py
- 从节点启动脚本: start_slave_worker.py
1.2 部署
- 首先配置部署信息到deploy.yml文件中,文件格式如下:master: n.n.n.n # master节点的IP地址 listen_port: 8786 # 端口号 slaves: ["n.n.n.n", "n.n.n.n", "n.n.n.n"] # slave节点地址
- 然后执行部署脚本在集群主节点中将deploy_local_cluster.py、verify_local_cluster.py、vega-1.0.0.whl、deploy.yml、install_dependencies.sh放到同一个文件夹中,执行如下命令,将Vega部署到主节点和从节点中:python deploy_local_cluster.py执行完成后,自动验证各个节点,会显示如下信息:success.
参考
安装MMDetection
- 下载MMDetection源码:在https://github.com/open-mmlab/mmdetection下载最新版本的MMDetection。
- 安装:切换到mmdetection目录下,执行下述命令即可编译安装:sudo python3 setup.py develop
安装MPI
安装MPI:
- 使用apt工具直接安装mpisudo apt-get install mpi
- 运行如下命令检查MPI是否可以运行mpirun
安装Apex
Apex需要从官网上获取最新的源码安装,不能直接使用pip库中的apex版本
- 下载apex源码: 在https://github.com/NVIDIA/apex下载最新版本的apex。
- 切换到apex目录下,执行下述命令即可编译安装:pip3 install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./
配置SSH互信
网络任意两台主机都需要支持SSH互信,配置方法为:
- 安装ssh: sudo apt-get install sshd
- 分别生成密钥: ssh-keygen -t rsa 会在~/.ssh/文件下生成id_rsa, id_rsa.pub两个文件,其中id_rsa.pub是公钥
- 确认目录下的authorized_keys文件: 若不存在需要创建, 并chmod 600 ~/.ssh/authorized_keys改变权限。
- 拷贝公钥: 分别将公钥id_rsa.pub内容拷贝到其他机器的authorized_keys文件中。
构建NFS
服务器端:
- 安装NFS服务器:sudo apt install nfs-kernel-server
- 编写配置文件,将共享路径写入配置文件中:sudo echo "/data *(rw,sync,no_subtree_check,no_root_squash)" >> /etc/exports
- 创建共享目录:sudo mkdir -p /data
- 重启nfs服务器:sudo service nfs-kernel-server restart
客户端:
- 安装客户端工具:sudo apt install nfs-common
- 创建本地挂载目录sudo mkdir -p /data
- 挂载共享目录:sudo mount -t nfs 服务器ip:/data /data
注意:上述的共享目录(/data)的名字可以是任意的, 但需要保证主机和客户端的名字相同。
CUDA安装指导
Ubuntu下cuda安装
- 在英伟达官网下载安装包cuda_10.0.130_410.48_linux.run
- 执行安装命令: 命令如下:sudo sh cuda_10.0.130_410.48_linux.run在执行过程中,会有一系列提示,选择默认设置即可。需要注意的是其中有个选择,询问是否安装NVIDIA Accelerated Graphics Driver: Install NVIDIA Accelerated Graphics Driver for Linux‐x86_64? 请选择 no
- 环境变量配置: 执行:sudo gedit /etc/profile在profile文件的最后面添加内容:export PATH=/usr/local/cuda/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH保存profile文件,并执行以下命令,使环境变量立即生效source /etc/profile
- 安装cuda sample: 进入/usr/local/cuda/samples, 执行下列命令来build samples:sudo make all -j8全部编译完成后, 进入/usr/local/cuda/samples/1_Utilities/deviceQuery, 运行deviceQuery:./deviceQuery
Code https://github.com/huawei-noah/vega.git