【干貨】快速部署微軟開源GPU管理利器: OpenPAI
介紹
不管是機器學習的老手,還是入門的新人,都應該裝備上盡可能強大的算力。除此之外,還要壓榨出硬件的所有潛力來加快模型訓練。OpenPAI作為GPU管理的利器,不管是一塊GPU,還是上千塊GPU,都能夠做好調度,幫助加速機器學習的模型訓練過程。
關於什么是OpenPAI,請參考介紹視頻:微軟開源GPU集群管理利器。
本文提供了簡化的OpenPAI安裝步驟。如果有更復雜的安裝要求或部署環境,請參考官網。
准備工作
環境要求如下:
- 推薦Ubuntu 16.04 LTS(暫不支持CentOS等其它Linux系統)。
- 靜態IP地址。
- 能夠訪問外網,可下載Docker Hub的鏡像文件。
- 為集群中每台機器提供統一的用戶名密碼,並有sudo權限。
- 有統一的時間同步服務(默認即可)。
- 推薦干凈環境進行安裝。如果已經安裝了Docker,API版本必須大於等於1.26。
- 各台計算機之間網絡可達。
安裝過程
1. 安裝用於配置的docker
即管理、安裝整個OpenPAI的docker(在官方文檔中稱為dev-box)。以后的管理、配置工作都會在這個docker中進行。
登錄進某台計算機(可選用集群中的機器),確保有sudo權限。然后按順序執行下列命令。
安裝docker,如果安裝有更新的版本可跳過。
sudo apt-get -y install docker.io
# 拉取,並啟動dev-box
sudo docker run -itd -e COLUMNS=$COLUMNS -e LINES=$LINES -e TERM=$TERM -v /var/lib/docker:/var/lib/docker -v /var/run/docker.sock:/var/run/docker.sock -v /pathHadoop:/pathHadoop -v /pathConfiguration:/cluster-configuration --pid=host --privileged=true --net=host --name=dev-box docker.io/openpai/dev-box
# 登錄dev-box
sudo docker exec -it dev-box /bin/bash
2. 配置安裝環境
以下腳本需要修改一下安裝環境相關的信息。machines表示GPU集群的服務器IP,ssh-username和ssh-password分別代表登錄這些服務器要用到的用戶名、密碼。
注意:第一台會作為master節點,其余節點作為worker。關於master/worker可參考視頻介紹。暫時推薦不要用GPU服務器做master角色,或將worker角色部署到master上,因為這樣可能會造成資源緊張,從而造成master進程的內存不夠用。所以,master節點可以用沒有GPU的服務器,推薦8核16G或以上配置。
cd /pai/pai-management
cat << EOF > quick-start.yaml
machines:
- 192.168.1.2
- 192.168.1.3
ssh-username: <用戶名>
ssh-password: <密碼>
EOF
CONFIG_PATH=/cluster-configuration
rm $CONFIG_PATH/*
3. 安裝節點
根據quick-start的基本信息,在/cluster-configuration目錄中生成配置文件。配置文件的具體內容可參考github,這里就不詳細介紹了。
python paictl.py cluster generate-configuration -i quick-start.yaml -o $CONFIG_PATH
安裝kubenetes
python paictl.py cluster k8s-bootup -p $CONFIG_PATH
安裝並啟動OpenPAI相關服務
python paictl.py service start -p $CONFIG_PATH
運行最后一步時,如果網速很慢或服務器很多,有可能會花一天。完成后,即可在瀏覽器中試着訪問第一台服務器的web地址。因為服務器還需要啟動一會兒,可能並不能馬上看到結果。等一會兒,或者多試幾次即可。
默認的用戶名、密碼如下,可點擊右上方的login連接登錄。建議第一時間改掉。
admin
admin-password
好了!大功告成!
可以參考github中的任務模板來配置自己的任務模板。也可以看看Github中的文檔來探索更多高級功能。接下來就可以看看前面的介紹視頻來學習如何從Tools for AI來提交任務了。
如果集群比較小,可以給集群去掉end-to-end測試用例,從而節省資源。(參考常見問答)
常見問題
遇到問題,可在官網提交Issue。
如何刪除end-to-end測試任務?
如果沒有足夠的服務器資源,建議在部署過程中刪除掉end-to-end測試。否則,它會定期進入隊列,以測試系統是否可用。在dev-box中運行:
python paictl.py service delete -p $CONFIG_PATH -n end-to-end-test
安裝過程中出現 ... is not ready yet. Please wait for a moment!
,該怎么辦?
這種一般是網絡問題造成的,可以進入以下網址(注意替換master IP),將出現pull image錯誤的pods刪掉,加快Kubernetes重新pull的速度。
http://<替換成master的IP>:9090/#!/pod?namespace=default