Scikit-learn: ๋‚˜๋Š” ์ฝ˜๋‹ค / MKL๋กœ ๋นŒ๋“œํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ดํ•ดํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค

์— ๋งŒ๋“  2015๋…„ 07์›” 29์ผ  ยท  36์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: scikit-learn/scikit-learn

MKL๊ณผ ํ•จ๊ป˜ ์•„๋‚˜์ฝ˜๋‹ค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  sklearn์„ ๋นŒ๋“œํ•˜๋ ค๊ณ  ํ•  ๋•Œ

Intel MKL FATAL ERROR: Cannot load libmkl_avx2.so or libmkl_def.so.

๋ˆ„๊ฐ€ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? / ์–ด๋–ป๊ฒŒ ๊ตฌ์ถ•ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

conda install numpy
๋‚˜๋ฅผ ์œ„ํ•ด ์˜ค๋ฅ˜ ์ˆ˜์ •

๋ชจ๋“  36 ๋Œ“๊ธ€

์–ด๋–ป๊ฒŒ ์„ค์น˜ํ–ˆ์Šต๋‹ˆ๊นŒ?

๋ผ์ด์„ผ์Šค ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹คํ–‰ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
conda ์—…๊ทธ๋ ˆ์ด๋“œ(๋˜๋Š” ์ด์™€ ์œ ์‚ฌํ•œ ๊ฒƒ)

๋‚˜๋„ ๊ทธ๋ ‡๊ฒŒํ–ˆ๋Š”๋ฐ mkl๋กœ numpy๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ sklearn์„ ์ปดํŒŒ์ผํ•˜๋ ค๊ณ  ํ•˜๋ฉด ๊ฐ€์ ธ์˜ฌ ๋•Œ ์—ฐ๊ฒฐ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

