高宏旭 曹大軍 楊倪智
1.中郵建技術(shù)有限公司;2.南京金陵文化傳播有限公司;3.中通服咨詢設(shè)計研究院有限公司
隨著科學(xué)技術(shù)的發(fā)展,社會分工協(xié)作的必要性越來越明顯,專業(yè)的人做專業(yè)的事才能將事情做精做深,科學(xué)研究同樣如此。從整體架構(gòu)層面,將整個科研工作分解成一個個相對獨立的任務(wù)包,由不同人員完成不同的任務(wù)包,實現(xiàn)任務(wù)模塊的并行處理,加速任務(wù)進度同時提高任務(wù)完成質(zhì)量,已經(jīng)成為一種共識。
基礎(chǔ)開發(fā)環(huán)境是支撐科研任務(wù)分工協(xié)作的基石,部署開發(fā)平臺通常是研究工作的第一步,開展基于人工智能的圖像識別研究亦不例外。為了避免研究人員重復(fù)開發(fā)具有相同功能的代碼,研究開始前需要整合很多基礎(chǔ)開發(fā)包以部署形成圖像識別開發(fā)環(huán)境平臺。這些外部第三方程序包在引入開發(fā)平臺的過程中對研究人員帶來了極大挑戰(zhàn):一方面,需要豐富的操作系統(tǒng)及網(wǎng)絡(luò)配置相關(guān)知識;另一方面,具備較大的學(xué)科背景跨度。因此,搭建開發(fā)平臺往往會浪費研究人員大量的寶貴時間。為降低圖像識別開發(fā)平臺的部署難度,節(jié)省開發(fā)時間,研究面向人工智能的圖像識別開發(fā)平臺的一鍵部署方法成為亟待解決的難題。
本文結(jié)合工作實際提出了一種圖像識別模型訓(xùn)練開發(fā)平臺一鍵部署方案,其創(chuàng)新性包括兩個方面:一是設(shè)計了面向人工智能應(yīng)用的通用開發(fā)平臺部署框架;二是引入平臺搭建依賴清單并應(yīng)用批處理腳本解決各類平臺關(guān)聯(lián)工具包的快速、高效、透明安裝,實現(xiàn)圖像處理開發(fā)訓(xùn)練平臺的快速搭建。本文所提出的開發(fā)平臺構(gòu)建方案大大降低了圖像識別乃至人工智能項目的研發(fā)準(zhǔn)入門檻,提高了項目研發(fā)效率,縮短了項目研發(fā)周期,加快了研發(fā)成果的產(chǎn)出。
搭建圖像識別模型訓(xùn)練開發(fā)平臺的首要步驟是分析平臺需求并設(shè)計平臺框架,其中固定操作系統(tǒng)類型及版本是核心工作之一。事實上,對不同的操作系統(tǒng),模型訓(xùn)練開發(fā)平臺相關(guān)依賴工具包的適應(yīng)性存在細微的差別,這種差別會直接影響平臺功能和實驗結(jié)果,因此固定操作系統(tǒng)版本及引入第三方包的版本,是極為重要和必要的,需要慎重選擇。
操作系統(tǒng)確定后,安裝好對應(yīng)Python包管理器及環(huán)境管理器Anaconda,后續(xù)所有批處理操作都基于該版本Anaconda的conda命令進行管理,或者基于pip進行相關(guān)的包管理。這兩種平臺操作管理方案的區(qū)別是:前者安裝和管理來自Anaconda的工具包,這些工具包可能包含任何語言編寫的軟件包;后者雖然為官方認(rèn)可的安裝包管理器pip,但是只能安裝基于python語言的軟件包。此外,在創(chuàng)建虛擬機能力及安裝依賴項檢查的能力上,conda也優(yōu)于pip,因此建議使用conda作為包管理器。
確定好平臺操作系統(tǒng)并選擇好平臺軟件包管理工具后,即可按照圖1給出的圖像識別模型訓(xùn)練開發(fā)平臺部署框架圖,部署流程構(gòu)建圖像識別模型的訓(xùn)練開發(fā)平臺框架,整體思想為確定在哪種操作系統(tǒng)上進行安裝,而后根據(jù)操作系統(tǒng)不同下載對應(yīng)的Anaconda版本,安裝“包管理器及環(huán)境管理器Anaconda”,根據(jù)事先準(zhǔn)備好的安裝列表,對要安裝的內(nèi)容進行批處理腳本編寫,編寫完畢后,后續(xù)就可以基于該批處理腳本進行自動化安裝,新環(huán)境搭建時,運行該腳本,腳本設(shè)置斷點執(zhí)行的能力,當(dāng)在某一環(huán)節(jié)安裝出錯,拋出對應(yīng)的錯誤提示信息,用戶解決后,繼續(xù)運行該批處理程序,程序可以從斷點后繼續(xù)執(zhí)行,直至安裝完畢。如圖1所示。
圖1 圖像識別模型訓(xùn)練開發(fā)平臺部署框架
在圖像識別模型訓(xùn)練開發(fā)平臺搭建的過程中,涉及到種類繁多、學(xué)科跨度大的海量工具包的安裝,收集整理平臺搭建依賴清單,即準(zhǔn)備好平臺部署所需的各種工具,是極具挑戰(zhàn)的難題之一,這讓初級研發(fā)人員望而生畏。
一種有效的解決方法是對平臺搭建依賴的工具包進行細致地分類整理并形成清單,合理定義編排工具包的安裝順序,最后通過設(shè)計批處理腳本來解決工具包的安裝難題。通常,Linux操作系統(tǒng)下采用Shell命令編排安裝工具包的批處理腳本,而Windows操作系統(tǒng)下采用BAT命令編排安裝工具包的批處理腳本。
就圖像識別研究而言,其模型訓(xùn)練開發(fā)平臺依賴的工具包可以分為如下幾類:開發(fā)語言相關(guān)、代碼管理相關(guān)、配置文件相關(guān)、算法相關(guān)、圖像處理相關(guān)、機器學(xué)習(xí)相關(guān)、可視化工具、圖形處理器(Graphic Processing Unit,GPU)的應(yīng)用程序編程接口(Application Programming Interface,API)管理工具等。工具包的詳細分類見圖2圖像識別訓(xùn)練開發(fā)平臺搭建依賴工具包分類清單所示。
需要說明的是,圖2中特別引入了“創(chuàng)建虛擬環(huán)境”的分支以支持平臺功能的擴展,例如:當(dāng)人工智能應(yīng)用項目研發(fā)同時需要圖像識別模型和語音識別模型兩個訓(xùn)練開發(fā)平臺時,可以將兩個平臺各自獨立依賴的程序包分別安裝在兩個虛擬環(huán)境上形成兩個獨立的開發(fā)平臺,從而避免不同平臺間的功能沖突。
圖2 圖像識別訓(xùn)練開發(fā)平臺搭建依賴工具包分類清單
基于上文提出的圖像識別模型訓(xùn)練開發(fā)平臺部署框架,本節(jié)通過軟件編程導(dǎo)入各類工具包并構(gòu)建平臺的功能模塊,進而實現(xiàn)開發(fā)平臺的具體部署。
實現(xiàn)圖像識別模型訓(xùn)練開發(fā)平臺部署的關(guān)鍵是編寫安裝工具包的批處理腳本。本文基于Linux操作系統(tǒng)的shell命令編寫平臺工具包安裝的批處理腳本文件并命名為setup.sh。運行Linux命令source setup.sh,根據(jù)提示鍵入相應(yīng)數(shù)字,即可完成所需工具包的安裝與調(diào)用,實現(xiàn)平臺開發(fā)環(huán)境的一鍵部署。
平臺工具包安裝批處理腳本偽代碼如下:
while true
do
menu
choice
case $select in
1)
Creat_virtual
Active_virtual
…
Setup_face_recognition
Setup_pandas;;
2)
Active_virtual
…
Setup_face_recognition
Setup_pandas;;
…
23)
Setup_face_recognition
Setup_pandas;;
24)
Setup_pandas;;
100)
exit;;
*)
echo “choice error”
esac
done
考慮到工具包在安裝過程中可能出錯而影響開發(fā)平臺的功能部署和正常使用,因此需對安裝過程進行跟蹤。當(dāng)出現(xiàn)安裝故障時,腳本應(yīng)抓取故障信息顯示給用戶,用戶根據(jù)提示信息解決安裝故障,然后繼續(xù)執(zhí)行setup.sh腳本完成工具包的安裝和平臺環(huán)境部署。
安裝故障信息抓取功能偽代碼如下:
Setup_Cython() {
conda install Cython
if [ $? -eq 0 ]; then
echo “安裝完成Cython”
else
echo $?
exit
fi
}
當(dāng)安裝程序成功執(zhí)行完畢,圖像識別模型訓(xùn)練開發(fā)平臺即構(gòu)建部署完成,基于該平臺即可開展不同的圖像識別項目研發(fā)。
值得說明的是,上述圖像識別訓(xùn)練開發(fā)平臺無論是架構(gòu)還是工具包安裝批處理腳本文件,均與工具包的具體內(nèi)容弱相關(guān),因此可以通過增加依賴工具包方便地擴展平臺功能,這意味著平臺具有良好的可擴展性。此外,通過整體替換平臺依賴工具包清單并基于上述批處理腳本文件進行安裝部署,原來的圖像識別訓(xùn)練開發(fā)平臺隨之變?yōu)樾碌墓δ芷脚_,這意味著平臺具有良好的移植性。
本文探討了圖像識別模型訓(xùn)練開發(fā)平臺的快速部署方法,設(shè)計了一種通用開發(fā)平臺部署框架,給出了平臺操作系統(tǒng)選擇建議,提出了基于分類清單的平臺依賴工具包的批處理安裝策略,并通過編寫腳本文件實現(xiàn)了平臺的快速構(gòu)建。所提出的圖像識別模型訓(xùn)練開發(fā)平臺一鍵部署方案有效降低了智能圖像識別研究的入門門檻,將研究人員從復(fù)雜的前置工作中解放出來,專注于算法的實現(xiàn)與調(diào)優(yōu),大大縮短了項目研發(fā)周期;同時使研發(fā)管理規(guī)范化,根據(jù)項目進展情況酌情維護平臺腳本并定期發(fā)布新版本,提高了項目開發(fā)效率。該方案亦具有可擴展性和可移植性,能夠靈活應(yīng)用于語音識別等其他人工智能研究領(lǐng)域。