ModelArts訓練作業快速入門與最佳使用指引
1.登錄華為云
根據華為提供的賬戶和密碼,登錄華為云控制臺。
華為云網址: https://auth.huaweicloud.com/authui/login.html#/login
登錄華為云控制臺后,在左上角選擇區域:北京四
在服務列表中選擇:EI企業智能->ModelArts
如下圖所示:
2.準備OBS桶
在華為云控制臺點擊服務列表選擇:存儲->對象存儲服務OBS
在對象存儲服務OBS控制臺,點擊:創建桶,即可創建本次POC所需要的一個或多個桶,用于存放訓練數據、訓練腳本、訓練結果、日志等各種文件。
請參考 https://support.huaweicloud.com/qs-obs/obs_qs_1000.html
3. ModelArts訓練作業使用指引
3.1 訓練作業介紹
https://support.huaweicloud.com/engineers-modelarts/modelarts_23_0046.html
3.2 訓練作業案例
https://support.huaweicloud.com/bestpractice-modelarts/modelarts_10_0003.html
3.3 Moxing文檔
https://github.com/huaweicloud/ModelArts-Lab/blob/master/docs/moxing_api_doc/MoXing_API_File.md
3.4 Tensorflow分布式訓練作業介紹
方法一:
使用Moxing API進行編程,例子程序如下,Moxing對tf接口進行了進一步封裝,會自動處理分布式邏輯傳入的參數。
https://github.com/huaweicloud/ModelArts-Lab/blob/master/docs/moxing_api_doc/MoXing_API_Flowers.md
方法二:
自己代碼對分布式傳參進行處理。
以下四個參數是TensorFlow推薦的分布式運行參數,具體可以參考TensorFlow官方文檔。
--job_name: ps或worker
--task_index: ps或worker進程的序號,一般情況下task_index為0的worker為chief worker (也可以認為是master節點,master節點在物理上并不存在,是一個邏輯節點)
--ps_hosts: ps的ip和端口,多個節點以,分割。
--worker_hosts: worker的ip和端口,多個節點以,分割。
例如,啟動一個2個節點的訓練作業,分布式作業啟動腳本參數配置如下:
# 節點0啟動ps進程參數(對應IP地址為192.168.1.100)
--job_name=ps
--task_index=0
--ps_hosts=192.168.1.100:2222,192.168.1.101:2222
--worker_hosts=192.168.1.100:2223,192.168.1.101:2223
# 節點0啟動worker進程參數(對應IP地址為192.168.1.100)
--job_name=worker
--task_index=0
--ps_hosts=192.168.1.100:2222,192.168.1.101:2222
--worker_hosts=192.168.1.100:2223,192.168.1.101:2223
--num_gpus=4
# 節點1啟動ps進程參數(對應IP地址為192.168.1.101)
--job_name=ps
--task_index=1
--ps_hosts=192.168.1.100:2222,192.168.1.101:2222
--worker_hosts=192.168.1.100:2223,192.168.1.101:2223
# 節點1啟動ps進程參數(對應IP地址為192.168.1.101)
--job_name=worker
--task_index=1
--ps_hosts=192.168.1.100:2222,192.168.1.101:2222
--worker_hosts=192.168.1.100:2223,192.168.1.101:2223
--num_gpus=4
3.5 Pytorch分布式作業介紹
方法一:使用mox接口進行pytorch分布式編程,參考文檔
使用mox進行編程時如果一臺機器上有8個gpu,但是用戶只想使用4個gpu,可以在代碼中添加os.environ['CUDA_VISIBLE_DEVICES'] = '0,1,2,3'進行gpu數量的控制。下面圖片同時保存在了附件中
方法二:
自己對于分布式參數進行處理,分布式依賴的參數都會通過入參傳入到腳本中,用戶通過對這些參數的使用完成多節點組網
3.6 性能提升指引
<場景>
用戶A使用Modelarts進行自定義深度學習訓練,訓練數據存儲在對象存儲OBS上,訓練數據一共有200GB,用戶每次使用GPU資源池進行訓練。用戶希望提升訓練效率,同時較少與對象存儲OBS的交互,(每次與OBS的交互都要收取一定的費用)。
<優化原理>
對于GPU資源池,每個訓練節點會掛載NVMe類型SSD提供給用戶免費使用,每張GPU卡對應500GB的存儲空間,如果是8卡v100,就有4TB的免費SSD使用。此SSD掛載到/cache目錄,/cache目錄下面的數據生命周期與訓練作業生命周期相同,當訓練作業運行結束以后/cache目錄下面所有內容會被清空,騰出空間,供下一次訓練作業使用。因此用戶可以在訓練過程中將數據從對象存儲的OBS上拷貝到/cache目錄下,然后每次從/cache目錄下讀取數據,直到訓練結束。訓練結束以后/cache下內容會自動被清空。
從/cache中讀取數據在600MB/s,這個速度要快于從OBS上讀取數據,因此可以減少訓練時數據讀取的時間,提升訓練效率。
<優化方式>
以tensorflow代碼為例
用戶在頁面選擇數據存儲位置為'/cnnorth4/example/data'
優化前代碼如下:
... tf.flags.DEFINE_string('data_url',?'',?'dataset?directory.') FLAGS?=?tf.flags.FLAGS mnist?=?input_data.read_data_sets(FLAGS.data_url,?one_hot=True
優化后:
... tf.flags.DEFINE_string('data_url',?'',?'dataset?directory.') FLAGS?=?tf.flags.FLAGS import?moxing?as?mox TMP_CACHE_PATH?=?'/cache/data' mox.file.copy_parallel(FLAGS.data_url,?TMP_CACHE_PATH) mnist?=?input_data.read_data_sets(TMP_CACHE_PATH,?one_hot=True
對比視圖如下(下面圖片同時也保存在附件中):
數據的下載
模型的保存與上傳
Moxing介紹?https://github.com/huaweicloud/ModelArts-Lab/tree/master/docs/moxing_api_doc
Moxing 文件接口 ?https://github.com/huaweicloud/ModelArts-Lab/blob/master/docs/moxing_api_doc/MoXing_API_File.md
3.7 如何使用專屬資源池進行訓練
選擇創建訓練作業:
配置訓練作業,選擇專屬資源池,計算節點為2代表分布式作業使用2臺計算節點。
附件: screenshot.zip 231.64KB 下載次數:8次
TensorFlow
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。