ํ  ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ง€์—ญ ํŒŒ์ด์ฌ ๋ฐ ์•„๋‚˜์ฝ˜๋‹ค์™€ ์ถฉ๋Œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์„ค์ •ํ•˜๋Š” ๋™์•ˆ :(

ํ , LD_LIBRARY_PATH๋‚˜ ๋ญ”๊ฐ€๋ฅผ ์„ค์ •ํ•ด์•ผ ํ• ๊นŒ์š”?

๋‚˜๋Š” ๋‚ด ๊ฒƒ์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/u/kkastne/miniconda/lib/

๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ฐพ์œผ๋ฉด ์ˆœ์„œ๊ฐ€ ์ค‘์š”ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ
ํŒŒ์ด์ฌ์ด ๋จผ์ € ์„ค์น˜๋ฉ๋‹ˆ๋‹ค.

2015๋…„ 7์›” 29์ผ ์ˆ˜์š”์ผ ์˜คํ›„ 5:01 Andreas Mueller [email protected]
์ผ๋‹ค:

ํ , LD_LIBRARY_PATH๋‚˜ ๋ญ”๊ฐ€๋ฅผ ์„ค์ •ํ•ด์•ผ ํ• ๊นŒ์š”?

โ€”
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/scikit-learn/scikit-learn/issues/5046#issuecomment -126094651
.

๊ทธ๊ฒƒ์€ ์‹œ์Šคํ…œ numpy์™€ LD_LIBRARY_PATH๋ฅผ ์„ž์€ ์กฐํ•ฉ์ด์—ˆ์Šต๋‹ˆ๋‹ค... ํ•ญ์ƒ ์ฆ๊ฑฐ์šด ์‹œ๊ฐ„์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์†Œ์Œ์— ๋Œ€ํ•ด ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค.

๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. @amueller Noob ์งˆ๋ฌธ:

๋‚ด ํ”„๋กœ๊ทธ๋žจ์„ ์ปดํŒŒ์ผํ•˜๊ธฐ ์œ„ํ•ด ์•„๋‚˜์ฝ˜๋‹ค์—์„œ pyinstaller๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠน์ • ์ปดํ“จํ„ฐ์—์„œ ์‹คํ–‰ํ•˜๋ฉด ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ํ•„์ž์˜ ๊ฒฝ์šฐ $LD_LIBRARY_PATH๋ฅผ ์—์ฝ”ํ•˜๋ฉด ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž๊ฐ€ ์ผ๋ถ€ ํ”„๋กœ๊ทธ๋žจ์ด ์ž‘๋™ํ•˜๋„๋ก ์„ค์ •ํ•œ ๋ช‡ ๊ฐ€์ง€ ๊ฒฝ๋กœ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ aconda lib ๊ฒฝ๋กœ๋กœ ์„ค์ •ํ•˜๊ณ  ๋น„์›Œ ๋‘๋ ค๊ณ ํ–ˆ์ง€๋งŒ ์˜ค๋ฅ˜๊ฐ€ ๊ณ„์† ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์ƒˆ๋กœ์šด ์˜ค๋ฅ˜๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋ฐฉ๊ธˆ Travis ์ธ์Šคํ„ด์Šค์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ๋Š” ์–ธ์ œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๊นŒ? ์ œ ๊ฒฝ์šฐ์—๋Š” conda install numpy๋กœ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์—ˆ๊ณ  ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ ํ›„ pyinstaller๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹จ์ผ ํŒŒ์ผ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ์ƒ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ์‹คํ–‰ ํŒŒ์ผ์„ ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•  ๋•Œ ์–ด๋–ค ์‹œ์ ์—์„œ ์ผ๋ถ€ Biopython ์ฝ”๋“œ์— ๋Œ€ํ•œ ํ˜ธ์ถœ๋กœ ์ธํ•ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋Ÿฐํƒ€์ž„์— ์ฝ”๋“œ๋ฅผ ํ…Œ์ŠคํŠธํ•  ๋•Œ๋„ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์€๋ฐ์š”?

๋‚ด conda ์„ค์น˜๋ฅผ ํ™•์ธํ•˜๋ฉด libmkl_avx2.so์™€ libmkl_def.so๊ฐ€ ๋ชจ๋‘ $home/anaconda2/lib ํด๋”์— ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ํŒŒ์ผ์„ pyintaller ์‚ฌ์–‘ ํŒŒ์ผ์— ๋ฐ”์ด๋„ˆ๋ฆฌ๋กœ ์ถ”๊ฐ€ํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ์ง€๋งŒ ์•„๋ฌด ๊ฒƒ๋„ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค...

์ƒˆ๋กœ์šด ์˜ค๋ฅ˜๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋ฐฉ๊ธˆ Travis ์ธ์Šคํ„ด์Šค์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

@amueller ๋‚˜๋Š”์ด ์˜ค๋ฅ˜๋ฅผ ๋ณด์•˜์Šต๋‹ˆ๋‹ค :

Intel MKL FATAL ERROR: Cannot load libmkl_avx2.so or libmkl_def.so.

ํŠธ๋ž˜๋น„์Šค์—์„œ๋„. ๋‚ด๊ฐ€ ์ˆ˜์ง‘ํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ ๊ฒƒ์€ numpy 1.10.2๊ฐ€ ์ผ๋ถ€ mkl ํ•ญ๋ชฉ์„ ๋ˆ„๋ฝํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. numpy 1.10.4๋Š” ๊ดœ์ฐฎ์•˜์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ https://github.com/scikit-learn/scikit-learn/pull/6508#issuecomment -194908920์— ๊ธฐ๋ก๋˜์–ด

๊ธฐ๋ก์„ ์œ„ํ•ด ์•„๋‚˜์ฝ˜๋‹ค(MKL ํฌํ•จ ๋˜๋Š” ์ œ์™ธ)๋กœ scikit-learn์„ ๋นŒ๋“œํ•˜๊ธฐ ์œ„ํ•ด LD_LIBRARY_PATH๋ฅผ ์„ค์ •ํ•  ํ•„์š”๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

@clacri ๋Š” scikit-learn๊ณผ ๊ด€๋ จ๋œ ๋ฌธ์ œ์ž…๋‹ˆ๊นŒ? ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด pyinstaller๋‚˜ Biopython ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์งˆ๋ฌธ์„ ํ•ด์•ผ ํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค...

๋‚ด๊ฐ€ ์ˆ˜์ง‘ํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ ๊ฒƒ์€ numpy 1.10.2๊ฐ€ ์ผ๋ถ€ mkl ํ•ญ๋ชฉ์„ ๋ˆ„๋ฝํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ๋‚ด ์ปดํ“จํ„ฐ์—์„œ ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•˜๋Š” ์Šค๋‹ˆํŽซ์ž…๋‹ˆ๋‹ค.

conda create -n mkl --yes python=3.5 pip nose numpy=1.10.2 scipy=0.16.1 cython=0.23.4 mkl
. activate mkl
cd ~/dev/scikit-learn
make in
python -c 'import sklearn.linear_model.tests.test_randomized_l1'
Intel MKL FATAL ERROR: Cannot load libmkl_mc3.so or libmkl_def.so.

์•„๋‹ˆ, ๋‹น์‹  ๋ง์ด ๋งž์•„. ๋‚˜๋Š” ๊ทธ๋“ค์˜ ๋ฌธ์ œ ๋ชฉ๋ก์— ๊ฒŒ์‹œํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ์ง€์ ํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋˜‘๊ฐ™๊ณ , ์•„์ฝ˜๋‹ค๋ฅผ ์‚ฌ์šฉํ•˜๋‹ค๊ฐ€๋„ ๋ณธ ๊ฒƒ ๊ฐ™์•„์„œ ๊ด€๋ จ์ด ์žˆ์ง€ ์•Š์„๊นŒ ํ•˜๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ mkl ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ๋น„์Šทํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์•„์„œ pyinstaller ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•ด ์ด๋ฏธ ์งˆ๋ฌธํ–ˆ์Šต๋‹ˆ๋‹ค. ์–ด์จŒ๋“  ์•„๋‚˜์ฝ˜๋‹ค์—์„œ ๋‚ด numpy ๋ฒ„์ „์„ ํ™•์ธํ–ˆ๋Š”๋ฐ 1.10.4์ž…๋‹ˆ๋‹ค. ์–ด์จŒ๋“  ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค :)

