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