64๋นํธ Windows 10์์ Anaconda Python 3.x์ฉ xgboost๋ฅผ ์ปดํ์ผํ๊ณ ์ถ์ผ๋ฏ๋ก ์ฌ๊ธฐ์ ๋จ๊ณ๋ฅผ ๋ฐ๋์ต๋๋ค. https://xgboost.readthedocs.org/en/latest/build.html#building -on-windows ๋ฐ ์ฌ๊ธฐ - 64๋นํธ msys๊ฐ ์คํจํ python์์ xgboost๋ฅผ ์ค์นํฉ๋๋ค. 64๋นํธ mingw g++๋ฅผ ์ฌ์ฉํ์ฌ mingw64.mk๋ฅผ ์ฌ์ฉํ์ฌ "make -j4"๋ฅผ ์ํํ ๋ ๋ค์ ์ค๋ฅ ๋ฉ์์ง๊ฐ ๋ํ๋ฉ๋๋ค.
g++: ์ค๋ฅ: dmlc-core/libdmlc.a: ํด๋น ํ์ผ ๋๋ ๋๋ ํฐ๋ฆฌ๊ฐ ์์ต๋๋ค.
g++: ์ค๋ฅ: rabit/lib/librabit_empty.a: ํด๋น ํ์ผ ๋๋ ๋๋ ํฐ๋ฆฌ๊ฐ ์์ต๋๋ค.
Makefile:120 : ๋์ 'lib/libxgboost.dll'์ ๋ํ ๋ ์ํผ๊ฐ ์คํจํ์ต๋๋ค.
mingw32-make: *** [lib/libxgboost.dll] ์ค๋ฅ 1
๋ก๊ทธ ๋ฉ์์ง์ ๋ํ ์์ธํ ๋ด์ฉ์ ๋ค์์์ ์ฐพ์ ์ ์์ต๋๋ค.
๋ก๊ทธ.txt
๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์์ผ๋ฉฐ ์ด๋ป๊ฒ ํด๊ฒฐํ ์ ์๋์ง ์๋ ค์ฃผ์๊ฒ ์ต๋๊น?
์ ๋ง ๊ฐ์ฌํฉ๋๋ค.
mingw32-make.exe๋ฅผ git ๋๋ ํ ๋ฆฌ(์: C:\Program Files\Git\usr\bin)์ ๋ณต์ฌํ๊ณ make.exe๋ก ์ด๋ฆ์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ git ์ ธ์์ make -j4๋ฅผ ๋ค์ ์คํํฉ๋๋ค.
dmlc-core ๋ฐ rabit๋ฅผ ์ง์ ๋น๋ํด์ผ ํฉ๋๋ค.
cd dmlc-์ฝ์ด
-j4๋ฅผ ๋ง๋ค๋ค
cd ../ํ ๋ผ
-j4๋ฅผ ๋ง๋ค๋ค
๊ทธ๋ฌ๋ ์ด๊ฒ์ ๋ด ์ค์น์์ ์คํจํ์ฌ ์ด์ ๋ฅผ ์ดํดํ๋ ค๊ณ ํฉ๋๋ค.
์๊ฒ ์ต๋๋ค. ์ฐพ์์ต๋๋ค.
mingw64๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๊ฒฝ๋ก์ mingw32-make๊ฐ ์์ด์ผ ํฉ๋๋ค. ์ค์น ๊ฐ์ด๋์ ์ค๋ช
๋ ๋๋ก ๋ณ์นญ์ ๋ง๋ญ๋๋ค.
๊ทธ๋ฐ ๋ค์ xgboost ๋๋ ํ ๋ฆฌ๋ก ์ด๋ํ์ฌ ๋ค์์ ์ํํฉ๋๋ค.
cd dmlc-์ฝ์ด
-j4๋ฅผ ๋ง๋ค๋ค
cd ../ํ ๋ผ
lib/librabit_empty -j4 ๋ง๋ค๊ธฐ
CD ..
cp make/mingw64.mk config.mk
-j4๋ฅผ ๋ง๋ค๋ค
์ค์:
์ด์ ์ฃผ์์์ ํ ์ค์ ์ฝ์ด์ผ ํฉ๋๋ค.
lib/librabit_empty.a -j4๋ฅผ ๋ง๋ญ๋๋ค.
๋์ ์
lib/librabit_empty -j4 ๋ง๋ค๊ธฐ
jfpuget ๊ฐ์ฌํฉ๋๋ค!! ๋ง์นจ๋ด ์์ ๋จ๊ณ์์ ์๋ํฉ๋๋ค!
์ฌ๊ธฐ์ ์์ ํ ์ง์นจ์ ์์ฑํ์ต๋๋ค. https://www.ibm.com/developerworks/community/blogs/jfp/entry/Installing_XGBoost_For_Anaconda_on_Windows?lang=en
@jfpuget ์ง์นจ์ ๊ฐ์ ํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค. ์ด๋ค PR์ด๋ ์ง์ฌ์ผ๋ก ํ์ํฉ๋๋ค.
@jfpuget ์ด๊ฒ์ ๋ฉ์ง๊ฒ ๋ณด์ ๋๋ค. ์ด์ ๋ช ๋ น์ ๊ฐ์ ํ๊ธฐ ์ํด PR์ ๋ง๋ค ์ ์์ต๋๊น? ๊ฐ์ฌ ํด์!
๋ฌผ๋ก , ์ต๋ํ ๋นจ๋ฆฌ ํ ๊ฒ์ ๋๋ค (๋ด๊ฐ ํด๊ฐ์์ ๋ง ๋์์๊ณ ์ฌ๋๋ค์ด ์ง์ฅ์์ ๋๋ฅผ ์๊ฐํ๊ธฐ ๋๋ฌธ์ ๋ฉฐ์น ;) )
์๋ ๋ชจ๋. ๋ฃจํธ ๋๋ ํ ๋ฆฌ์ 'make -j4'๋ฅผ ํ๋ฉด ์ด๋ฐ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์กฐ์ธ์ด ์์ผ์ ๊ฐ์? ๊ณ ๋ง์
ํ์ ๋๋ ํ ๋ฆฌ ๋๋ ํ์ผ ๋น๋๊ฐ ์ด๋ฏธ ์กด์ฌํฉ๋๋ค.
์ฒ๋ฆฌ ์ค ์ค๋ฅ ๋ฐ์: ๋น๋.
Makefile:97 : ๋์ 'build/logging.o'์ ๋ํ ๋ ์ํผ๊ฐ ์คํจํ์ต๋๋ค.
make: ** [build/logging.o] ์ค๋ฅ 1make: * * ๋๋์ง ์์ ์์
์ ๊ธฐ๋ค๋ฆฌ๋ ์ค....
๋ช
๋ น ๊ตฌ๋ฌธ์ด ์ฌ๋ฐ๋ฅด์ง ์์ต๋๋ค.
Makefile:97 : 'build/common/common.o' ๋์์ ๋ํ ๋ ์ํผ๊ฐ ์คํจํ์ต๋๋ค.
make: ** [build/common/common.o] ์ค๋ฅ 1๋ช
๋ น ๊ตฌ๋ฌธ์ด ์ฌ๋ฐ๋ฅด์ง ์์ต๋๋ค.Makefile:97 : ๋์ 'build/c_api/c_api_error.o'์ ๋ํ ๋ ์ํผ๊ฐ ์คํจํ์ต๋๋ค.make: * * [build/c_api/c_api_error.o] ์ค๋ฅ 1
์์์ต๋๋ค... git cmd๋ฅผ ์ฌ์ฉํ๊ณ ์์์ต๋๋ค. git bash๊ฐ ์๋๋ผ... ๊ทธ๋์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.
๋ํ Windows์์ xgboost R ๋ฐ python ํจํค์ง๋ฅผ ๋น๋ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๋ฉ๋ชจ๋ฅผ ๊ณต์ ํ ์ ์์ต๋๋ค.
๋ด ํด๊ฒฐ ๋ฐฉ๋ฒ ์ค ์ผ๋ถ๋ Jean-Franรงois'์ ๋น์ทํ์ง๋ง Rtools์ ํจ๊ป ๋ฒ๋ค๋ก ์ ๊ณต๋๋ mingw ๋น๋ ๋๊ตฌ ๋ชจ์์ ์ฌ์ฉํ๊ณ ์๊ธฐ ๋๋ฌธ์ ์ฝ๊ฐ์ ๋ฏธ๋ฌํ ์ฐจ์ด๊ฐ ์์ต๋๋ค. ๋ณธ์ง์ ์ผ๋ก Windows๋ ์ค๋๋ ๋ค์ํ ์ ๋์ ์์ ์ฑ, ์์ ์ฑ ๋ฐ ์ต์ ์ฑ์ ์ง๋ ์์ฒญ๋๊ฒ ๋ค์ํ mingw ๊ธฐ๋ฐ ๋ฒ๋ค๋ก ์๋ง์ ๋๋ค. ์๋์์ ์ค๋ช ํ๋ ์ํฉ์์๋ ํจ๊ป ์๋ํด์ผ ํ๋ ์ธ ๊ฐ์ง mingw ๊ธฐ๋ฐ ๋๊ตฌ ์งํฉ์ด ์์ต๋๋ค.
ํ์๋ xgboost์ C++11 ์๊ตฌ ์ฌํญ์ ์ถฉ๋ถํ๋ฉฐ ์ง๊ธ๊น์ง ์ด ํผ๋์ ๋ ๋ค๋ฅธ mingw ๋ฐฐํฌ๋ฅผ ํฌํจํ ์ด์ ๊ฐ ์์ต๋๋ค. ์ด๋ฌํ ์ํฉ์์๋ PATH์ ๋ฌด์์ด ๋ค์ด๊ฐ๊ณ ์ด๋ค ์์๋ก ๋ค์ด๊ฐ๋์ง ๋งค์ฐ ์ฃผ์ํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
์ต์ Rtools ๋ฒ๋ค ๋ฒ์ 3.3์ ์ฌ์ฉํฉ๋๋ค. ๊ทธ๋ฌ๋ (์ค์), Rtools๋ฅผ ์ค์นํ๋ ๋์ gcc 4.9์ ํจ๊ป 3.3 ๋๊ตฌ ๋ชจ์์ ์ค์นํ์ง ์์ต๋๋ค. ์ฌ์ ํ ๋ช ๊ฐ์ง ๋ฌธ์ ๊ฐ ์์ต๋๋ค. 3.2 64๋นํธ ๋๊ตฌ ๋ชจ์์ด๋ฉด ์ถฉ๋ถํ๊ณ ์ ์๋ํฉ๋๋ค. R์ ๋ ๋ง์ด ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ Rtools์ ๊ฒฝ๋ก๊ฐ ๋ด ์์คํ PATH์ ์ถ๊ฐ๋์์ง๋ง Miniconda์ ๊ฒฝ๋ก๋ ์ถ๊ฐ๋์ง ์์์ต๋๋ค. Anaconda์ ๋ฐ๋ก ๊ฐ๊ธฐ๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ํ์ด์ฌ์ด ํ์ํ ๋๋ง๋ค ํ์ํ ๊ฒฝ๋ก๋ฅผ ์๋์ผ๋ก ์ค์ ํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
setwd('wherever xgboost R-package directory is')
install.packages('.', repos = NULL, type='source')
setwd('tests')
source('testthat.R')
which gcc
๊ฐ /c/Rtools/gcc-4.6.3/bin/gcc
๊ฐ๋ฆฌํค๋์ง ํ์ธํ์ญ์์ค(Rtools๊ฐ ์ค์น๋ ์์น์ ๋ฐ๋ผ ๋ค๋ฆ)rabit/Makefile
ํธ์งํ๊ณ -m64
ํ๋๊ทธ๋ฅผ CFLAGS ์ ์ ๋ผ์ธ์ ์ถ๊ฐํฉ๋๋ค(์ฒ์๋ถํฐ ์์ด์ผ ํ์ง ์๋์?): export CFLAGS = -m64 -O3 -msse2 $(WARNFLAGS)
cp make/mingw64.mk config.mk
cp make/mingw64.mk dmlc-core/config.mk
cd rabit
make lib/librabit_empty.a -j4
cd ../dmlc-core
make -j4
cd ..
make -j4
export PATH=/c/Miniconda/Scripts:/c/Miniconda:/C/Miniconda/MinGW/bin:$PATH
cd python-package/
python setup.py install
python tests/python/test_basic_models.py
๋ง์ต๋๋ค. ์ด๋ฏธ ์๋ํ๋ g++ ์ปดํ์ผ๋ฌ๊ฐ ์๋ค๋ฉด ๋ค๋ฅธ ์ปดํ์ผ๋ฌ๋ฅผ ์ค์นํ ํ์๊ฐ ์์ต๋๋ค.
https://github.com/dmlc/xgboost/pull/1071 ์ ์ฌ์ฉ ํ๋ฉด ์์ ์ด ๋ ์ฌ์์ง๋๋ค.
BTW, ์ต๊ทผ Mingw ๋ฐฐํฌํ์ ์ฌ์ฉํ ๋ ํ๋ก์ ํธ ๋ฃจํธ์์ mingw32-make.exe -j
๋ฅผ ์คํํ์ฌ ๋ชจ๋ ๊ฒ์ ํ ๋ฒ์ ์ปดํ์ผํ ์ ์๋ #1071์ ์ ์ถํ์ต๋๋ค. Rtools์ make๋ ์ฌ์ ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ํ์ํฉ๋๋ค...
@jfpuget ๊ถ๊ธํฉ๋๋ค. POSIX ์ค๋ ๋์ SEH ์์ธ ์ฒ๋ฆฌ ์ต์ ์ ์ ํํ ํน๋ณํ ์ด์ ๊ฐ ์์ต๋๊น? ์๋ฅผ ๋ค์ด, ๋ฐฉ๊ธ Win32 ๋ฐ SJLJ๋ฅผ ์ค์นํ๋ ค๊ณ ์๋ํ๋๋ฐ(๊ทธ๋ฅ Rtools์ gcc๊ฐ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์) ์๋ํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
gcc 5.3์ ๋ํ ํฅ๋ฏธ๋ก์ด ๊ด์ฐฐ: rabit ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํด -m64 ํ๋๊ทธ๊ฐ ์ค์ ๋์๋์ง ์ฌ๋ถ์ ๊ด๊ณ์์ด 64๋นํธ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ฐ๊ฒฐ์ ์ค๋ฅ๊ฐ ์์์ต๋๋ค. ์ผ๋ถ ๋ฒ์ ์์ gcc๊ฐ ๊ธฐ๋ณธ๊ฐ์ผ๋ก -m64๋ก ์ ํ๋์์ต๋๊น?
Python ๋ด์์ PATH ์์ ์: ์์คํ PATH๋ฅผ ๋ฐฉ๊ธ ์์ ํ ๊ฒฝ์ฐ Windows์ anaconda์์ Python์ ๋๋๋ก(์์ ๋ฐฉ๋ฒ์ ๋ฐ๋ผ?) ์ฌ๋ถํ /์ฌ๋ก๊ทธ์ธ ํ์๋ง ์ ํํฉ๋๋ค. ์ง๊ธ์ ํ์ธํ์ง ์์์ง๋ง ์ผ๋ง ์ ์ ๋น์ทํ ๋ฌธ์ ๊ฐ ์์์ต๋๋ค.
@khotilov ๋ฐฉ๊ธ mingw64-gw ์ค์น ํ๋ก๊ทธ๋จ์ ๊ธฐ๋ณธ ์ค์ ์ ๊ทธ๋๋ก ๋์์ต๋๋ค.
python์ ์ฌ๋ถํ ํด๋ ์์คํ ๊ฒฝ๋ก ์์ ์ด ์ถฉ๋ถํ์ง ์์์ต๋๋ค(์ค์ ๋ก๋ ๋ ธํธ๋ถ ๋ด์์ ์ปค๋์ ๋ค์ ์์ํ์ต๋๋ค). Python ๋ด๋ถ์์ os ๊ฒฝ๋ก ๋ณ์๋ฅผ ์์ ํด์ผ ํ๋ ์ด์ ๋ฅผ ๋ค์ ํ์ธํ๊ฒ ์ต๋๋ค.
๋ด ๋ชฉํ๋ xgboost๋ฅผ ์คํํ๊ณ ์คํํ๋ ๊ฒ์ด์์ผ๋ฏ๋ก ์๋ฃ๋์์ ๋ ์กฐ์ฌ๋ฅผ ์ค๋จํ์ต๋๋ค.
@khotilov ์ด๋ค MinGW-
๊ทธ๋ฌ๋ ์ผ๋ถ ๋ฐฐํฌํ(์๋ง๋ ๋๋ถ๋ถ)์์๋ ๋ค์ค ์ํคํ ์ฒ๋ฅผ ์ง์ํ์ง ์์ต๋๋ค.
xgboost\dmlc-core\include\dmlc\base.h์์
113ํ
//#fopen64 std::fopen ์ ์
MINGW64๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ด fopen64 ์ ์์ ์ฃผ์์ ๋ฌ์์ผ ํฉ๋๋ค.
mingw64๋ stdio.h์์ ์์ฒด fopen64๋ฅผ ์ ์ํ์ต๋๋ค.
@yunzhou ๊ฐ์ฌํฉ๋๋ค. ๋ฐค์๋๋ก ์๋ง์ด ๋ ํ, ๋น์ ์ ํธ๋ฆญ์ ์ ๋ง๋ก ์ผ์ํ์ต๋๋ค.
์ค์ ๋ก ๋ด ์ค๋ฅ๋ 'base.h'์ ๋ํด ์๋ชป๋ ๊ฒ์ ๋งํ์ต๋๋ค.
@jfpuget : ๊ทํ์ ๋งํฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ค์น๋ฅผ ์๋ํ์ง๋ง ๋ค์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
Makefile:136 : ๋์ 'xgboost'์ ๋ํ ๋ ์ํผ๊ฐ ์คํจํ์ต๋๋ค.
๋๋ ๋น์ ์ ๊ธฐ์ฌ์ ๋ฐ๋ผ ๋ชจ๋ ๊ฒ์ํ๋ค๊ณ ํ์ ํฉ๋๋ค. ์ ๋ฐ ๋ ์ข ๋์ ์ค ์ ์๋? ๊ฐ์ฌ ํด์
์๋
,
์ถ๊ฐ ์ ๋ณด๋ฅผ ์ ๊ณตํ์ง ์๋ ํ ๋์์ ๋ฐ์ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ๋น๋ ์ค ์ค๋ฅ๋ ๋ฌด์์
๋๊น? ๋น์ ์ด ์ ๊ณตํ๋ ๊ฒ์ ์ค๋ฅ ๋ฉ์์ง๊ฐ ์๋๋ผ ์์ฝ์
๋๋ค.
์์ ์์ด ๋น๋ ๋ก๊ทธ๋ฅผ ๋ณด๋ด์ฃผ์ธ์.
๊ฐ์ฌํฉ๋๋ค. JFJean-Francois Puget, ๊ธฐ๊ณ ํ์ต ๋ฐ ์ต์ ํ, IBM AnalyticsMobile ๋ฐ์ฌ ์ ์ ์์ง๋์ด: +33(0)6 7000 8815 ์ด๋ฉ์ผ: jf. [email protected]๋ธ๋ก๊ทธ : http://bit.ly/jfpuget Twitter: @JFPuget
----- ์๋ณธ ๋ฉ์์ง -----๋ฐ์ : harishneela [email protected] : dmlc/xgboost [email protected] : Jean Francois Puget/France/ IBM@IBMFR , [email protected] : Re: [dmlc/xgboost] 64๋นํธ mingw g++๋ฅผ ์ฌ์ฉํ์ฌ xgboost ๋น๋ ์ ์คํจ(#1049)๋ ์ง: 2016๋
11์ 2์ผ ์์์ผ ์คํ 7์ 51๋ถ
@jfpuget : ๋งํฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ค์น๋ฅผ ์๋ํ์ง๋ง ๋ค์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. rMakefile:136 : ๋์ 'xgboost'์ ๋ํ ๋ ์ํผ๊ฐ ์คํจํ์ต๋๋ค.
๋๋ ๋น์ ์ ๊ธฐ์ฌ์ ๋ฐ๋ผ ๋ชจ๋ ๊ฒ์ํ๋ค๊ณ ํ์ ํฉ๋๋ค. ์ ๋ฐ ๋ ์ข ๋์ ์ค ์ ์๋? ๊ฐ์ฌ ํด์
โ๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด ์ด๋ฉ์ผ์ ๋ฐ์์ต๋๋ค. ์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub์์ ๋ณด๊ฑฐ๋ ์ค๋ ๋๋ฅผ ์์๊ฑฐํ์ธ์.
Sauf ํ์ contraire ci-dessus:/ ์์ ๋ฌ๋ฆฌ ๋ช
์๋์ง ์๋ ํ:
ํ์ฌ IBM ํ๋์ค
Siรจge Social : 17 avenue de l'Europe, 92275 Bois-Colombes Cedex
RCS ๋ญํ
๋ฅด 552 118 465
Forme Sociale : SAS
์บํผํ ์์
: 657.364.587 โฌ
์ฌ์ด๋ /์ฌ์ด๋ : 552 118 465 03644 - ์ฝ๋ NAF 6202A
๋งฅ ์ค์น xgboost
1. ๋ธ๋ฃจ ์ ๊ทธ๋ ์ด๋
Mac์ 10.12๋ก ์ ๊ทธ๋ ์ด๋ ํ ํ brew๊ฐ ์ ๋ฐ์ดํธ๋์ง ์์๊ธฐ ๋๋ฌธ์ brew๋ฅผ ์ ๋ฐ์ดํธํ ๋ ์ฌ๋ฌ pit์ ๋ฐ๊ฒฌํ๋๋ฐ ์ด์ ๋ถ์ํด ๋ณด๊ฒ ์ต๋๋ค. brew update ๋ฅผ ์ง์ ์ฌ์ฉํ์ฌ brew๋ฅผ ์ ๋ฐ์ดํธํ์ง ๋ง์ญ์์ค. ์ค๋ฅ๊ฐ ๋ณด๊ณ ๋ฉ๋๋ค. brew upgrade๋ฅผ ์ฌ์ฉํ์ฌ ์ํํธ์จ์ด๋ฅผ ์ ๋ฐ์ดํธํ๊ณ brew๋ ๋ค๋ฅธ ์ํํธ์จ์ด๋ฅผ ์ ๋ฐ์ดํธํ๋ ๋์ ์ ๊ทน์ ์ผ๋ก ์ ๋ฐ์ดํธ๋ฉ๋๋ค.
2. ์ต์ ๋ฒ์ ์ gcc(gcc-6) ์ค์น
์์กฐ ์ค์น gcc --multilib ์์ด
์ฐธ๊ณ : brew๋ฅผ ์ ๊ทธ๋ ์ด๋ํ๋ฉด gcc๋ฅผ ์ค์นํ ์ ์์ต๋๋ค.
3. Git์์ ์์ค ์ฝ๋ ๋ค์ด๋ก๋
ํ๋ด ๋ณต์ --์ฌ๊ท https://github.com/dmlc/xgboost
๋ค์ด๋ก๋ ํ cd xgboost; cp make/minimum.mk ./config.mk; make -j4๋ฅผ ์คํํ์ฌ xgboost๋ฅผ ์ปดํ์ผํฉ๋๋ค. ์ง๊ธ๊น์ง๋ xgboost๋ฅผ ์ปดํ์ผํ์ ๋ฟ์ ๋๋ค. (๋ช ๋ฒ ๋ ์๋ํ๋ฉด ๋ค์ ๋ฒ์ ์ฑ๊ณตํ ์ ์์ต๋๋ค)
4. xgboost์ ํ์ด์ฌ ๋ฒ์ ์ค์น
xgboost๋ Python ๋ฒ์ ๊ณผ R ์ธ์ด ๋ฒ์ ์ผ๋ก ๋๋ฉ๋๋ค. R์ ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ผ๋ก ์ธํด python์ ์ฌ์ฉํ๋ฏ๋ก xgboost์ python ๋ฒ์ ์ ์ค์นํฉ๋๋ค.
xgboost ๋๋ ํ ๋ฆฌ๋ฅผ ์ ๋ ฅํ ๋ค์ xgboost์ python-package ๋๋ ํ ๋ฆฌ๋ฅผ ์ ๋ ฅํ๊ณ ๋ค์ ๋ช ๋ น์ ์ฌ์ฉํฉ๋๋ค. cd python-package/
python-package ๋๋ ํ ๋ฆฌ์์ ์คํ: sudo python setup.py install, sudo๊ฐ ์ถ๊ฐ๋์ง ์์ผ๋ฉด ์ค๋ฅ๊ฐ ๋ณด๊ณ ๋ฉ๋๋ค.
5. ์๋ฃ, ๋ด๊ฐ ์ง์ ์ค์นํ์ต๋๋ค. ๋ค๋ฅธ ์ฌ๋๋ค์๊ฒ ์ ์ฉํ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
@jfpuget ์ ์ด๋ฌํ ์ง์นจ์ด POWER8 ์์คํ ์์ ์ ํจํ๋ค๋ ๊ฒ์ ์๊ณ ์๋์ง ๊ถ๊ธํฉ๋๋ค. POWER8 ๋ฐ centos 7์์ XGBoost๋ฅผ ๋น๋ํ๋ ค๊ณ ํฉ๋๋ค. OP์ ๋์ผํ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
๋ชจ๋ฅด๊ฒ ์ด์.
์๋ ํ์ธ์ @jfpuget
๊ทํ์ ๋ธ๋ก๊ทธ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ๊ทธ๋ฌ๋ ์ค์น๋ฅผ ์๋ฃํ๋ ค๋ฉด ๋ช ๊ฐ์ง ์ง์นจ์ด ํ์ํฉ๋๋ค. "python setup.py install"์ ์ ๋ ฅํ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
"ํ๋ณด ๊ฒฝ๋ก์์ xgboost ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค"๋ผ๊ณ ํ์๋ฉ๋๋ค. ์ด ์์ ์ด์ ์ ์ค์น์ ์ค๋ฅ๊ฐ ์์์ ์๋ฏธํฉ๋๊น? ๋จ๊ณ๋ฅผ ๋ฐ๋์ ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์์์ต๋๋ค.
์๋ถ ์ธ์ฌ
๋๋ ํ์ ๋ชจ๋์ ๋ง๋ค๊ธฐ ์ํด jfpuget์ ์ง์๋ฅผ ๋ฐ๋์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ๋ง์ง๋ง make ์ดํ์ ์ค๋ฅ๊ฐ ์์ต๋๋ค.
dmlc-core/libdmlc.a: ๊ธฐํธ ์ถ๊ฐ ์ค๋ฅ: ์์นด์ด๋ธ์ ์์ธ์ด ์์ต๋๋ค. ranlib๋ฅผ ์คํํ์ฌ ํ๋ ์ถ๊ฐ
collect2.exe: ์ค๋ฅ: ld๊ฐ 1 ์ข
๋ฃ ์ํ๋ฅผ ๋ฐํํ์ต๋๋ค.
Makefile:174 : ๋์ 'xgboost'์ ๋ํ ๋ ์ํผ๊ฐ ์คํจํ์ต๋๋ค.
make: * [xgboost] ์ค๋ฅ 1
๋๊ตฌ๋ ์ง ์์ด๋์ด๊ฐ ์์ต๋๊น?
๊ฐ์ฌ ํด์!
@jfpuget ๋ด Windows OS์์ ๊ทํ์ ์ง์์ ๋ฐ๋ผ ์ฌ๋ฌ ๋ฒ ์๋ํ์ง๋ง ๋งค๋ฒ ์ด ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
$ cd dmlc-์ฝ์ด
$ mingw32-make -j4
g++ -c -O3 -๋ฒฝ -Wno-unknown-pragmas -Iinclude -std=c++0x -fPIC -DDMLC_USE_HDFS=0 -DDMLC_USE_S3=0 -DDMLC_USE_AZURE=0 -msse2 -o line_split.o src/io/line_split.cc
g++ -c -O3 -๋ฒฝ -Wno-unknown-pragmas -Iinclude -std=c++0x -fPIC -DDMLC_USE_HDFS=0 -DDMLC_USE_S3=0 -DDMLC_USE_AZURE=0 -msse2 -o recordio_split.o src/io/recordio_split.cc
g++ -c -O3 -๋ฒฝ -Wno-unknown-pragmas -Iinclude -std=c++0x -fPIC -DDMLC_USE_HDFS=0 -DDMLC_USE_S3=0 -DDMLC_USE_AZURE=0 -msse2 -o input_split_base.o src/io/input_split_base.cc
g++ -c -O3 -๋ฒฝ -Wno-unknown-pragmas -Iinclude -std=c++0x -fPIC -DDMLC_USE_HDFS=0 -DDMLC_USE_S3=0 -DDMLC_USE_AZURE=0 -msse2 -o io.o src/io.cc
g++ -c -O3 -๋ฒฝ -Wno-unknown-pragmas -Iinclude -std=c++0x -fPIC -DDMLC_USE_HDFS=0 -DDMLC_USE_S3=0 -DDMLC_USE_AZURE=0 -msse2 -o local_filesys.o src/io/local_filesys.cc
include/dmlc/./././parameter.h:25:0์ ํฌํจ๋ ํ์ผ์์
ํฌํจ/dmlc/././registry.h:14์์,
ํฌํจ/dmlc/./data.h:16์์,
include/dmlc/threadeditor.h:20์์,
src/io/cached_input_split.h:16์์,
src/io.cc:13์์:
include/dmlc/././././optional.h: 'dmlc::optional์ ์ธ์คํด์คํ์์
include/dmlc/./././parameter.h:513:7: ์ฌ๊ธฐ์์ ํ์
include/dmlc/././././optional.h:60:7: ๊ฒฝ๊ณ : ์ ํ ํ๋ ํฌ์ธํฐ๋ฅผ ์ญ์ฐธ์กฐํ๋ฉด ์๊ฒฉํ ์จ๋ฆฌ์ด์ฑ ๊ท์น์ด ๊นจ์ง๋๋ค [-Wstrict-aliasing]
์ฌํด์_์บ์คํธ
^ ~ ~ ~
include/dmlc/././././optional.h: 'const T& dmlc::optional์ ์ธ์คํด์คํ์์
include/dmlc/./././parameter.h:872:9: ์ฌ๊ธฐ์์ ํ์
include/dmlc/././././optional.h:106:12: ๊ฒฝ๊ณ : ์ ํ์ด ์๋ ํฌ์ธํฐ๋ฅผ ์ญ์ฐธ์กฐํ๋ฉด ์๊ฒฉํ ์จ๋ฆฌ์ด์ฑ ๊ท์น์ด ๊นจ์ง๋๋ค. [-Wstrict-aliasing]
reinterpret_cast ๋ฐํ~ ~ ~ ~ ~ ~ ~g++ -c -O3 -๋ฒฝ -Wno-unknown-pragmas -Iinclude -std=c++0x -fPIC -DDMLC_USE_HDFS=0 -DDMLC_USE_S3=0 -DDMLC_USE_AZURE=0 -msse2 -o data.o src/data.ccinclude/dmlc/././././optional.h: 'const T& dmlc::optional์ ์ธ์คํด์คํ์์
include/dmlc/././././optional.h:134:11: 'std::ostream& dmlc::operator<<(std::ostream&, const dmlc::optional
include/dmlc/./././parameter.h:877:13: ์ฌ๊ธฐ์์ ํ์
include/dmlc/././././optional.h:97:12: ๊ฒฝ๊ณ : ์ ํ ํ๋ ํฌ์ธํฐ๋ฅผ ์ญ์ฐธ์กฐํ๋ฉด ์๊ฒฉํ ์จ๋ฆฌ์ด์ฑ ๊ท์น์ด ๊นจ์ง๋๋ค. [-Wstrict-aliasing]
reinterpret_cast ๋ฐํ~ ~ ~ ~ ~ ~ ~g++ -c -O3 -๋ฒฝ -Wno-unknown-pragmas -Iinclude -std=c++0x -fPIC -DDMLC_USE_HDFS=0 -DDMLC_USE_S3=0 -DDMLC_USE_AZURE=0 -msse2 -o recordio.o src/recordio.ccsrc/data/././text_parser.h:11:0์ ํฌํจ๋ ํ์ผ์์src/data/./libsvm_parser.h:13์์,src/data/disk_row_iter.h:19์์,src/data.cc:12์์:include/dmlc/omp.h:15:81: ์ฐธ๊ณ : #pragma ๋ฉ์์ง: ๊ฒฝ๊ณ : OpenMP๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ํ๋ก์ ํธ๋ ๋จ์ผ ์ค๋ ๋ ์ฝ๋๋ก ์ปดํ์ผ๋ฉ๋๋ค.
~ ~ ~include/dmlc/./././optional.h: 'const T& dmlc::optional'์ ์ธ์คํด์คํ์์~ ~ ~ ~ ~ ~ ~include/dmlc/./././optional.h: 'const T& dmlc::optional'์ ์ธ์คํด์คํ์์
include/dmlc/./././optional.h:134:11: 'std::ostream& dmlc::operator<<(std::ostream&, const dmlc::optional
include/dmlc/././parameter.h:877:13: ์ฌ๊ธฐ์์ ํ์
include/dmlc/./././optional.h:97:12: ๊ฒฝ๊ณ : ์ ํ ํ๋ ํฌ์ธํฐ๋ฅผ ์ญ์ฐธ์กฐํ๋ฉด ์๊ฒฉํ ์จ๋ฆฌ์ด์ฑ ๊ท์น์ด ๊นจ์ง๋๋ค [-Wstrict-aliasing]
๋ฐํ *reinterpret_cast
^ ~ ~ ~ ~ ~ ~ ~ ~
g++ -c -O3 -๋ฒฝ -Wno-unknown-pragmas -Iinclude -std=c++0x -fPIC -DDMLC_USE_HDFS=0 -DDMLC_USE_S3=0 -DDMLC_USE_AZURE=0 -msse2 -o config.o src/config.cc
ar cr libdmlc.a line_split.o recordio_split.o input_split_base.o io.o local_filesys.o data.o recordio.o config.o
mingw๊ฐ ์๋ โโg++๋ก ์ปดํ์ผ ์ค์ ๋๋ค.
@jfpuget
https://www.ibm.com/developerworks/community/blogs/jfp/entry/Installing_XGBoost_For_Anaconda_on_Windows?lang=en ์์ ์ ๊ณต๋๋ ์ฒ๋ฐฉ์ ๋ฐ๋ผ ๋ค์ ๋จ๊ณ๋ฅผ ์ํํ์ต๋๋ค.
1) Windows์ฉ Git์ ์ค์นํ์ต๋๋ค.
2) ์์ ๋ฉ๋ด์์ Git Bash๋ฅผ ์คํํ์ต๋๋ค.
3) ๋๋ ํ ๋ฆฌ๋ฅผ /c/Users/Roshan/code๋ก ๋ณ๊ฒฝํ์ต๋๋ค.
4) ๋ค์ ๋ช
๋ น์ ์คํํ์ต๋๋ค.
$ git clone --recursive https://github.com/dmlc/xgboost
$ cd xgboost
$ git ํ์ ๋ชจ๋ ์ด๊ธฐํ
$ git ํ์ ๋ชจ๋ ์
๋ฐ์ดํธ
5) ๊ทํ์ ๊ฒ์๋ฌผ์ ์ธ๊ธ๋ URL์์ MinGW-W64๋ฅผ ๋ค์ด๋ก๋ํ์ต๋๋ค.
6) "C:\Program Files\mingw-w64\x86_64-7.1.0-posix-seh-rt_v5-rev0\mingw64\bin"์์ mingw32-make๋ฅผ ํ์ธํ๊ณ ์ฐพ์์ต๋๋ค.
7) ๋ด ๊ฒฝ๋ก ์์คํ
๋ณ์์ "C:\Program Files\mingw-w64\x86_64-7.1.0-posix-seh-rt_v5-rev0\mingw64\bin"์ ์ถ๊ฐํ์ต๋๋ค.
8) "/c/Program Files/mingw-w64/x86_64-7.1.0-posix-seh-rt_v5-rev0/mingw64/bin/mingw32-make"๋ฅผ ๋ฐํํ๋ "which mingw32-make" ๋ช
๋ น์ ์คํํ์ต๋๋ค.
9) ๋ค์ ๋ช
๋ น์ ์คํํ์ต๋๋ค. alias make='mingw32-make'
10) ๋๋ ํ ๋ฆฌ๋ฅผ "/c/Users/Roshan/code/xgboost/dmlc-core"๋ก ๋ณ๊ฒฝํ์ต๋๋ค.
11) ๊ทธ๋ฐ ๋ค์ make -j4 ๋ช
๋ น์ ์คํํ์ต๋๋ค.
์ด๋ป๊ฒ mingw ๋์ g++๋ก ์ปดํ์ผํ๊ฒ ๋์๋์? ๋๋ ๋น์ ์ ์ง์๋ฅผ ํ๋ํ๋ ๋ฐ๋์ต๋๋ค, ์ ๋ฅ์. ์ ๋๋ ์ฌ์ ํ ์ง์ฅ์์ ๋ถํ๊ณ ์์ต๋๊น?
@jfpuget ๋ชจ๋ ๊ฒ์ ์ ๋ฆฌํ๊ณ ์ด ๋ชจ๋ ๋จ๊ณ๋ฅผ ๋ค์ ์๋ํ์ต๋๋ค. ์ด๋ฒ์๋ C ๋๋ผ์ด๋ธ์ mingw๋ฅผ ์ค์นํ์ต๋๋ค(์ด ํด๋์๋ ์ด๋ฆ์ ๊ณต๋ฐฑ์ด ์์ผ๋ฏ๋ก Program Files๋ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ค์นํ๋ ๋์ ๋ฒ์ ๋ 5.3.0์ผ๋ก ์ ํํ์ต๋๋ค(๊ธฐ๋ณธ 7 ๋์ ). ํ์ง๋ง ๊ทธ๊ฒ๋ ๋์์ด ๋์ง ์์์ต๋๋ค.
@qingdatascience : ์๋ํ๊ฒ ํ๊ธฐ ์ํด ๊ตฌ์ฒด์ ์ผ๋ก ๋ฌด์์
๋๋ ๊ธฐ์ตํ์ง ๋ชปํ๋ค. @yunzhou๊ฐ ์ ์ํ ๊ฒ์ฒ๋ผ bash ์คํฌ๋ฆฝํธ ํ์ผ์ ํธ์งํ๋ ๊ฒ์ฒ๋ผ
@jfpuget๋ฟ๋ง ์๋๋ผ @datascienceqing์ ๋ง์ ๊ฐ์ฌ
xgboost๋ฅผ ์ค์นํ ์ ์์ด์ LightGBM์ ์ค์นํ์ต๋๋ค. ๋ค์ URL์ ์ ๊ณต๋ ์ง์นจ์ ๋ฐ๋์ต๋๋ค. ์ ์ฒด ์ค์น(์์์์ ์๋ฃ๊น์ง)๋ 30๋ถ ๋ฏธ๋ง์ด ์์๋์์ต๋๋ค.
https://github.com/Microsoft/LightGBM/tree/master/python-package
Windows OS๊ฐ ์์ต๋๋ค. Visual Studio๊ฐ ์์ต๋๋ค. 5๋จ๊ณ๋ก LightGBM์ ์ค์นํ ์ ์์ต๋๋ค.
1) https://cmake.org/download/์์ cmake ๋ค์ด๋ก๋ ๋ฐ ์ค์น
2) https://www.visualstudio.com/downloads/#build-tools-for-visual-studio-2017์์ MS Build๋ฅผ ๋ค์ด๋ก๋ํ์ฌ ์ค์นํฉ๋๋ค.
3) https://git-for-windows.github.io/?cm_mc_uid=41805252005114998995219&cm_mc_sid_50200000=1500774547์์ Git ๋ค์ด๋ก๋ ๋ฐ ์ค์น
4) Git Bash ์์
5) ๋ค์ ๋ช
๋ น์ ์คํํฉ๋๋ค.
git clone --recursive https://github.com/Microsoft/LightGBM
cd LightGBM/ํ์ด์ฌ ํจํค์ง
ํ์ด์ฌ setup.py ์ค์น
๋ช ๋ฒ์ ์ํ์ฐฉ์ค ๋์ ๋ง์นจ๋ด xgboost๋ฅผ ์ค์นํ ์ ์์์ต๋๋ค. ๋ค์ ์์น์ ์ง์นจ์ด ๋งค์ฐ ๋์์ด ๋์์ต๋๋ค. http://www.picnet.com.au/blogs/guido/post/2016/09/22/xgboost-windows-x64-binaries-for-download/
@gatapia @jfpuget ๊ณผ @qingdatascience ๋๋ถ์
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ฌ๊ธฐ์ ์์ ํ ์ง์นจ์ ์์ฑํ์ต๋๋ค. https://www.ibm.com/developerworks/community/blogs/jfp/entry/Installing_XGBoost_For_Anaconda_on_Windows?lang=en