๊ธฐ๋ก์„ ์œ„ํ•ด ์ฐธ์กฐ๋œ ๋Œ“๊ธ€์„ ํƒ์ƒ‰ํ•˜๋ฉด์„œ Anaconda ๋ธ”๋กœ๊ทธ์—์„œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ mkl ๋ฒ„์ „์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•˜๋Š” ๊ฒŒ์‹œ๋ฌผ์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค(https://www.continuum.io/blog/developer-blog/anaconda-25 -release-now-mkl-optimizations) ์ด์ œ ์ตœ์†Œํ•œ ์ž‘์—… ๋ฒ„์ „์„ ์ปดํŒŒ์ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌ ํ•ด์š”!

๋‚˜์—๊ฒŒ ๊ฐ™์€ ๋ฌธ์ œ ๋•Œ๋ฌธ์— conda install nomkl๋กœ mkl์„ ๋•๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ง€๊ธˆ ํ–‰๋ณตํ•˜๋‹ค. ์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜๋ฉด ๋‹ค์‹œ ์ผค ์ˆ˜ ์žˆ๋„๋ก ๊ณต์œ ํ•ด ์ฃผ์„ธ์š”. ์ด ๋ฌธ์ œ๋ฅผ ์ž์„ธํžˆ ์„ค๋ช…ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๊ฐ™์€ ๋ฌธ์ œ

์œ„์˜ ๋งํฌ๋ฅผ ๋”ฐ๋ผ๊ฐ€์„œ ๋‚ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌ ํ•ด์š”.

์ ์–ด๋„ ๋‚˜์—๊ฒŒ๋Š” ์ด์ œ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด numpy 11๋กœ ์‹œ๋„ํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
2016๋…„ 4์›” 27์ผ ์ˆ˜์š”์ผ ์˜คํ›„ 10์‹œ 42๋ถ„์— gjzhu [email protected]์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

๊ฐ™์€ ๋ฌธ์ œ. ์–ด๋–ป๊ฒŒ ๋Œ€์ฒ˜ํ•ด์•ผ ํ• ์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

โ€”
๋‹น์‹ ์ด ๋Œ“๊ธ€์„ ๋‹ฌ์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/scikit-learn/scikit-learn/issues/5046#issuecomment -215292024

์„ฑ์ง„ (์ œ์ž„์Šค) ๊น€, PhD

Postdoc, ํ•˜๋ฒ„๋“œ CCB

[email protected]

[์›น] http://aspuru.chem.harvard.edu/james-sungjin-kim/

[๋งํฌ๋“œ์ธ] https://www.linkedin.com/in/jamessungjinkim

[ํŽ˜์ด์Šค๋ถ] https://www.facebook.com/jamessungjin.kim

[๋Œ€์ฒด์ด๋ฉ”์ผ] jamessungjin. [email protected]

conda install numpy
๋‚˜๋ฅผ ์œ„ํ•ด ์˜ค๋ฅ˜ ์ˆ˜์ •

์ข‹์€. ์ด์ „์— ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ์ €์—๊ฒŒ๋„ ํšจ๊ณผ์ ์ž…๋‹ˆ๋‹ค.

2016๋…„ 5์›” 3์ผ ํ™”์š”์ผ ์˜ค์ „ 11์‹œ 26๋ถ„์— alinabee [email protected]์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

์ฝ˜๋‹ค ์„ค์น˜ numpy
๋‚˜๋ฅผ ์œ„ํ•ด ์˜ค๋ฅ˜ ์ˆ˜์ •

โ€”
๋‹น์‹ ์ด ๋Œ“๊ธ€์„ ๋‹ฌ์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/scikit-learn/scikit-learn/issues/5046#issuecomment -216563766

์„ฑ์ง„ (์ œ์ž„์Šค) ๊น€, PhD

Postdoc, ํ•˜๋ฒ„๋“œ CCB

[email protected]

[์›น] http://aspuru.chem.harvard.edu/james-sungjin-kim/

[๋งํฌ๋“œ์ธ] https://www.linkedin.com/in/jamessungjinkim

[ํŽ˜์ด์Šค๋ถ] https://www.facebook.com/jamessungjin.kim

[๋Œ€์ฒด์ด๋ฉ”์ผ] jamessungjin. [email protected]

์•ˆ๋…•,

๊ธฐ๋ณธ์ ์œผ๋กœ mkl์ด ํ™œ์„ฑํ™”๋œ ์ƒํƒœ๋กœ ์ œ๊ณต๋˜๋Š” Anaconda 4.0.0์— ์ด ๋ฌธ์ œ๊ฐ€ ์žˆ์Œ์„ ์•Œ๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค.
๋ฌธ์ œ๋Š” ์‹ค์ œ๋กœ Anaconda์— ์žˆ์Šต๋‹ˆ๋‹ค. @pcgreat์ด ์œ„์—์„œ ์ œ์•ˆํ•œ python sklearn ํ…Œ์ŠคํŠธ๋กœ ์žฌํ˜„ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์‹ค์ œ ๋ฌธ์ œ๋Š” Anaconda๊ฐ€ mkl๊ณผ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์ง€๋งŒ libmkl_core.so์™€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฏ€๋กœ ๊ธฐํ˜ธ๊ฐ€ ๋ˆ„๋ฝ๋˜์–ด ๋‹ค์Œ์„ ์‹คํ–‰ํ•˜์—ฌ ๋ณผ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

$ LD_DEBUG=symbols python -c 'import sklearn.linear_model.tests.test_randomized_l1' 2>&1 | grep -i error
      2200:     /opt/anaconda/lib/python2.7/site-packages/scipy/special/../../../../libmkl_avx.so: error: symbol lookup error: undefined symbol: mkl_dft_fft_fix_twiddle_table_32f (fatal)

์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์›ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— mkl์„ ์ œ๊ฑฐํ•˜๊ณ  ์‹ถ์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹คํ–‰ ์ „์— libmkl_core.so๋ฅผ ๋ฏธ๋ฆฌ ๋กœ๋“œํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค.

$ python -c 'import sklearn.linear_model.tests.test_randomized_l1'
Intel MKL FATAL ERROR: Cannot load libmkl_avx.so or libmkl_def.so.
$
$ LD_PRELOAD=/opt/anaconda/lib/libmkl_core.so python -c 'import sklearn.linear_model.tests.test_randomized_l1'
$

๋ฌธ์•ˆ ์ธ์‚ฌ,
์•ผ๋‹ˆ๋ฅด.

๋„ˆ๋ฌด ๋ฉ‹์ง„ ์†”๋ฃจ์…˜ ์ƒ๊ฐ์ž…๋‹ˆ๋‹ค.

2016๋…„ 5์›” 11์ผ ์ˆ˜์š”์ผ ์˜ค์ „ 7:00 yanirj [email protected]์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•,

Anaconda 4.0.0์€
๊ธฐ๋ณธ์ ์œผ๋กœ ์ด ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ฌธ์ œ๋Š” ์‹ค์ œ๋กœ Anaconda์— ์žˆ์Šต๋‹ˆ๋‹ค.
@pcgreat์ด ์œ„์—์„œ ์ œ์•ˆํ•œ python sklearn ํ…Œ์ŠคํŠธ
https://github.com/pcgreat.

์‹ค์ œ ๋ฌธ์ œ๋Š” Anaconda๊ฐ€ mkl๊ณผ ์—ฐ๊ฒฐ๋˜์—ˆ์ง€๋งŒ
libmkl_core.so, ๋”ฐ๋ผ์„œ ๋ˆ„๋ฝ๋œ ๊ธฐํ˜ธ๊ฐ€ ์žˆ์œผ๋ฉฐ ๋‹ค์Œ์„ ์‹คํ–‰ํ•˜์—ฌ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

$ LD_DEBUG=symbols python -c 'sklearn.linear_model.tests.test_randomized_l1 ๊ฐ€์ ธ์˜ค๊ธฐ' 2>&1 | grep -i ์˜ค๋ฅ˜
2200: /opt/anaconda/lib/python2.7/site-packages/scipy/special/../../../../libmkl_avx.so: ์˜ค๋ฅ˜: ๊ธฐํ˜ธ ์กฐํšŒ ์˜ค๋ฅ˜: ์ •์˜๋˜์ง€ ์•Š์€ ๊ธฐํ˜ธ: mkl_dft_fft_fix_twiddle_table_32f(์น˜๋ช…์ )

์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์›ํ•˜๋ฏ€๋กœ mkl์„ ์ œ๊ฑฐํ•˜๊ณ  ์‹ถ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
๊ทธ๋ž˜์„œ ๋‚˜๋Š” ๋‚˜๋ฅผ ์œ„ํ•ด ์ผํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค - ์ „์— libmkl_core.so๋ฅผ ๋ฏธ๋ฆฌ๋กœ๋“œํ•˜์‹ญ์‹œ์˜ค
์‹คํ–‰.

$ python -c 'sklearn.linear_model.tests.test_randomized_l1 ๊ฐ€์ ธ์˜ค๊ธฐ'
์ธํ…” MKL ์น˜๋ช…์  ์˜ค๋ฅ˜: libmkl_avx.so ๋˜๋Š” libmkl_def.so๋ฅผ ๋กœ๋“œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
$

$ LD_PRELOAD=/opt/anaconda/lib/libmkl_core.so python -c 'sklearn.linear_model.tests.test_randomized_l1 ๊ฐ€์ ธ์˜ค๊ธฐ'
$

๋ฌธ์•ˆ ์ธ์‚ฌ,
์•ผ๋‹ˆ๋ฅด.

โ€”
๋‹น์‹ ์ด ๋Œ“๊ธ€์„ ๋‹ฌ์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/scikit-learn/scikit-learn/issues/5046#issuecomment -218427199

์„ฑ์ง„ (์ œ์ž„์Šค) ๊น€, PhD

Postdoc, ํ•˜๋ฒ„๋“œ CCB

[email protected]

[์›น] http://aspuru.chem.harvard.edu/james-sungjin-kim/

[๋งํฌ๋“œ์ธ] https://www.linkedin.com/in/jamessungjinkim

[ํŽ˜์ด์Šค๋ถ] https://www.facebook.com/jamessungjin.kim

[๋Œ€์ฒด์ด๋ฉ”์ผ] jamessungjin. [email protected]

์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ตœ์‹  ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ–ˆ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์†”๋ฃจ์…˜์€ ๋‚ด๊ฐ€ ์ƒ๊ฐํ–ˆ๋˜ ๊ฒƒ๋ณด๋‹ค ์‰ฌ์› ์Šต๋‹ˆ๋‹ค. ์ด์œ ๊ฐ€ ๋ฌด์—‡์ด๋“  Anaconda๋Š” numpy/scipy ์Šคํƒ์˜ MKL ์ง€์› ๋ฒ„์ „์„ ์„ค์น˜ํ–ˆ์ง€๋งŒ ์‹ค์ œ๋กœ mkl ์ž์ฒด๋ฅผ ์„ค์น˜ํ•˜์ง€๋Š” ์•Š์•˜์Šต๋‹ˆ๋‹ค. Jupyter ์ตœ์†Œ ๋…ธํŠธ๋ถ ์Šคํƒ์„ ๊ธฐ๋ฐ˜์œผ๋กœ Docker ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•  ๋•Œ ์ด๊ฒƒ์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค.

๊ฐ„๋‹จํ•œ conda install --yes mkl mkl-service ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋ฏธ๋ฆฌ ๋กœ๋“œ๋œ ipython ํ„ฐ๋ฏธ๋„์„ ์—ด ๋•Œ pca ๋ฃจํ‹ด ์ค‘ ํ•˜๋‚˜๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ๋‹ค์Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.
:
/home/rp2801/anaconda2/bin/python: ๊ธฐํ˜ธ ์กฐํšŒ ์˜ค๋ฅ˜: /home/rp2801/anaconda2/lib/libmkl_core.so: ์ •์˜๋˜์ง€ ์•Š์€ ๊ธฐํ˜ธ: mkl_serv_get_max_threads
๋‚ด ipython ํ„ฐ๋ฏธ๋„์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์—ด์—ˆ์Šต๋‹ˆ๋‹ค.
$ LD_PRELOAD=/๊ฒฝ๋กœ/to/libmkl_core.so ipython

https://www.continuum.io/blog/developer-blog/anaconda-25-release-now-mkl-optimizations
์ด ๋งํฌ๊ฐ€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค

๋‚˜๋Š” ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. MKL์„ ์ œ๊ฑฐํ•˜๋Š” ๋Œ€์‹  ๋นŒ๋“œ๋œ ์ด์ „ cvxopt๋กœ ์ „ํ™˜ํ•˜๋Š” ๋Œ€์‹  ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ฝ˜๋‹ค ์„ค์น˜ cvxopt=1.1.8=py35_0

๋ฌธ์ œ๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. https://docs.continuum.io/mkl-optimizations/ ํŠœํ† ๋ฆฌ์–ผ์ž…๋‹ˆ๋‹ค.
๋ช…๋ น:
์ฝ˜๋‹ค ์—…๋ฐ์ดํŠธ ์ฝ˜๋‹ค
์ฝ˜๋‹ค ์—…๋ฐ์ดํŠธ ์•„๋‚˜์ฝ˜๋‹ค
์ฝ˜๋‹ค ์—…๋ฐ์ดํŠธ mkl

numpy: 1.11.2 ์—์„œ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Œ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” ๋‹ค์Œ์— ์˜ํ•ด ์žฌํ˜„๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
$ python -c 'import sklearn.linear_model.tests.test_randomized_l1'
์ธํ…” MKL ์น˜๋ช…์  ์˜ค๋ฅ˜: libmkl_avx.so ๋˜๋Š” libmkl_def.so๋ฅผ ๋กœ๋“œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

numpy๋ฅผ 1.11.1๋กœ ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œํ•œ ํ›„ ์ด ์˜ค๋ฅ˜๊ฐ€ ์‚ฌ๋ผ์กŒ์Šต๋‹ˆ๋‹ค.
conda install numpy=1.11.1
๋‹ค์Œ ํŒจํ‚ค์ง€๋Š” ์ข…์†์„ฑ ์ถฉ๋Œ๋กœ ์ธํ•ด ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œ๋ฉ๋‹ˆ๋‹ค.
numpy: 1.11.2-py35_0 --> 1.11.1-py35_0
๊ณ„์†([y]/n)? ์™€์ด

์ฒจ๊ฐ€
numpy๋ฅผ np๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ
์Šคํฌ๋ฆฝํŠธ ์‹œ์ž‘ ๋ถ€๋ถ„์—์„œ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค :-)

nomkl๋กœ MKL์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ณ  ์‹ถ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
์ฒจ๊ฐ€

import mkl
mkl.get_max_threads()

๋‚˜๋ฅผ ์œ„ํ•ด์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

conda install numpy
๋‚˜๋ฅผ ์œ„ํ•ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

์ฝ˜๋‹ค ์„ค์น˜ -c ์ธํ…” mkl

๋‚˜๋ฅผ ์œ„ํ•ด ์ผํ–ˆ๋‹ค

์ฝ˜๋‹ค ์„ค์น˜ numpy
๋‚˜๋ฅผ ์œ„ํ•ด ๋ฌธ์ œ๋„ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