“一鍵飛槳”,輕松實現飛槳框架和套件的下載安裝!

大家好,我是散步,很榮幸能和大家分享一個搭建飛槳全系列產品開發(fā)和使用環(huán)境的小工具。希望它能夠幫助你在新場景下快速搭建飛槳工作臺,讓大家能夠更簡單地將飛槳安利給身邊的朋友。
01 簡介
你是否在新的虛擬環(huán)境或者新電腦上配置飛槳環(huán)境時發(fā)現一個個克隆飛槳的倉庫很麻煩?沒有關系!我給大家提供了一個超級方便的工具,你可以一鍵安裝飛槳框架以及CUDA(目前該工具默認安裝CUDA11.2版本)和CUDNN的環(huán)境配置,并且可以一鍵下載并安裝自己想要的飛槳套件,省去搜索、下載、環(huán)境配置的時間,更專注于項目內容的開發(fā)。
你可以通過AI Studio項目的掛載數據集或者GitHub倉庫獲取該工具(后文統(tǒng)稱“一鍵飛槳”工具)。
AI Studio項目
https://aistudio.baidu.com/aistudio/datasetdetail/189777
GitHub倉庫
https://github.com/sanbuphy/fool-proof-paddle
02 操作步驟
接下來我將詳細介紹在Linux和Windows系統(tǒng)上如何使用“一鍵飛槳”工具。
備注:所有操作都在安裝工具解壓后的文件夾內完成。
PART1 Linux環(huán)境下使用說明
Linux環(huán)境下的下載
如果僅僅為了下載,你可以直接在解壓“一鍵飛槳”后的文件目錄下輸入bash main.sh命令行,隨后輸入1即可進入下載選擇界面。

在下載選擇界面,通過連續(xù)輸入飛槳框架或者飛槳套件對應的大寫字母,即可下載對應的倉庫。假設我們想下載飛槳框架Paddle倉庫、飛槳模型壓縮工具PaddleSlim倉庫、飛槳輕量化推理引擎Paddle Lite倉庫,我們可以連續(xù)輸入大寫字母ABC,即可實現以上倉庫的自動下載。根據圖片所示,可以大概了解套件的下載方法,例如:

最后看到以下內容,就說明已下載成功!

Linux環(huán)境下的安裝
為了實現飛槳框架以及飛槳套件的安裝,首先在命令行輸入source main.sh,即出現以下界面。

隨后輸入2以執(zhí)行安裝飛槳框架以及飛槳套件,出現的界面如下圖所示。

隨后輸入1以安裝飛槳框架及對應CUDA環(huán)境。輸入2以安裝之前下載好的飛槳套件。
PART2 Windows環(huán)境下使用說明
Windows環(huán)境中的下載
輸入python main.py然后輸入對應的字母完成下載。如果你沒有安裝git bash,此時會自動下載并安裝git bash。注意,請一路按照默認安裝!不要自己改安裝地點。

輸入字母后便進入下載方式的選擇,此時推薦第一次選擇N,第二次選擇Y即可使用gitee的http方式下載各個倉庫,速度較快。最后,當看到下方內容,就說明已經下載成功啦!

Windows環(huán)境下的安裝
在對應虛擬環(huán)境中執(zhí)行python main.py,其他按照提示操作即可完成飛槳框架的安裝和所有已下載套件的安裝。

除了可以安裝飛槳框架,目前“一鍵飛槳”工具支持下載和安裝的飛槳套件如下:(不斷更新中)
PaddleDetection
PaddleSpeech
PaddleClas
PaddleSeg
PaddleNLP
PaddleVideo
PaddleOCR
PaddleGAN
PaddleSlim
FastDeploy?
03 工具制作過程分享
雖然該項目看起來簡單,但實際整個工具的制作過程遇見了較多困難。在此特別感謝幫助我測試的每個朋友,因為你們讓項目更為穩(wěn)健。制作工具的初始,我也考慮過直接使用Python做成跨平臺下載與安裝工具,但考慮到可實現性和速度,最終采用了更簡單直接的功能實現方式。同時,為了防止安裝問題發(fā)生,安裝代碼中還加入了很多防御性檢查(是否安裝、是否下載、是否安裝成功),最大程度提高了工具的穩(wěn)健性。接下來我將針對Linux和Windows版本分別介紹實現過程中的困難點:
PART1 Linux環(huán)境工具制作分享
主項目的入口主要起到任務分發(fā)的作用,制作過程中先保證了每部分的獨立功能后才進行整體集成,以保證單元的可執(zhí)行、可測試。

為了快速實現功能,這里選擇了簡單粗暴的shell數組方式。對于下載部分的實現可在download_paddle.sh里查看:

如果你想要加入新的下載倉庫,可以用同樣的方式在下面加入即可。在環(huán)境安裝環(huán)節(jié),考慮到網絡可能存在不穩(wěn)定的情況,采用“wget -c”保證飛槳程序安裝包能順利安裝。

