<返回更多

华为诺亚实验室开源AutoML算法工具链

2020-07-05    
加入收藏

Vega简介

Vega是诺亚方舟实验室自研的AutoML算法工具链,有主要特点:

  1. 完备的AutoML能力:涵盖HPO(超参优化, HyperParameter Optimization)、Data-Augmentation、NAS(网络架构搜索, Network Architecture Search)、Model Compression、Fully Train等关键功能,同时这些功能自身都是高度解耦的,可以根据需要进行配置,构造完整的pipeline。
  2. 业界标杆的自研算法:提供了诺亚方舟实验室自研的业界标杆算法,并提供Model Zoo下载SOTA(State-of-the-art)模型。
  3. 高并发模型训练能力:提供高性能Trainer,加速模型训练和评估。

算法列表

华为诺亚实验室开源AutoML算法工具链

 

安装

1. 安装前的准备

安装Vega的主机有GPU,且需要满足如下要求:

  1. Ubuntu 16.04 or later (其他linux发行版未完全测试)。
  2. CUDA 10.0 下载 文档
  3. Python 3.7 下载
  4. 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,需满足如下条件:

  1. Ubuntu 16.04 or later (其他Linux发行版和版本未测试)。
  2. CUDA 10.0 下载 文档
  3. Python 3.7 下载
  4. 安装pip
  5. 集群在部署时,需要预先安装一些必备的软件包,可下载脚本install_dependencies.sh后安装:
bash install_dependencies.sh
  1. 安装MPI软件, 可参考附录安装MPI完成安装过程。
  2. 安装 MMDetection(可选, 物体检测类算法所需的组件), 可参考附录安装MMDetection完成安装过程。
  3. 配置SSH互信。
  4. 构建NFS。

以上准备工作完成后,请从Vega库中下载如下部署包vega deploy package,部署包含有如下脚本,准备开始部署:

  1. 部署脚本:deploy_local_cluster.py
  2. 调测脚本:verify_local_cluster.py
  3. 从节点启动脚本: start_slave_worker.py

1.2 部署

  1. 首先配置部署信息到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节点地址
  2. 然后执行部署脚本在集群主节点中将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

  1. 下载MMDetection源码:在https://github.com/open-mmlab/mmdetection下载最新版本的MMDetection。
  2. 安装:切换到mmdetection目录下,执行下述命令即可编译安装:sudo python3 setup.py develop

安装MPI

安装MPI:

  1. 使用apt工具直接安装mpisudo apt-get install mpi
  2. 运行如下命令检查MPI是否可以运行mpirun

安装Apex

Apex需要从官网上获取最新的源码安装,不能直接使用pip库中的apex版本

  1. 下载apex源码: 在https://github.com/NVIDIA/apex下载最新版本的apex。
  2. 切换到apex目录下,执行下述命令即可编译安装:pip3 install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./

配置SSH互信

网络任意两台主机都需要支持SSH互信,配置方法为:

  1. 安装ssh: sudo apt-get install sshd
  2. 分别生成密钥: ssh-keygen -t rsa 会在~/.ssh/文件下生成id_rsa, id_rsa.pub两个文件,其中id_rsa.pub是公钥
  3. 确认目录下的authorized_keys文件: 若不存在需要创建, 并chmod 600 ~/.ssh/authorized_keys改变权限。
  4. 拷贝公钥: 分别将公钥id_rsa.pub内容拷贝到其他机器的authorized_keys文件中。

构建NFS

服务器端:

  1. 安装NFS服务器:sudo apt install nfs-kernel-server
  2. 编写配置文件,将共享路径写入配置文件中:sudo echo "/data *(rw,sync,no_subtree_check,no_root_squash)" >> /etc/exports
  3. 创建共享目录:sudo mkdir -p /data
  4. 重启nfs服务器:sudo service nfs-kernel-server restart

客户端:

  1. 安装客户端工具:sudo apt install nfs-common
  2. 创建本地挂载目录sudo mkdir -p /data
  3. 挂载共享目录:sudo mount -t nfs 服务器ip:/data /data

注意:上述的共享目录(/data)的名字可以是任意的, 但需要保证主机和客户端的名字相同。

CUDA安装指导

Ubuntu下cuda安装

  1. 在英伟达官网下载安装包cuda_10.0.130_410.48_linux.run
  2. 执行安装命令: 命令如下:sudo sh cuda_10.0.130_410.48_linux.run在执行过程中,会有一系列提示,选择默认设置即可。需要注意的是其中有个选择,询问是否安装NVIDIA Accelerated Graphics Driver: Install NVIDIA Accelerated Graphics Driver for Linux‐x86_64? 请选择 no
  3. 环境变量配置: 执行: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
  4. 安装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

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>