Win10 系統下進行 XGBoost CPU / GPU 的安裝
XGboost 一直是 Kaggle 個項目中前段班最愛用的演算法之一,之前就一直想要安裝,但總聽聞 XGboost 在 Windows 系統下安裝十分麻煩,在尚未要用到之前,我也就一直擺著沒有去安裝,直到最近開始接觸,便想著該來鼓起勇氣安裝 XGboost 了....
XGBoost CPU 版本
原本思考要重新設置一個環境來安裝,避免與 tensorflow 之類的造成衝突 (我也不知道會不會?),但礙於還是希望能在同一個環境下進行操作,未來在演算法的挑選上面也比較不會這麼麻煩,於是便還是決定在 tensorflow GPU 的環境下安裝,所幸安裝過程十分順利,目前看起來也都沒有造成任何內部衝突的狀況發生,以下便開始介紹我的安裝流程 。
STEP 1 : 下載 XGboost 套件
XGboost 套件似乎沒有包在 Anaconda 內,因此我們無法直接從 Anaconda Prompt 下指令 pip install xgboost
直接安裝,必須從第三方下載套件再進行安裝。
我所使用的套件是從 美國加州大學(UCI) Laboratory for Fluorescence Dynamics 中下載的,其中還是有許多版本必須選擇,我們可以到 Anaconda Prompt 執行 python 先進行版本確認
確認好版本後點選即可下載
STEP 2 : 以系統管理員身分重新執行 Anaconda Prompt,並進行安裝
在安裝時可能會因為權限問題而導致安裝失敗,因此我們必須要利用系統管理員的身分來重新執行 Anaconda Prompt 來進行安裝。
執行後我們必須在與剛剛下載的檔案同樣路徑下進行安裝,因此執行 Anaconda Prompt 後利用 cd 下載檔案所在路徑
指令 ( 本例將檔案下載至 C:資料夾中 )
轉換完成即可進行安裝 pip install xgboost-0.90-cp36-cp36m-win_amd64.whl
[ Remark ] 必須要有副檔名,否則安裝會出現錯誤
STEP 3 : 安裝完成後進行簡單測試
安裝完畢後,執行 python ,import xgboost
確認會不會出現錯誤
若成功 import 便可算安裝成功。
由於我是在 tensorflow 環境下進行安裝,因此我也有多測試看看 tensorflow、keras 能否順利運作。
XGBoost GPU 版本
照著上面的流程裝完以後自得意滿,後來發現裝的是 CPU 版本,便開始著手研究 GPU 版本的安裝,怎知,這才是真正魔鬼地獄的開始......
花了將近一整天的時間研究各種安裝方式,終於把所有問題處理好,以下提供安裝流程及所遇到的狀況排除方式給需要的讀者參考
STEP 1 :下載xgboost原始碼
首先要從 https://github.com/dmlc/xgboost 將整個原始碼下載下來解壓縮
(圖片取自 : https://www.itread01.com/content/1543742352.html)
[ Remark ]
當我照著上述教程進行原始碼下載,到後面的安裝會出現錯誤,錯誤的原因似乎是指出有檔案找不到 ??
的確,按照上面教程的方式,整個 dmlc-core 的資料夾內的資料全部都沒有下載下來,我只好將 dmlc-core 整包單獨下載下來在解壓縮到源碼文件裡面的 dmlc-core 資料夾內。
STEP 2 : 將已編譯好的 xgboost.dll 文件下載後放入源碼中
一般來說,正常的安裝是需要自行編譯的,但網路上總有大神們能幫我們把這些前置作業處理好。我們只需從 http://ssl.picnet.com.au/xgboost/ 選擇 GPU enabled 裡的 xgboost.dll 下載下來放入源碼文件 xgboost-package路徑下。
STEP 3 : 執行安裝
執行 Anaconda Prompt,並將路徑設在 xgboost-package 下,執行 python setup.py install
進行安裝
STEP 4 : 進行 XGBoost GPU 的測試
Xgboost GPU 不像 TensorFlow GPU 一樣可以很清楚的看的出來現在是不是由 GPU 在進行運算,一般建議的方式是利用源碼文件中的 benchmark.py
檔案進行測試。( 在xgboost目錄下執行 python benchmark_tree.py --tree_method gpu_hist
)
基本上就是,只要可以執行 gpu_hist
這樣的參數設計,就表示已經可以使用 XGBoost GPU 了。
[ Remark ]
然而這樣簡單的步驟還是出現了問題,在我們下載的源碼中,並沒有 benchmark.py
這個檔案,取而代之的是 benchmark_linear.py
及 benchmark_tree.py
,記得請使用後者進行測試。
另外我也找到另外一個測試的 code
1 | import xgboost as xgb |
若可以執行也應該可以確定 XGBoost GPU 運作是沒有問題的。