與CPU版本的飛槳不同,GPU版本安裝好后還需進行環(huán)境配置。

環(huán)境配置環(huán)節(jié),CUDA和CUDNN的安裝最為讓人頭痛。為此,加入檢測環(huán)境和驅動CUDA版本的判斷,以覆蓋大部分用戶安裝的基礎環(huán)境。同時根據NVIDIA官方文檔詳細對照了gcc版本確定了安裝邏輯(CUDA程序安裝對gcc版本有要求)。這讓不同用戶都可以穩(wěn)定安裝,避免報錯。

接下來是CUDNN安裝環(huán)節(jié),在這一部分我還做了多項檢查保證安裝的正確:

腳本的最后加入環(huán)境變量,以讓默認鏈接過程能搜索到對應的依賴。
這里使用CUDA而非網上常見的CUDA 11.2 等完成操作,是因為CUDA的本質是軟鏈接,在完成安裝后會被自動軟鏈接為安裝版本。軟鏈接對象可在對應文件夾下使用ll命令查看。通過這種方式,可實現WSL和Linux實體機的共同兼容。

至此,下載和安裝的腳本思路已經介紹完畢,接下來我將介紹有關套件安裝腳本的一個值得注意的小技巧:
部分套件需要運行python腳本以驗證效果。通過使用```覆蓋部分python腳本,實現了用python – c在shell腳本中驗證完整套件。

也可以通過逐個分割實現相同目的。但過于繁瑣,并不推薦。

至此,Linux環(huán)境工具制作過程已經大概介紹完畢。總體來說使用Linux安裝腳本制作較為簡單(個人偏愛)。
PART2 Windows環(huán)境工具制作分享
Windows工具的制作比Linux環(huán)境要繁瑣的多。因為很多調用方式特殊,且與Linux完全不兼容,所以在查閱工具的過程中花費了很多時間。這里我采用在腳本中直接下載安裝git-windows的方式,以實現Linux環(huán)境的下載工具的直接復用。
對于Windows環(huán)境下的飛槳安裝工具,一開始我沒有想好怎么利用當前虛擬環(huán)境解釋器去安裝對應的環(huán)境,只能用這種方法對需要pip安裝的庫進行安裝:

之后我看到了可以通過sys.executable獲得當前解釋器的路徑,這就給了我們直接運行命令行的可能,之后的pip安裝都會在前面加上這樣一句用于對應虛擬環(huán)境解釋器的指定:

在Windows環(huán)境下,由于默認命令行缺少很多工具,所以我們要通過powershell簡介進行下載、安裝、轉移操作:

此時最難的一步是安裝CUDNN,需要滿足以下條件:
1)管理員權限操作,因為CUDA的安裝地點默認在需要管理員操作權限的地方;
2)復制文件后需要覆蓋目標文件;
3)在powershell或者cmd中實現這些操作。最后我和小伙伴討論出一個折中的方案,我們通過一個間接的python文件執(zhí)行拷貝,同時顯式指定了需要覆蓋。
最后我和小伙伴討論出一個折中的方案,我們通過一個間接的python文件執(zhí)行拷貝,同時顯式指定了需要覆蓋。


但這里面臨另一個問題,由于我們安裝的環(huán)境是python3.7,但shutil的copytree只有在python3.8之后的版本才支持顯式覆蓋的操作,所以在這里對源碼進行了改進:

看完了飛槳安裝和環(huán)境配置,我們最后來看下套件的安裝,其全部實現邏輯在paddle_tools.py中。由于我們需要把套件安裝到對應的執(zhí)行環(huán)境中,并且要滿足在對應文件夾下執(zhí)行命令的需求,所以在每個執(zhí)行函數的開頭都必須進行一個“初始化”的操作:

這里的cd_dst_dir就是進入目標文件夾的意思,通過獲取函數名和當前目錄可以直接讓os.system運行的cmd進入預期文件夾,便可實現后續(xù)指令的順利運行:

部分Windows用戶會在安裝PaddleDetection過程中遇到pycootools編譯問題,導致庫無法使用。這里加入了提示和下載,以保證安裝后的直接使用:

至此,我們大致瀏覽了Linux和Windows的飛槳環(huán)境配置、安裝、套件下載工具的制作流程。希望對你有些幫助,理論上你也可以根據這樣的一套模板改造出自己的任何安裝工具。
04 總結
本項目還在不斷更新迭代,后續(xù)還將加入PaddleRS、PaddleTS 、Paddle3D、PaddleRec、VisualDL庫和飛槳awesome-DeepLearning倉庫。如果你有想法,歡迎加入和我一起完善這個工具或各類bug報告。后續(xù),我們還會逐步補充完善各庫的簡介,以幫助大家簡單輕松的探索其他套件。
歡迎大家fork項目,和我一起體驗使用飛槳的快樂!https://aistudio.baidu.com/aistudio/projectdetail/5448389