DLC MNIST訓(xùn)練最佳實(shí)踐
本文介紹如何在DLC計(jì)算資源上提交AutoML實(shí)驗(yàn)進(jìn)行超參數(shù)調(diào)優(yōu)。本方案采用PyTorch框架,通過torchvision.datasets.MNIST模塊自動下載和加載MNIST手寫數(shù)字?jǐn)?shù)據(jù)集,并對其進(jìn)行模型訓(xùn)練,以尋找最佳超參數(shù)配置。提供單機(jī)、分布式及嵌套參數(shù)三種訓(xùn)練模式供選擇,以滿足不同訓(xùn)練需求。
前提條件
首次使用AutoML功能時(shí),需要完成AutoML相關(guān)權(quán)限授權(quán)。具體操作,請參見云產(chǎn)品依賴與授權(quán):AutoML。
已完成DLC相關(guān)權(quán)限授權(quán),授權(quán)方法詳情請參見云產(chǎn)品依賴與授權(quán):DLC。
已創(chuàng)建工作空間并關(guān)聯(lián)了通用計(jì)算資源公共資源組。具體操作,請參見創(chuàng)建工作空間。
已開通OSS并創(chuàng)建OSS Bucket存儲空間,詳情請參見控制臺快速入門。
步驟一:創(chuàng)建數(shù)據(jù)集
將腳本文件mnist.py上傳到已創(chuàng)建的OSS Bucket存儲空間中。具體操作,請參見控制臺快速入門。
創(chuàng)建OSS類型的數(shù)據(jù)集,用于存儲超參數(shù)調(diào)優(yōu)實(shí)驗(yàn)生成的數(shù)據(jù)文件。具體操作,請參見創(chuàng)建數(shù)據(jù)集:從阿里云云產(chǎn)品。
其中關(guān)鍵參數(shù)說明如下,其他參數(shù)使用默認(rèn)配置:
數(shù)據(jù)集名稱:自定義數(shù)據(jù)集名稱。
選擇數(shù)據(jù)存儲:選擇腳本文件所在的OSS存儲目錄。
屬性:選擇文件夾。
步驟二:新建實(shí)驗(yàn)
進(jìn)入新建實(shí)驗(yàn)頁面,并按照以下操作步驟配置關(guān)鍵參數(shù),其他參數(shù)配置詳情,請參見新建實(shí)驗(yàn)。參數(shù)配置完成后,單擊提交。
設(shè)置執(zhí)行配置。
本方案提供單機(jī)訓(xùn)練、分布式訓(xùn)練以及嵌套參數(shù)訓(xùn)練三種訓(xùn)練方式,您可以選擇其中一種訓(xùn)練方式。
單機(jī)訓(xùn)練參數(shù)配置說明
參數(shù)
描述
任務(wù)類型
選擇DLC。
資源組
選擇公共資源組。
框架
選擇PyTorch。
數(shù)據(jù)集
選擇步驟二中已創(chuàng)建的數(shù)據(jù)集。
節(jié)點(diǎn)鏡像
選擇
。機(jī)器規(guī)格
選擇
。節(jié)點(diǎn)數(shù)量
設(shè)置為1。
節(jié)點(diǎn)啟動命令
配置為
python3 /mnt/data/mnist.py --save_model=/mnt/data/examples/search/model/model_${exp_id}_${trial_id} --batch_size=${batch_size} --lr=${lr}
。超參數(shù)
batch_size
約束類型:選擇choice。
搜索空間:單擊,增加3個(gè)枚舉值,分別為16,32和64。
lr
約束類型:選擇choice。
搜索空間:單擊,增加3個(gè)枚舉值,分別為0.0001、0.001和0.01。
使用上述配置可以生成9種超參數(shù)組合,后續(xù)實(shí)驗(yàn)會分別為每種超參數(shù)組合創(chuàng)建一個(gè)Trial,在每個(gè)Trial中使用一組超參數(shù)組合來運(yùn)行腳本。
分布式訓(xùn)練參數(shù)配置說明
參數(shù)
描述
任務(wù)類型
選擇DLC。
資源組
選擇公共資源組。
框架
選擇PyTorch。
數(shù)據(jù)集
選擇步驟二中已創(chuàng)建的數(shù)據(jù)集。
節(jié)點(diǎn)鏡像
選擇
。機(jī)器規(guī)格
選擇
。節(jié)點(diǎn)數(shù)量
設(shè)置為3。
節(jié)點(diǎn)啟動命令
配置為
python -m torch.distributed.launch --master_addr=$MASTER_ADDR --master_port=$MASTER_PORT --nproc_per_node=1 --nnodes=$WORLD_SIZE --node_rank=$RANK /mnt/data/mnist.py --data_dir=/mnt/data/examples/search/data --save_model=/mnt/data/examples/search/pai/model/model_${exp_id}_${trial_id} --batch_size=${batch_size} --lr=${lr}
。超參數(shù)
batch_size
約束類型:選擇choice。
搜索空間:單擊,增加3個(gè)枚舉值,分別為16、32和64。
lr
約束類型:選擇choice。
搜索空間:單擊,增加3個(gè)枚舉值,分別為0.0001、0.001和0.01。
使用上述配置可以生成9種超參數(shù)組合,后續(xù)實(shí)驗(yàn)會分別為每種超參數(shù)組合創(chuàng)建一個(gè)Trial,在每個(gè)Trial中使用一組超參數(shù)組合來運(yùn)行腳本。
嵌套參數(shù)訓(xùn)練參數(shù)配置說明
參數(shù)
描述
任務(wù)類型
選擇DLC。
資源組
選擇公共資源組。
框架
選擇PyTorch。
數(shù)據(jù)集
選擇步驟二中已創(chuàng)建的數(shù)據(jù)集。
節(jié)點(diǎn)鏡像
選擇
。機(jī)器規(guī)格
選擇
。節(jié)點(diǎn)數(shù)量
設(shè)置為1。
節(jié)點(diǎn)啟動命令
配置為
python3 /mnt/data/mnist.py --save_model=/mnt/data/examples/search/pai/model/model_${exp_id}_${trial_id} --batch_size=${nested_params}.{batch_size} --lr=${nested_params}.{lr} --gamma=${gamma}
。超參數(shù)
nested_params
約束類型:選擇choice。
搜索空間:單擊,增加2個(gè)枚舉值,分別為
{"_name":"large","{lr}":{"_type":"choice","_value":[0.02,0.2]},"{batch_size}":{"_type":"choice","_value":[256,128]}}
和{"_name":"small","{lr}":{"_type":"choice","_value":[0.01,0.1]},"{batch_size}":{"_type":"choice","_value":[64,32]}}
。
gamma
約束類型:選擇choice。
搜索空間:單擊,增加3個(gè)枚舉值,分別為0.8、0.7和0.9。
使用上述配置可以生成9種超參數(shù)組合,后續(xù)實(shí)驗(yàn)會分別為每種超參數(shù)組合創(chuàng)建一個(gè)Trial,在每個(gè)Trial中使用一組超參數(shù)組合來運(yùn)行腳本。
設(shè)置Trial配置。
參數(shù)
描述
優(yōu)化指標(biāo)
指標(biāo)類型
選擇stdout。表示最終指標(biāo)從運(yùn)行過程中的stdout中提取。
計(jì)算方式
選擇best。
指標(biāo)權(quán)重
配置如下:
key:validation: accuracy=([0-9\\.]+)。
Value:1。
指標(biāo)來源
命令關(guān)鍵字配置為cmd1。
優(yōu)化方向
選擇越大越好。
模型存儲路徑
設(shè)置為保存模型的OSS路徑。本方案配置為
oss://examplebucket/examples/model/model_${exp_id}_${trial_id}
。設(shè)置搜索配置。
參數(shù)
描述
搜索算法
選擇TPE。算法詳情說明,請參見支持的搜索算法。
最大搜索次數(shù)
配置為3。表示該實(shí)驗(yàn)允許運(yùn)行的最多Trial個(gè)數(shù)為3個(gè)。
最大并發(fā)量
配置為2。表示該實(shí)驗(yàn)允許并行運(yùn)行的最多Trial個(gè)數(shù)為2個(gè)。
開啟earlystop
打開開關(guān)。如果一個(gè)Trial在評估一組特定的超參數(shù)組合時(shí)發(fā)現(xiàn)效果明顯很差,則會提前終止該Trial的評估過程。
start step
配置為5。表示該Trial在最早執(zhí)行完5次評估后,可以決定是否提前停止。
步驟三:查看實(shí)驗(yàn)詳情和運(yùn)行結(jié)果
在實(shí)驗(yàn)列表中,單擊目標(biāo)實(shí)驗(yàn)名稱,進(jìn)入實(shí)驗(yàn)詳情頁面。
在該頁面,您可以查看Trial的執(zhí)行進(jìn)度和狀態(tài)統(tǒng)計(jì)。實(shí)驗(yàn)根據(jù)配置的搜索算法和最大搜索次數(shù)自動創(chuàng)建3個(gè)Trial。
單擊Trial列表,您可以在該頁面查看該實(shí)驗(yàn)自動生成的所有Trial列表,以及每個(gè)Trial的執(zhí)行狀態(tài)、最終指標(biāo)和超參數(shù)組合。
根據(jù)配置的優(yōu)化方向(越大越好),從上圖可以看出,最終指標(biāo)為96.52對應(yīng)的超參數(shù)組合(batch_size:16、lr:0.01)較優(yōu)。
相關(guān)文檔
您也可以提交MaxCompute計(jì)算資源的超參數(shù)調(diào)優(yōu)實(shí)驗(yàn),詳情請參見MaxCompute K均值聚類最佳實(shí)踐。
關(guān)于AutoML更詳細(xì)的使用方法和原理介紹,請參見自動機(jī)器學(xué)習(xí)(AutoML)。