๋๋ tensorflow๋ฅผ ๋ณด๊ฒ ๋์ด ๊ธฐ๋ปค์ง๋ง Windows๋ฅผ ์ฌ์ฉํ๋ ๋ค๋ฅธ ๋ง์ ์ฌ์ฉ์์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ด ์ง์์ด ์ด๋ฃจ์ด์ง๋ฉด ๊ธฐ์ ๊ฒ์ ๋๋ค. Windows ํฌํธ ๊ธฐ์ฌ๋ฅผ ์๋ฝํ์๊ฒ ์ต๋๊น?
ํํธ Microsoft๋ ์ต๊ทผ Linux ๋ฐ Windows์ฉ GPU๊ฐ ์๋ ์ฌ๋ฌ ์ปดํจํฐ์์ ํ์ฅ๋๋ Deep Learning ํดํท์ ์ถ์ํ์ต๋๋ค. https://github.com/Microsoft/CNTK
์ข์ ์ ์์ธ ๊ฒ ๊ฐ์์!
๋ง์ฐฌ๊ฐ์ง๋ก ๋ค์ด๋ก๋ ๋ฐ ์ค์น ํ์ด์ง์์ Windows์ ๋ํ ์ธ๊ธ์ด ์๋ ๊ฒ์ ๋ณด๊ณ ์ฝ๊ฐ ์ค๋งํ์ต๋๋ค.
์ฃผ์ ๋นํธํ์ฑ/์์๊ฐ ๋ฌด์์ธ์ง ์๋ ์ฌ๋์ด ์์ต๋๊น? ์ฃผ๋ก ํ์ผ ๊ฒฝ๋ก ๋ฑ์ ๋ฌธ์ ์ ๋๊น?
linux/mac๋ง ์ง์ํ๋ Bazel๋ก ๊ตฌ์ถ๋์์ง๋ง ์ข์ ์์์ bazel์ ๋ํ Windows ์ง์ ์ด ์ฌํด ๋ง๊น์ง ๋๋ ๊ฒ ๊ฐ๋ค๋ ๊ฒ์ ๋๋ค.
:์์ง์๊ฐ๋ฝ:
Docker๋ฅผ ์ฌ์ฉํ์ฌ Windows ์์คํ
์์ ์ด๋ฏธ TensorFlow๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์์ธํ ๋ด์ฉ์ ์ด ์ค๋ ๋์ ์์ต๋๋ค.
https://github.com/tensorflow/tensorflow/issues/42
GPU ์ปดํจํ ์ ์ฌ์ฉํ๊ธฐ ์ํด Windows์์ Docker ์์ด TensorFlow๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์ต๋๋ค. ์ด ๊ฒฝ์ฐ Docker๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ Windows ์ปจํ ์ด๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์๋๋ผ Hyper-V ๋๋ VirtualBox์์ Linux ๊ฐ์ ๋จธ์ ์ ์ฌ์ฉํ๋ ๊ฒ์ด๋ฏ๋ก GPU๊ฐ ํต๊ณผ๋์ง ์์ต๋๋ค.
:+1:
Google, Windows ์ง์์ ์ ๊ณตํ์ญ์์ค.
+1/0.0
+1
์, Windows ์ง์์ ๋งค์ฐ ์ข์ ๊ฒ์ ๋๋ค.
+1
+1
+1
์, ๋ถํํฉ๋๋ค
Windows(VM์ด ์๋ ๊ธฐ๋ณธ)์์ TensorFlow๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์ต๋๋ค.
Continuum์ด tensorflow์ฉ conda ํจํค์ง๋ฅผ ์ ๊ณตํ ์ ์๋์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค.
๋ฌธ์ ์ ์ฒด์์ bazel์ ์ฌ์ฉํ๋ ๊ฒ์ผ๋ก ํ๋จํ๋ฉด bazel์ด ์ฐฝ์ ์ง์ํ๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ๋ฌธ์ ๋ผ๊ณ ๊ฐ์ ํฉ๋๋ค. Windows๊ฐ ์ง์๋๋๋ก ์ฒ๋ฆฌํด์ผ ํ๋ Tensorflow์ ๊ด๋ จ๋ ํน์ ํญ๋ชฉ์ด ์์ต๋๊น, ์๋๋ฉด ๊ทธ๋ฅ bazel์ ๋๊น?
ํ ๊ฐ์ง ์ง๋ฌธ์ Bazel ์ง์์ด ์ค์ ๋ก Windows์ ๋์ฐฉํ๋ ์์ ์ ๋๋ค. Bazel ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ๋ณด๋ฉด Windows์์ Android๋ฅผ ์ง์ํ ๊ณํ์ด๋ผ๊ณ ๋์ ์์ง๋ง ๊ธฐ๋ณธ ํจํค์ง ๋น๋(๋ด๊ฐ ๊ฐ์ ํ๋ ๊ฒ)์ ๋ํ ์ฐธ์กฐ๋ ์์ต๋๋ค.
๋ค์์ Windows์ฉ Bazel ์ง์์ ์ถ์ ํ๋ ๋ฐ ์ฌ์ฉํ๋ ๋ฒ๊ทธ์ ๋๋ค. https://github.com/bazelbuild/bazel/issues/276. ํ ๋ฌ ์ ์ @dslomov ๋ Windows์์ Bazel์ด ์์ฒด์ ์ผ๋ก ๋ถํธ์คํธ๋ฉ ํ๋๋ก ํ ์ ์์์ต๋๋ค. ์ฌํด ๋ง๊น์ง Windows ์ง์์ ์ข ๋ฃํ ๊ณํ์ ๋๋ค.
@davidzchen ์ ๋ ์ค์ ๋ก ์ค๋ ์คํ ์ด์ ๊ทธ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ด์ด ์์ด ์๋ํด ๋ณด์๊ณ ์ฑ๊ณต์ ์ผ๋ก ๋ถํธ์คํธ๋ฉํ ์ ์๋์ง ํ์ธํ๊ธฐ ์ํด ์ข ๋ ๊ฐ์ง๊ณ ๋์์ต๋๋ค.
Windows์์ +1 ๊ธฐ๋ณธ ์ง์์ ์ฌ์ฉํ ์ ์์ด์ผ ํฉ๋๋ค.
+1
๋๋ ๋ ํฉ๋ฆฌ์ ์ธ ๋น๋ ์์คํ ์ผ๋ก ์ด์ํ ์๋ ์์ต๋๋ค. ์๋ง๋ cmake.
@ahmadia conda๋ฅผ ์ฌ์ฉํ์ฌ tensorflow๋ฅผ ์ค์นํ๋ ๋ฐฉ๋ฒ์ ๋ํ ํ์ด ์์ต๋๊น?
์ง๊ธ ์ฐ๋ฆฌ๋ Windows์ ๋ํ TensorFlow ํฌํธ๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ๋ชจ๋ ์ฌ๋๋ค๊ณผ ๊ฐ์ ๋ฐฐ๋ฅผ ํ๊ณ ์์ต๋๋ค. ๋๊ตฐ๊ฐ๊ฐ Windows ํฌํธ๋ฅผ ๊ตฌ์ฑํ ์ ์๋ค๋ฉด ๋ฐ์ด๋๋ฆฌ ๋น๋/๋ฐฐํฌ๋ฅผ ๊ธฐ๊บผ์ด ๋์๋๋ฆฌ๊ฒ ์ต๋๋ค. ๋๊ตฐ๊ฐ ์ด๋ฏธ conda install -c memex tensorflow
์ ํจ๊ป ์ฌ์ฉํ ์ ์๋ OS X/Linux์ฉ ๋ ์ํผ๋ฅผ ์์ฑํ์ต๋๋ค.
์ด๊ฒ์ ๋ํด +1
+1
+1
๋ํ cmake ์ง์์ด ์ข์ ๊ฒ์
๋๋ค
๋๊ตฐ๊ฐ์๊ฒ ๋์์ด ๋๋ ๊ฒฝ์ฐ ๋ฌธ์ 42 ์ ํ์ ์ฌ์ฉ ํ์ฌ ์ฌ๊ธฐ์์ Docker๋ฅผ ์ฌ์ฉํ์ฌ Windows ์์คํ ์์ TensorFlow๋ฅผ ์๋์ํค๋ ๋ฐฉ๋ฒ์ ๋ํ ์ง์นจ๊ณผ ์คํฌ๋ฆฐ์ท์ด ํฌํจ๋ ๊ธฐ์ฌ๋ฅผ ์์ฑํ์ต๋๋ค.
TensorFlow๊ฐ ๋ด Windows ์ปดํจํฐ์ VM์์ ์คํ๋๊ณ ์๋ค๋ฉด GPU๋ฅผ ์ด๋ป๊ฒ ํ์ฉํ ์ ์์์ง ์์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
+1 ๊ธฐ๋ณธ Windows ์ง์์ ๋งค์ฐ ์ ์ฉํฉ๋๋ค.
+1
์ ๋ Windows 7์ฉ TensorFlow ๋ฒ์ ์ ๊ฐ๊ณ ์ถ์ต๋๋ค. ๊ฐ์ง๊ณ ๊ณ์๋ค๋ฉด ์ ์ด๋ฉ์ผ์ ๋ณด๋ด์ฃผ์ธ์.
๋ด ์ด๋ฉ์ผ ์ฃผ์: [email protected].
๊ฐ์ฌ ํด์!
+1
Windows ์ง์์ ์ฝ๊ฐ์ ๊ทน์ ์ธ ๋ ธ๋ ฅ์ ๋๋ค. ์ง์ ํ ํ์ค ์ปดํ์ผ๋ฌ(gcc/tdm-gcc/mingwpy)์ ์ต์ Python(3.4?)์ ๋ํด์๋ง Windows๋ฅผ ์ง์ํ๋ ๊ฒ์ด ํจ์ฌ ๋ ์ฌ์ด ๋ชฉํ๊ฐ ๋ ๊น์?
์๋ง๋ VC++ CodeGen๊ณผ ํจ๊ป Clang ํ๋ก ํธ์๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด VS 2015 ์ ๋ฐ์ดํธ 1์์ Windows ๋น๋ -> Microsoft CodeGen๊ณผ ํจ๊ป Clang์ ์๋์ํค๋ ๊ฐ์ฅ ๋น ๋ฅธ ๊ฒฝ๋ก๊ฐ ๋ ๊ฒ์ ๋๋ค. ํ๋ก์ ํธ๋ ์ฃผ๋ก ์ฐฝ์ ๋์์ผ๋ก ํ๋ ์ฝ๋์ ํ๋ซํผ ๊ฐ ๋น๋๋ฅผ ์ํด ์ผ๊ด๋๊ฒ ์๋ํ๋ ๋๊ตฌ ๋ชจ์์ ์ ๊ณตํ๋๋ก ์ค๊ณ๋์์ง๋ง *nix ์ฝ๋๊ฐ ์ฐฝ์์ ์ปดํ์ผ๋๋ ์๋๋ฆฌ์ค๋ ๋๊ฐ์ด ํฅ๋ฏธ๋ก์ธ ์ ์์ต๋๋ค. MSFT C++ ํ์ ์์ฑํ๋ ์ฝ๋๊ฐ LLVM ํ๋ก์ ํธ์ ๋ค์ ๊ธฐ์ฌํ๋ฏ๋ก ์ฐ์ํ ํฌ๋ก์ค ํ๋ซํผ ์ง์์ ์ป๊ธฐ ์ํ ๋น ๋ฅด๊ณ ๊ณต๋ ์์ ์ด ๊ฐ๋ฅํด์ผ ํ๋ค๊ณ ๋งํฉ๋๋ค.
+1
+1
+1
+1
+1
+1
+1
+1 . ์ด๊ฒ์ Windows์์ ์๋ํ์ง ์๋ ๊ฒ์ผ๋ก ๊ธฐ์ต๋๋ ์ฒซ ๋ฒ์งธ Python ํจํค์ง์ ๋๋ค. ๋ด๊ฐ ์ดํดํ๊ธฐ์๋ NVIDIA์ ๋๋ผ์ด๋ฒ๊ฐ Linux๋ณด๋ค Windows์์ ํญ์ ๋ ์ข์๊ณ , ์์ฆ ์ง๋ฃจํจ์ ๋๋ผ๋ GTX 970์ด ์๋ค๋ ๊ฒ์ ์ดํดํ๊ธฐ ๋๋ฌธ์ ์ด์ํ๊ฒ ๋ณด์ ๋๋ค.
๋๋ ๋๋ถ๋ถ์ tensorflow C++๋ฅผ Windows ๋น๋ ์ฌ์ฉ vc 2013์ผ๋ก ํฌํ ํ์ต๋๋ค. ์ง๊ธ๊น์ง ๋๋ถ๋ถ์ ์ฝ๋ ์ปดํ์ผ ๋ฐ ๋งํฌ๋ ๋ด ์์ค ํ์ผ์ ์ฌ์ฉํฉ๋๋ค. ์ ๊ฐ ํด๊ฒฐํด์ผ ํ ๊ฐ์ฅ ํฐ ๋ฌธ์ ๋ ์ ์ ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ op์ ์ปค๋์ ๋ฑ๋กํ๋ค๋ ๊ฒ์ ๋๋ค. ์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๋น๋ํ๊ณ ์ด์ ๋ํ ์ฑ ๋งํฌ๋ ํด๋น ์ ์ ๋ณ์๋ฅผ ๊ฑด๋๋๋๋ค. ์ฌ์ฉ๋ ์์ ๋ฐ ์ปค๋์ ํฌํจํ๋ ค๋ฉด ์ฑ ํด๋์์ stub.cpp๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
@yuanhua8 ๋ณ๊ฒฝ ์ฌํญ์ github ์ ์ฅ์๋ก ํธ์ํ ๊ธฐํ๊ฐ ์์ต๋๊น? BTW, ๋๋ dumpin์ ์ฌ์ฉํ์ฌ ๊ธฐํธ ์ ํธ๋ฅผ ๊ฐ์ ํ๋ ํค๋๋ฅผ ์์ฑํ์ฌ caffe์ ์ ์ ๋ฑ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค. ์์ธํ ๋ด์ฉ์ https://github.com/BVLC/caffe/pull/2816 ๋ฐ https://github.com/willyd/caffe/tree/msvc ๋ฅผ ์ฐธ์กฐํ์ธ์.
Windows์ฉ ๊ธฐ๋ณธ Tensorflow๊ฐ ๊ณง ์ค๋น๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. Windows์ฉ bazel์ด ์์ ๋ ๋๊น์ง ๊ธฐ๋ค๋ ค์ผ ํ ์๋ ์์ต๋๋ค. Google ๋ฐ Udacity์ ๋ฅ ๋ฌ๋ ๊ณผ์ ์ ์๋ํ๊ฒ ๋์ด ๊ธฐ์ฉ๋๋ค!
์ฐธ๊ณ ๋ก Bazel์ ๋ํ Windows ์ง์์ ํ์ฌ ์ฐ๋ฆฌ์ ์ต์ฐ์ ๊ณผ์ ์ค ํ๋์ ๋๋ค . ๊ณ์ ์ง์ผ๋ด ์ฃผ์ธ์.
์ฌ๊ธฐ์์๋ ๋ง์ฐฌ๊ฐ์ง๋ก Google์์ ์ ๊ณตํ๋ ๋ฅ ๋ฌ๋ ๊ณผ์ ์ ์์ํ๋๋ฐ Windows๋ฅผ ์คํํ๊ณ ์๊ธฐ ๋๋ฌธ์ ์ฌ๊ธฐ์์ ๋งํ์ต๋๋ค.
์ธ์ Windows์ ๋ํ ์ง์์ ์์ํด์ผ ํฉ๋๊น?
Windows์์ ์ด๊ฒ์ ์คํํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ์๋ ๋ง์ ์ฌ๋๋ค์ ๋ฐ๊ฒฌํ์ฌ Vagrant ๋ฐ Docker๋ฅผ ์ฌ์ฉํ์ฌ Windows์์ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ๋ํด ๋น ๋ฅด๊ฒ ์์ฑํ์ต๋๋ค.
https://medium.com/@Rapchik/running -google-s-deep-learning-course-material-under-windows-82d468b6d5be
@umarniz ๊ฐ์ด๋ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ํ์ง๋ง ์ฌ๊ธฐ ์๋ ๋๋ถ๋ถ์ ์ฌ๋๋ค ์ GPU ์ง์์ผ๋ก ์ธํด Windows์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์คํ๋๋ TensorFlow๋ฅผ ๊ธฐ๋ํ๊ณ ์์ต๋๋ค. ๋ถํํ๋ ๋ด๊ฐ ์๋ ํ Docker ๋๋ ๊ฐ์ํ๋ฅผ ์ฌ์ฉํ๋ ๋ค๋ฅธ ์๋ฃจ์ ์์๋ ์๋ํ์ง ์์ต๋๋ค...
@SeveQ ์ ์ ์ผ๋ก ๋์ํ๋ฉฐ ์ฌ๋ฌ ๊ณ ์ ํ ํ๋ก๊ทธ๋๋ฐ ํ๊ฒฝ์ ์ฝ๊ฒ ์ค์ ํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ML ์คํ์ Linux๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๊ฐ์ธ์ ์ผ๋ก ์ ํธํฉ๋๋ค. ์ด ๊ฐ์ด๋๋ CPU ์ ์ฉ ํ๊ฒฝ์์๋ ์คํํ ์ ์์ด์ผ ํ๋ ๋ ์์ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ๊ฐ์ง ์ด๋ณด์๋ฅผ ์ํ ๊ต์ก ์ธํธ์ ์์ ๋ก Google์์ ๊ฐ์ ์๋ฃ๋ฅผ ์คํํ๊ธฐ ์ํ ๊ฒ์ ๋๋ค.
@umarniz ์ข์, ๋น์ ์ ๋ ธ๋ ฅ์ ํํํ๋ ค๋ ๊ฒ์ ์๋๋๋ค. ๊ธฐํ์ฝ ์๋๋ค! ์์ฑํ์๋๋ผ ์๊ณ ๋ง์ผ์ จ์ต๋๋ค! ๋ค์ ํ๋ฒ ๊ฐ์ฌํฉ๋๋ค!
๊ทธ๊ฑด ๊ทธ๋ ๊ณ , ์ด๊ฒ์ ์ธ๊ธํ๊ธฐ๋ง ํ๋ฉด... ์ด๋ฏธ ๋ ์ด์ ๊ทธ๋ ๊ฒ ๊ฐ๋จํ์ง ์์ Deep MNIST ์์ ๋ ๋ด CPU์์ ๋ช ์๊ฐ์ด ๊ฑธ๋ฆฌ๋ ๋ฐ๋ฉด ๋ด GPU(GTX 980Ti)๋ ๊ธฐ๊ปํด์ผ ๋ช ์ด ๋ง์ ์ฒ๋ฆฌํฉ๋๋ค. ๋ค์ดํฐ๋ธ ์ฐ๋ถํฌ์์. USB ์คํฑ์ ํ๋๋ฅผ ์ค์ ํ์ต๋๋ค. ์๋ํ์ง๋ง ์ด์ค ๋ถํ ์ ์๋นํ ๋ฒ๊ฑฐ๋กญ๊ณ ํฐ ์์์ ์ ํ์ํค๋ ์์๊ฐ ๋ ์ ์์ต๋๋ค. UEFI ์์คํ ์ ์ต๋ ์ ์ ๋ชจ๋ Windows๋ Linux์์ NTFS ํํฐ์ ์ ๋ฐ์ดํฐ์ ์ก์ธ์คํ ๋ ๋งค์ฐ ๊น๋ค๋ก์ธ ์ ์๊ธฐ ๋๋ฌธ์ ๋์ฑ ๊ทธ๋ ์ต๋๋ค...
๋ฌผ๋ก Linux(Ubuntu)๊ฐ ML ์์ ์ ๊ฐ์ฅ ์ ํฉํ OS๋ผ๋ ๋ฐ ์ ์ ์ผ๋ก ๋์ํฉ๋๋ค. Linux(Ubuntu)๊ฐ ์ด์ ๊ฐ ์๋ ๊ฒ์ด ์๋๋ผ ๋๋ถ๋ถ์ ์ฌ๋๋ค์ด ์ฌ์ฉํ๋ OS์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ๋ฌ๋ ์๊ณ๋ฅผ ์ํด ML์ ํ ๋ฟ๋ง ์๋๋ผ ์ทจ๋ฏธ ์ํ์ ํ๋ ์ ์ ๊ฐ์ ์ด์ฑ ํฌ์๊ฒ๋ ์ฌ์ ํ ๋จ์ ์ด ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๊ฒ์๊ณผ ๊ฐ์ด Windows์ ์์กดํ๋ ๋ค๋ฅธ ์ทจ๋ฏธ๋ ๋ณํํ๊ณ ์์ต๋๋ค.
๋๋ ๊ทธ๊ฒ์ด ๋ด๊ฐ ์ ๋์ ์ผ๋ก ํด๊ฒฐ๋๊ธฐ๋ฅผ ๋ฐ๋ผ๋ ์ฒซ ๋ฒ์งธ ์ธ๊ณ ๋ฌธ์ ๋ผ๊ณ ์๊ฐํฉ๋๋ค.
@SeveQ ์ ๋ ๊ทธ๋ ๊ฒ ๋ฐ์๋ค์ด์ง ์์์ด์ :)
์ด์ค ๋ถํ ์ด ๊ณ ํต์ค๋ฝ๋ค๋ ๋ฐ ๋์ํฉ๋๋ค. ๋ช ๋ฌ ๋์ Ubuntu๋ก ์์ ํ ์ฎ๊ฒจ์ผ ํ์ต๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ ํํ๊ธฐ๊ฐ ์๋นํ ๋ฒ๊ฑฐ๋ก์์ก์ง๋ง bash ์ ธ์ด ๋์ฉ๋ ๋ฐ์ดํฐ ์ธํธ ์์ ์ ์ํด ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ด ๋ง์์ ๋ญ๋๋ค.
๋ด๊ฐ ์ง์ TensorFlow์ ๋ํ Windows ์ง์์ ์ถ๊ฐํ๋ ๋ฐ ๋์์ ์ค ์ ์๋ ๋ฐฉ๋ฒ์ ์๊ฒ ๋ ๊ฒ์ ๋๋ค.
+1
@umarniz ์ข์ ์๋ฆฌ. ๋ถํํ๋ ์ง๊ธ์ ์ด ์ผ์ ์ ๋ ํ ์๊ฐ์ด ์์ต๋๋ค. ์กธ์ ๊ณผ ๊ฐ์ ๋ค๋ฅธ ์ฐ์ ์์... TensorFlow์ ๋ํ Windows ์ง์์ ์ด ๋ฌธ์ ์์ ํฐ ๋์์ด ๋ ๊ฒ์ ๋๋ค. ์ ๋ ์์ฌ, ์์คํ ์์ง๋์ด, ๊ธฐ๊ณ ํ์ต์ ์ ๋ฌธ์ผ๋ก ํ๋ ์ฌ๋์ผ๋ก ์กธ์ ํ๊ณ ์์ต๋๋ค.
์ด๊ฒ์ ๋ํ ๋ชจ๋ ์ ๋ฐ์ดํธ
C++ ์ฝ๋์ ํฌํธ๋ฅผ ๋ด๋ถ ๋ถ๊ธฐ๋ก ๋ง๋ญ๋๋ค. ์ฃ์กํฉ๋๋ค. ์ฝ๋ ๋ถ๊ธฐ์ ์ข
์์ฑ์ ์ฌ์ฉํ๋ฏ๋ก ๋ค์ ๊ฒ์ํ ์ ์์ต๋๋ค. C++์ Python ์ฌ์ด์์ ์ฝ๊ฐ์ ์ฐจ์ด๋ฅผ ์ฐพ์ผ์ญ์์ค. ๊ทธ๋ฌ๋ ํต์ฌ ์์ง์ Windows/Vc ํ๊ฒฝ์์ ์๋ํฉ๋๋ค.
ํ์ด
๋ด iPhone์์ ๋ณด๋ธ
2016๋ 1์ 30์ผ ์ค์ 2์ 46๋ถ์ datashinobi [email protected] ์ด ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
์ด๊ฒ์ ๋ํ ๋ชจ๋ ์ ๋ฐ์ดํธ
โ
์ด ์ด๋ฉ์ผ์ ์ง์ ํ์ ํ๊ฑฐ๋ GitHub์์ ํ์ธํ์ธ์.
Bazel์ ๋ํ Windows ์ง์ ์ ๋ฐ์ดํธ: Windows์์ Bazel์ด ์๋ํ๋๋ก ํ๋ ์ด๊ธฐ ํจ์น ์ธํธ๊ฐ ๋ณํฉ๋์์ผ๋ฉฐ(bazelbuild/bazel#276 ์ฐธ์กฐ) @dslomov ๊ฐ Bazel์ด Windows์์ ์์ฒด์ ์ผ๋ก ๋ถํธ์คํธ๋ฉ ํ๋๋ก ํ ์ ์์์ต๋๋ค.
Bazel 0.3 ์์ Windows์ ๋ํ ์คํ์ ์ธ ์ง์์ ๊ณํํ๊ณ ์์ต๋๋ค. ์งํ ์ํฉ์ ํ์ธํ๋ ค๋ฉด Bazel ๋ฌธ์ ์ถ์ ๊ธฐ์์ "Windows" ํ๊ทธ๊ฐ ์ง์ ๋ ๋ฌธ์ ๋ฅผ ์ฐธ์กฐํ์ธ์.
C:\Users\Desktop>๋์ปค ์คํ -it b.gcr.io/tensorflow/tensorflow
๋ก์ปฌ์์ 'b.gcr.io/tensorflow/t ensorflow:latest ' ์ด๋ฏธ์ง๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
docker: ๋ฐ๋ชฌ์ ์ค๋ฅ ์๋ต: ๋ ์ง์คํธ๋ฆฌ ๋์ https://bg ๋ฅผ pingํ ์ ์์ต๋๋ค.
cr.io/v0/
v2 ping ์๋ ์คํจ ์ค๋ฅ: https://b.gcr.io/v2/ ๊ฐ์ ธ์ค๊ธฐ: tcp 64.233.188๋ก ์ ํ ๊ฑธ๊ธฐ
.82:443: I/O ์๊ฐ ์ด๊ณผ
Docker ์์ด Windows์์ TensorFlow๋ฅผ ์ฌ์ฉํ ์ ์๋ค๋ ์์์ด ์์ต๋๊น?
Linux์ Windows(MVS ํ๋ก์ ํธ ์์ฑ) ๋ชจ๋์์ ์๋ํ๋ CMake ๋น๋ ํ๋ก์ธ์ค๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ด ์ผ๋ง๋ ์ด๋ ค์ธ๊น์?
CentOS ๊ฐ์ ๋จธ์ ์ tensorflow๋ฅผ ์ค์นํ๊ธฐ ์ํ ์ง์นจ ์ ์์ฑํ์ต๋๋ค. Docker ์์ ์ ๋ฌธ์ ๊ฐ ์๋ ๊ฒฝ์ฐ ์ด๊ฒ์ด ํด๊ฒฐ์ฑ ์ด ๋ ์ ์์ต๋๋ค.
์ฌ๋ฌ๋ถ์ด ์๋ก์ด ๊ฐ๋ฐ์ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ tensorflow๋ฅผ ์ฌ์ฉํ์ฌ Windows์ bash๋ฅผ ์ค์นํ๋ฉด ์ค์น๋๊ณ ์๋ํฉ๋๋ค. ๋ฐ๋ผ์ docker๋ฅผ ์ฌ์ฉํ์ง ์๊ณ Windows์์ ์คํํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค. (๊ทธ๋ฆฌ๊ณ ๋ ๋ง์ ์ฌ๋๋ค์ด ์ฌ์ฉํ๊ณ ์๊ธฐ ๋๋ฌธ์ ์๋ง๋ Windows์ฉ bash๋ฅผ ๊ฐ์ ํ ๊ฒ์ ๋๋ค.)
์ ๋ง ํ์์ ์
๋๋ค.
Windows์์ bash๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด Windows์์ tensorflow๋ฅผ ์ฌ์ฉํ๋ ๊ฐ์ฅ ํฐ ํฌ๋ง์ด์์ต๋๋ค.
๊ฐ์ฅ ํฐ ์ง๋ฌธ์ GPU ๋๋ผ์ด๋ฒ๋ฅผ ์ฌ์ฉํ ์ ์๋์ง ์ฌ๋ถ์ ๋๋ค.
์ด๊ฒ์ด ์ฌ๋๋ค์ด Windows์ ๊ธฐ๋ณธ ํ ์ํ๋ก ์ค์น๋ฅผ ์๊ตฌํ๋ ์ฃผ๋ ์ด์ ์ ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด cpu ์ง์์ docker ๋๋ Linux ๊ฐ์ ๋จธ์ ์ ํตํด ๊ด์ฐฎ์ต๋๋ค.
๋๋ ๊ทธ๊ฒ์ ๋ํด ์์ง ๋ชปํ์ง๋ง ๊ทธ๊ฒ์ ๋ํด Windows ํ์ ๋ฌธ์ํด์ผ ํฉ๋๋ค.
์ฌ๋๋ค์ ์ฐฝ์ ํตํด ์๋ํ๋๋ก GUI ํ๋ก๊ทธ๋จ์ ์ป์์ง๋ง CPU๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๋ค.
GPU๋ ํ์ฌ ์ก์ธ์ค ๊ถํ์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
2016๋
4์ 19์ผ ์คํ 5์ 37๋ถ์ "hayder78" [email protected] ์ด ์์ฑํ์ต๋๋ค.
์ ๋ง ํ์์ ์ ๋๋ค.
Windows์์ bash๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด Windows์์ tensorflow๋ฅผ ์ฌ์ฉํ๋ ๊ฐ์ฅ ํฐ ํฌ๋ง์ด์์ต๋๋ค.๊ฐ์ฅ ํฐ ์ง๋ฌธ์ GPU ๋๋ผ์ด๋ฒ๋ฅผ ์ฌ์ฉํ ์ ์๋์ง ์ฌ๋ถ์ ๋๋ค.
์ด๊ฒ์ด ์ฌ๋๋ค์ด ๊ธฐ๋ณธ ํ ์ํ๋ก ์ค์น๋ฅผ ์๊ตฌํ๋ ์ฃผ๋ ์ด์ ์ ๋๋ค.
์ฐฝ์์. ๊ทธ๋ ์ง ์์ผ๋ฉด cpu ์ง์์ docker ๋๋ Linux๋ฅผ ํตํด ๊ด์ฐฎ์ต๋๋ค.
๊ฐ์ ๊ธฐ๊ธฐโ
๋น์ ์ด ๋๊ธ์ ๋ฌ์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub์์ ํ์ธํ์ธ์.
https://github.com/tensorflow/tensorflow/issues/17#issuecomment -212156142
์. Windows์์ bash๋ฅผ ํตํด ์คํ๋๋ GUI ํ๋ก๊ทธ๋จ์ ์ผ๋ฐ GPU ๋๋ผ์ด๋ฒ๋ฅผ ์ฌ์ฉํ๋ค๋ ๊ฒ์ ์ฝ์์ต๋๋ค. ์ฆ, nvidia ๋๋ผ์ด๋ฒ๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๋ค.
Google์ด Windows์์ ๋ด๋ถ์ ์ผ๋ก ํ ์ํ๋ก๋ฅผ ์์ ํ๊ณ ์๊ธฐ๋ฅผ ๊ธฐ๋ํฉ์๋ค.
Windows์ฉ bash๊ฐ ์ถฉ๋ถํ ์ฑ์ํ๊ณ ๋ฒ๊ทธ๊ฐ ์๋ ์๊ฐ์ด ํ์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ ๋์์๋ ์๋ง๋ VM๊ณผ ๋์ปค๊ฐ ๋ ๋์ ์ ํ์ด ๋ ๊ฒ์ ๋๋ค.
์ ๋ ์ด์ tensorflow์ CNTK ์ค์์ ์ ํ์ ํ๊ณ ์์ต๋๋ค.
GPU๋ฅผ ํฌํจํ Windows ๊ธฐ๋ณธ ์ง์์ ๊ฒฝ์ฐ +1.
@davidzchen ์ด ์ ๊ณตํ Bazel์ Windows ๋ฌธ์ ๋ฅผ ์ถ์ ํ๋ ๋งํฌ๊ฐ ์๋ํ์ง ์์ต๋๋ค. ์ฌ๋ฐ๋ฅธ ๊ฒ์ https://github.com/bazelbuild/bazel/labels/category%3A%20windows ์ ๋๋ค.
(๋ชจ๋๊ฐ Windows ๊ธฐ๋ณธ ์ง์ + GPU๋ฅผ ์ํ๊ณ ์๋ค๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค. ์ ๋ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ง๋ง Windows์ฉ Bazel์ด ์์ ํ๋ ๋๊น์ง ๊ธฐ๋ค๋ ค์ผ ํฉ๋๋ค. Bazel ํ ์คํธ๋ฅผ ๋๊ณ Bazel์ ๊ธฐ์ฌํ๋ฉด ํ๋ก์ธ์ค ์๋๊ฐ ๋นจ๋ผ์ง ๊ฒ์ ๋๋ค.)
GPU๋ฅผ ์ง์ํ๋ Windows์ ๊ฒฝ์ฐ ๋ ๋ค๋ฅธ +1์ ๋๋ค. TF๊ฐ ๋ ๋์ ์ต์ ์ผ๋ก ๋ณด์์ง๋ง Windows์์ GPU ์ง์์ด ๋ถ์กฑํ์ฌ Theano๋ก ์ ํํด์ผ ํ์ต๋๋ค. TF์ ๋ก๋๋งต์ ํฅํ ๋ฆด๋ฆฌ์ค์์ ์ง์์ด ์ ๊ณต๋ ๊ฒ์ธ์ง์ ๋ํ ์ธ๊ธ์ด ์์ผ๋ฉด ๋ง์ ์ฐ๊ตฌ์์ ์์ฌ ๊ฒฐ์ ์ ๋์์ด ๋ ๊ฒ์ ๋๋ค.
+1
+1
ํฅ๋ฏธ๋ก์ด ๋ด์ค ์ค ํ๋: @shanselman ์ Windows์ฉ Bash์์ TensorFlow๋ฅผ ์คํํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ ์ ์์ฑํ์ต๋๋ค.
์ฐ๋ฆฌ๋ ์ฌ์ ํ ์ผ๋ฅ Windows ์ง์์ ์ ๊ณตํ ๊ณํ์ด์ง๋ง, ๋ชจํ์ฌ์ด ๊ฐํ ์ฌ์ฉ์๋ ์ค๊ฐ์ ์์ํ ์ ์๋ ์ข์ ๋ฐฉ๋ฒ์ ์ฐพ์ ์ ์์ต๋๋ค.
@mrry ์๋
ํ์ธ์ ๋ฐ๋ฆญ ๋จธ๋ ์ด,
Google ์ํํธ์จ์ด ์์ง๋์ด๋ก์ tensorflow์ ๋ํ ๊ธฐ๋ณธ Windows ์ง์์ ์ ๊ณตํ ์ํฅ์ด ์๋ค๋ ์์์ ๋ฃ๊ฒ ๋์ด ๊ธฐ์ฉ๋๋ค. Google์ tensorflow ๊ฐ๋ฐ์ ํ์ ์์๋์ด ์์ต๋๊น?
์ ์ด๋ ์ง๊ธ์ ํฌ๋ง์ด ์์ต๋๋ค.
๋๋ต์ ์ธ ์์ ๋ฒ ํ ๋ฒ์ ์ ์ธ์ ์ ๋๊น?
๋ ๋ค๋ฅธ +1, ์ด๋ฐ ์ผ์ด ์ผ์ด๋๋ ๊ฒ์ ๋ณด๊ณ ๋งค์ฐ ๊ด์ฌ์ด ์์ต๋๋ค. Bazel์ด ์ค์ ๋ก Windows์์ ์คํ๋๋ ๊ฒฝ์ฐ TF๊ฐ ์ค์ ๋ก ํ๋ซํผ์์ ์ปดํ์ผ๋ฉ๋๊น? ์๋๋ฉด ๋คํธ์ํฌ, ํ์ผ ์์คํ ํธ์ถ๊ณผ ๊ฐ์ ๋ค๋ฅธ ์ด์์ฑ ๋ฌธ์ ๋ ์์ต๋๊น?
+1
์ฌ๋ฌ๋ถ, ์ ๋ฉ์์ง์ "+1"์ ์ฐ๋ ๊ฒ๋ณด๋ค GitHub ๋ฐ์ ์ ์ฌ์ฉํด ์ฃผ์๊ฒ ์ต๋๊น? ์ง๊ธ์ ์ด ์ค๋ ๋์ ์ ๋ฐ์ดํธ๋ฅผ ๊ตฌ๋ ํ ์ฌ๋๋ค์๊ฒ ๋ง์ ์คํธ์ ์์ฑํฉ๋๋ค. ๊ฐ์ฌ ํด์!
GitHub ๋ฐ์์ +1!
bazel์ ๋ช ๊ฐ์ง ์ด๋ฆ ์ค๋ฅ(์๋ชป๋ ๋ฌธ์ ๋๋ ๋งค์ฐ ๊ธด ๋ช
๋ น)๋ฅผ ์ ์ธํ๊ณ ๋ ๋๋ถ๋ถ์ ์๊ฐ ๋์ Windows์์ ์๋ํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ์๋ํ๋ bazel์ด ์๋ ์๋ํ๋ Windows ํ
์ํ๋ก๋ฅผ ์ป๋ ๋ฐ๋ ํ์คํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์ง๊ธ๊น์ง ๋ด๊ฐ ๊ฐ์ง ๋ชจ๋ ์ค๋ฅ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
ERROR: C:/tensorflow-orig/tensorflow/contrib/metrics/BUILD:16:1: in linkshared attribute of cc_binary rule //tensorflow/contrib/metrics:python/ops/_set_ops.so: 'linkshared' used in non-shared library. Since this rule was created by the macro 'tf_custom_op_library', the error might have been caused by the macro implementation in C:/tensorflow-orig/tensorflow/tensorflow.bzl:599:31.
๋ฐ๋ผ์ ๋จผ์ Windows์ฉ ๋น๋ ๊ท์น์ ์
๋ฐ์ดํธํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
tensorflow์ ๊ณต์ ๋ก๋๋งต:
https://github.com/tensorflow/tensorflow/blob/master/tensorflow/g3doc/resources/roadmap.md
Windows ์ง์์ ํฅํ ๋ช ๊ฐ์์ ๋ชฉํ๋ก ํ๋ ๊ฐ๊น์ด ๋ฏธ๋ ๋ก๋๋งต์ ์ผ๋ถ์ ๋๋ค!
@Sabrewarrior bazel์ ์ฌ์ฉํ์ฌ Windows์์ tensorflow๋ฅผ ๋น๋ํ๋ ค๊ณ ์๋ํ์ง๋ง ๊ตฌ์ฑ ํ์ผ์์ ์ผ๋ถ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค. ํด๋น ํ์ผ์ ์ผ๋ถ๋ฅผ Windows์์ ์ง์ํ๋๋ก ๋ณ๊ฒฝํ๊ฑฐ๋ ์ถ๊ฐํ๋์ง ๊ถ๊ธํฉ๋๋ค.
@Fhrozen https://github.com/Sabrewarrior/tensorflow/blob/test/tf_win_env.txt
๋ณ๊ฒฝ ์์ด configure๋ฅผ ์คํํ ๋ ์ค์นํ ํจํค์ง์
๋๋ค. Windows 10 ์์คํ
์์ python 2.7์ด ์ค์น๋ msys2์์ ์ด๊ฒ์ ์คํํ๊ณ ์์ต๋๋ค.
@Sabrewarrior ๋ต๋ณ ๊ฐ์ฌํฉ๋๋ค. ํ์ธํด๋ณด๋ ํด๋ ์ด๋ฆ์ ๊ณต๋ฐฑ์ด ๋ฌธ์ ์์ต๋๋ค.
์ด์ cuda ๋ฒ์ ์์ ์ด ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.
`ํธ์คํธ ์ปดํ์ผ๋ฌ๋ก ์ฌ์ฉํ gcc nvcc๋ฅผ ์ง์ ํ์ญ์์ค. [๊ธฐ๋ณธ๊ฐ์ /mingw64/bin/gcc์ ๋๋ค.]:
์ฌ์ฉํ๋ ค๋ Cuda SDK ๋ฒ์ (์: 7.0)์ ์ง์ ํ์ญ์์ค. [์์คํ ๊ธฐ๋ณธ๊ฐ์ ์ฌ์ฉํ๋ ค๋ฉด ๋น์ ๋ก๋๋ค]: 7.5
CUDA 7.5 ํดํท์ด ์ค์น๋ ์์น๋ฅผ ์ง์ ํ์ญ์์ค. ์์ธํ ๋ด์ฉ์ README.md๋ฅผ ์ฐธ์กฐํ์ญ์์ค. [๊ธฐ๋ณธ๊ฐ์ /usr/local/cuda์ ๋๋ค.]: C:/CUDA/v7.5
์ฌ์ฉํ๋ ค๋ Cudnn ๋ฒ์ ์ ์ง์ ํ์ญ์์ค. [์์คํ ๊ธฐ๋ณธ๊ฐ์ ์ฌ์ฉํ๋ ค๋ฉด ๋น์ ๋ก๋๋ค]: 4.0.7
cuDNN 4.0.7 ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ค์น๋ ์์น๋ฅผ ์ง์ ํ์ญ์์ค. ์์ธํ ๋ด์ฉ์ README.md๋ฅผ ์ฐธ์กฐํ์ญ์์ค. [๊ธฐ๋ณธ๊ฐ์ C:/CUDA/v7.5์ ๋๋ค.]: cuda/
๊ตฌ์ถํ๋ ค๋ Cuda ์ปดํจํ ๊ธฐ๋ฅ์ ๋ชฉ๋ก์ ์ผํ๋ก ๊ตฌ๋ถํ์ฌ ์ง์ ํ์ญ์์ค.
์ฅ์น์ ์ปดํจํ ๊ธฐ๋ฅ์ https://developer.nvidia.com/cuda-gpus์์ ์ฐพ์ ์ ์์ต๋๋ค.
๊ฐ ์ถ๊ฐ ์ปดํจํ ๊ธฐ๋ฅ์ ๋น๋ ์๊ฐ๊ณผ ๋ฐ์ด๋๋ฆฌ ํฌ๊ธฐ๋ฅผ ํฌ๊ฒ ์ฆ๊ฐ์ํต๋๋ค.
Cuda ์ค์ ์๋ ๋ค์์ด ํฌํจ๋ฉ๋๋ค.
์ฟ ๋ค ์ค์ ํ๊ธฐ
ln: fallo al crear el enlace simbรณlico '../../../third_party/gpus/cuda/extras/visual_studio_integration/MSBuildExtensions/CUDA': ํด๋น ํ์ผ ๋๋ ๋๋ ํฐ๋ฆฌ๊ฐ ์์ต๋๋ค.
ln: fallo al crear el enlace simbรณlico '../../../third_party/gpus/cuda/extras/visual_studio_integration/MSBuildExtensions/7.5.props': ํด๋น ํ์ผ์ด๋ ๋๋ ํฐ๋ฆฌ๊ฐ ์์ต๋๋ค.
ln: fallo al crear el enlace simbรณlico '../../../third_party/gpus/cuda/extras/visual_studio_integration/MSBuildExtensions/CUDA': ํด๋น ํ์ผ ๋๋ ๋๋ ํฐ๋ฆฌ๊ฐ ์์ต๋๋ค.
ln: fallo al crear el enlace simbรณlico '../../../third_party/gpus/cuda/extras/visual_studio_integration/MSBuildExtensions/7.5.targets': ํด๋น ํ์ผ์ด๋ ๋๋ ํฐ๋ฆฌ๊ฐ ์์ต๋๋ค.
ln: fallo al crear el enlace simbรณlico '../../../third_party/gpus/cuda/extras/visual_studio_integration/MSBuildExtensions/CUDA': ํด๋น ํ์ผ ๋๋ ๋๋ ํฐ๋ฆฌ๊ฐ ์์ต๋๋ค.
ln: fallo al crear el enlace simbรณlico '../../../third_party/gpus/cuda/extras/visual_studio_integration/MSBuildExtensions/7.5.xml': ํด๋น ํ์ผ ๋๋ ๋๋ ํฐ๋ฆฌ๊ฐ ์์ต๋๋ค.
xargs: bash: ์ํ 255๋ก ์๋ฃ; ๋ํ
`
@Fhrozen AFAIK Windows์์ CUDA์ฉ ์ปดํ์ผ๋ฌ๋ก gcc๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. Visual C++ ์ปดํ์ผ๋ฌ๋ง Windows์ CUDA์์ ์ง์๋ฉ๋๋ค( ์ฌ๊ธฐ ์ฐธ์กฐ ).
+1
+1
๋ฐ๋ณตํฉ๋๋ค. $%{^ยฅ ์ฌ์ผ๋ฅผ ์ํด +1์ ์ค์งํฉ๋๋ค! ์ด ํ์ +1 ๋๊ธ์ ๋จ๊ธฐ๋ ์ฌ๋์ ๋ฐ๋ณด์ ๋๋ค! :-P Github ๋ฐ์์ ์ฌ์ฉํ์ธ์, ์ ์ฅ!
๋๊ตฐ๊ฐ ๋์๊ฒ ์ผ์ข ์ ์ค์ฌ์ ์๊ฒฉ์ ์ค ์ ์์ต๋๊น? ์ธ๋ชจ์๋ +1 ๋๊ธ์์ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ ์ถ์ต๋๋ค.
์๋ ํ์ธ์ ํ์ ๋๋ค. CUDA๋ฅผ ํตํ GPU ์ง์์ผ๋ก Windows(10, ์ถ์ธก)์์ TensorFlow๋ฅผ ์ฌ์ฉํ ์ ์์ผ๋ ค๋ฉด ์ด๋ค ์์ ์ ์ํํด์ผ ํ๋์ง ์ดํดํ๋ ค๊ณ ํฉ๋๋ค. ๋ด๊ฐ ์ง๊ธ๊น์ง ์๊ณ ์๋ ๋ฐ์ ๋ฐ๋ฅด๋ฉด Docker๋ ํธ์คํธ์ GPU์ ์ก์ธ์คํ ์ ์๊ธฐ ๋๋ฌธ์ Docker๋ฅผ ๋ฐฐ์ ํ๊ณ Visual Studio์ cl.exe(Windows์ฉ Bazel์ด ์ฌ์ฉํ๋ ๊ฒ)๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
๊ทธ๋ ๋ค๋ฉด Windows์ฉ Bazel๋ง ์งํํด์ผ ํ๋ ๊ฑด๊ฐ์? ์ฌ๊ธฐ์์ ์ ์ผํ๊ฒ ๋ง์กฑ์ค๋ฝ์ง ๋ชปํ ์ข ์์ฑ์ด ์์ต๋๊น? ์ด๋ค ์ ์์๋ ์์ ๋์ด ๊ธฐ์ฉ๋๋ค.
Windows์์ Bash๋ฅผ ์ผ๋ ค๋ฉด Linux์ฉ Windows ํ์ ์์คํ
(๋ฒ ํ) ์ ํ์ธํด์ผ ํ๋ ๊ฒ ์๋๊ฐ์? ๊ทธ๋ฌ๋ Windows ๊ธฐ๋ฅ ๋ํ ์์์์ ์ด ๋ฉ๋ด๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค. ์ฌ๊ธฐ ์ ๊ธฐ ๊ฐ์ด๋๋ฅผ ๋ฐ๋ฅด๊ณ ์์ต๋๋ค .
Windows ๊ธฐ๋ฅ ๋ํ ์์์์ Hyper-V ํ์ธ๋์ ์ ํํด์ผ ํฉ๋๊น?
์ด๋ฏธ ์ค์ ์์ ๊ฐ๋ฐ์ ๋ชจ๋๋ฅผ ์ผฐ์ต๋๋ค.
์ด๋ฌํ Windows ๋ฒ ํ bash ๊ธฐ๋ฅ์ ํฌ๊ธฐํ๊ณ ๋ดํค์ง ์๊ฒ Docker๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ๊ฒ ๊ฐ์ต๋๊น?
@off99555 Windows 10์๋ ์ต์ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ ๋ฆด๋ฆฌ์ค(Fast Ring)๊ฐ ์์ด์ผ ํฉ๋๋ค. ๋น๋๋ฅผ ํ์ธํ์ญ์์ค. ~14000๋ณด๋ค ๋ฎ์ผ๋ฉด ์์ง ์ด ๊ธฐ๋ฅ์ด ์๋ ๊ฒ์ ๋๋ค. (์ด ์ ๋ฐ์ดํธ๋ GA 8์ 2์ผ ์์ )
์๋ ํ์ธ์,
Tensorflow Windows ์ง์์ ์ํด msys2 ๋ฐ์ด๋๋ฆฌ๊ฐ ์๋ Windows ๋ฐ์ด๋๋ฆฌ๋ฅผ ๋น๋ํ ์ ์์ต๋๊น? ์ด๊ฒ์ ๋๋ถ๋ถ์ ์ฌ์ฉ์ ์ปดํจํฐ์์ ์ค์ ๋ฐฐํฌ๊ฐ ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ์๋ฏธ๊ฐ ์์ต๋๋ค.
์ด๊ฒ์ด ๊ฐ๋ฅํ์ง ์๋ค๋ฉด ์ด ๋ชฉ์ ์ ์ํด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์์ธก ํต๊ณผ/์ ๋ฌ ํต๊ณผ์ ์ ๊ฑฐ๋ ๋ฒ์ ์ ๋ฐฐํฌํ ์ ์์ต๋๊น? ๋๋ Linux์์ ์ ํ๋ จํ ์ ์์ง๋ง ์ค์ ์์ธก ํ๋ก์ธ์ค๋ฅผ ์ํด msys2๊ฐ ์๋ ์ผ๋ฐ Windows ์์์ ๋ฐฐํฌํ ์ ์๊ธฐ๋ฅผ ์ํฉ๋๋ค. ์ด๊ฒ์ด ๋ก๋๋งต์ ์์ต๋๊น?
CNTK๊ฐ ํ๋ ์ผ์ ๋ณด๋ฉด:
https://github.com/Microsoft/CNTK/wiki/Native-Evaluation-Interface
๊ทธ๋ค์ ์ ๊ฑฐ๋ DLL์ ์ฌ์ฉํ์ฌ ํ๊ฐ/์์ธก์ ์ํํ๋ ํจ์ฌ ์ฌ์ด ๋ฐฉ๋ฒ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. Windows์ฉ Tensorflow์์๋ ์ด์ ๊ฐ์ ๊ฒ์ ์ฌ์ฉํ ์ ์์ต๋๊น(๊ทธ๋ฆฌ๊ณ ๋ด๊ฐ ์์ํ ์ ์๋ ๋ค๋ฅธ ํ๋ซํผ์์๋ ๋งค์ฐ ์ ์ฉํ ๊ฒ์ ๋๋ค).
๊ฐ์ฌ ํด์!
์ Windows๊ฐ ์๋ Mac OS์ ๋ํ ์ง์์ ์ถ๊ฐํ๋์ง ์ดํด๊ฐ ๋์ง ์์ต๋๋ค. ๋๋ถ๋ถ์ Mac์์๋ ์ผ๋ฐ CUDA GPU๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ฅ ๋ฌ๋ ๊ต์ก์ ์ธ๋ชจ์๋ ํ๋ซํผ์ ๋๋ค.
ํ์์ ๊ธฐ๋ณธ Windows ์ง์์ ๋ํ ๊ฒฌ์ ์ ์๋ ค์ฃผ์ค ์ ์์ต๋๊น?
@mrry ๋ ์ด์ ๋ํด ์ ๊ทน์ ์ผ๋ก ๋ ธ๋ ฅํ๊ณ ์์ผ๋ฉฐ ํน์ ์ง๋ฌธ์ด ์๋ ๊ฒฝ์ฐ ์ด์ ๋ํ ์ถ๊ฐ ์ ๋ฐ์ดํธ๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค.
@aselle ์ ์ฉํ ์ ๋ฐ์ดํธ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ๊ฐ์ฌํฉ๋๋ค!
@mrry ์๋ ํ์ธ์, Windows ๊ตฌํ์ ์ธ๋ถ ์ฌํญ์ ์ด๋ป๊ฒ ์ถ์๋ ์์ ์ ๋๊น?
1) ์ฑ/๋๊ตฌ๋ก ๊ตฌ์ถํ ์ ์๋ VS2015 ์๋ฃจ์ ์ด (์ด์์ ์ผ๋ก) ์์ต๋๊น? VS ์๋ฃจ์ ์ ์์ฑํ๋ cmake ๋ฉ์๋๋ ์๋ํฉ๋๋ค.
2) ์ด๊ฒ์ ์ ์ ์ผ๋ก ๋งํฌ๋๊ฑฐ๋ ๋์ ์ผ๋ก ๋งํฌ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋ ๊ฒ์ ๋๊น?
3) ๋๊ตฌ/์ฑ๊ณผ ํจ๊ป ๋ฐฐํฌํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ๋ ์ ๋ฌ/ํ๊ฐ ๋ชจ๋/๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์์ต๋๊น?
C++ ๋
๋ฆฝ ์คํํ ์ฑ์ผ๋ก tensorflow๋ฅผ ๋ฐฐํฌํ๋ ๊ฒ๊ณผ ๊ด๋ จํ์ฌ ์ฐพ์ ์ ์๋ ํ์ฌ ๋ฆฌ์์ค๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
https://medium.com/jim-fleming/loading-a-tensorflow-graph-with-the-c-api-4caaff88463f#.7ejb8h7zk
๋ด ์ฃผ์ ๊ด์ฌ์ฌ๋ ์ฌ๊ธฐ์ ๋ช
์๋ ๋ด์ฉ์
๋๋ค.
"์ด ๊ฐ๋จํ ์์ ์์๋ ๋น๋๊ฐ 103MB๋ก ์์ฒญ๋๊ฒ ์ปค์ก์ต๋๋ค. ์ด ์ค ๋๋ถ๋ถ์ TensorFlow, CUDA ์ง์ ๋ฐ ์ฐ๋ฆฌ๊ฐ ์ ๋ ์ฌ์ฉํ์ง ์๋ ์๋ง์ ์ข
์์ฑ์ ์ํ ๊ฒ์
๋๋ค. C++ API๊ฐ ํ์ฌ ๋ง์ ๊ธฐ๋ฅ์ ์ง์ํ์ง ์๊ธฐ ๋๋ฌธ์ ํนํ ๊ทธ๋ ์ต๋๋ค. TensorFlow API์ ์๋น ๋ถ๋ถ์ด Python ์ ์ฉ์ด๋ฏ๋ก TensorFlow(์: ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ)์ ์ฐ๊ฒฐํ๋ ๋ ์ข์ ๋ฐฉ๋ฒ์ด ์์ ์ ์์ง๋ง ์์ง ์๋ํ์ง ์์ต๋๋ค."
ํนํ GPU ์ง์์ด ์ค์ ๋ก ํ์ํ์ง ์์ ์ ๋ฐฉํฅ ํต๊ณผ/ํ๊ฐ์ ๋ชฉ์ ์ ์ํด ํฐ ์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐ๊ฒฐํ๋ ๋ ์ข์ ๋ฐฉ๋ฒ์ด ์๋ค๋ฉด.
๊ฐ์ฌ ํด์!
@mrry ๋ค๋ฅธ ์ฌ๋๋ค์ด ์ด ์ผ์ ์ด๋ป๊ฒ ์ฐธ์ฌํ ์ ์์ต๋๊น? ๊ฐ๋ฅํ ํ ๋นจ๋ฆฌ Windows์์ TensorFlow๋ฅผ ์คํํ๋๋ก ํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ๋์? ์ต์ํ ์ฐ๋ฆฌ๋ ํ ์คํธ์ ๋ฒ๊ทธ ๋ณด๊ณ ๋ฅผ ๋์ธ ์ ์์ต๋๋ค.
+1
Windows์ ๋ํ ์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น? GPU๋ ์ฌ์ฉํ ์ ์๋๋ก ๊ธฐ๋ณธ์ ์ผ๋ก ์คํํ๋ ค๋ฉด ๋ฌด์์ด ํ์ํฉ๋๊น?
์๋์ฐ ์ง์์ด ํ์ํฉ๋๋ค!!!!
ํ์์ ๊ธฐ๋ณธ Windows ์ง์์ ๋ํ ๊ฒฌ์ ์ ์๋ ค์ฃผ์ค ์ ์์ต๋๊น?
์ฐฝ๋ฌธ์ด ์์ต๋๊น? ์์? ์ ์ด๋ CPU ์ ์ฉ ๋ฒ์ ?
๋ค์์ ์ด Windows ์ง์ ๋ฌธ์ ์์ ๋ฐ์ํ๊ณ ์๋ค๊ณ ์๊ฐ๋๋ ์ฌํญ์ ๋ํ ์์ฝ์ ๋๋ค.
Tensorflow๋ ์์ค์์ ๋น๋ํ๊ธฐ ์ํด Bazel ์ด ํ์ํฉ๋๋ค. ์ ๊ฐ ํ๋ฆฌ์ง ์๋๋ค๋ฉด Bazel์ GNU Make์ ๊ฐ์ ๋น๋ ์์คํ ์ด์ง๋ง ์ปดํ์ผ๋ฌ๋ ์๋๋๋ค.
์ฝ๋๋ฅผ ๊ฐ๋ตํ๊ฒ ์ค์บํ๋ฉด์ ๋ณธ ๊ฒ์ ๊ธฐ๋ฐ์ผ๋ก Tensorflow ์์ฒด์ ์์ค ์ฝ๋๋ ์ค๋ ๋ฉ๊ณผ ๊ฐ์ ์์ ์ ๋๋ถ๋ถ ํ์ค C++ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฏ๋ก Windows์์ ์ปดํ์ผํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ์์ ๊ฒ์ ๋๋ค. ์ฌ์ฉํ๋ ํ์ ํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ชจ๋ Windows๋ฅผ ์ง์ํฉ๋๋ค.
๋ฐ๋ผ์ ์์ค์ฝ๋ ์์ฒด๊ฐ ์๋ Windows์ฉ ๋น๋ ๋ฐฉ์์ด ๋ถ์กฑํ ๊ฒ์ด ๊ฐ์ฅ ํฐ ๋ฌธ์ ๋ผ๊ณ ์๊ฐํฉ๋๋ค. Bazel ๋์ CMake๋ฅผ ์ฌ์ฉํ์ฌ ๋น๋ํ๋ ์์ ์ด ์์ง๋ง ์์ง ์๋ฃ๋์ง ์์์ต๋๋ค. ๋๊ตฐ๊ฐ Bazel ๋น๋ ๊ท์น์ CMake๋ก ๋ณํํ ์ ์๋ค๋ฉด Windows์์ ๋น๋ํ ์ ์์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
Windows์ ๋ํ ์์ ์ ์ธ Bazel ์ง์์ ์์ง ๊ฐ ๊ธธ์ด ๋ฉ๋๋ค.
์ฌ๊ธฐ์์ ๋ด๊ฐ ์ค์ํ๋ค๋ฉด ์ ๋ฅผ ์์ ํ์ญ์์ค.
@eiva CPU๋ง ์ง์ํ๋ ค๋ฉด ๊ฐ์ ๋จธ์ ์์ Tensorflow๋ฅผ ์คํํ ์ ์์ต๋๋ค. ๋ฌธ์ ์์ด Windows 10 ํธ์คํธ์ Ubuntu 14์์ ์คํํ์ต๋๋ค.
@rongjiecomputer ์์งํ ์ Bazel์ ์ฌ์ฉํ๋์ง ๊ถ๊ธํฉ๋๋ค...
@eiva Windows ํธ์คํธ์์ ์ฌ์ฉํ ์ ์๋ ์ค๋น๋ Docker ์ปจํ ์ด๋๋ ์์ต๋๋ค. ์ฆ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. GPU ์ง์ ์์ด tensorflow๋ก ์์ ํ๋ ๊ฒ์ ๊ทธ๋ค์ง ์ฌ๋ฏธ๊ฐ ์์ต๋๋ค. ๋ฉ์ง ๋ฌผ๊ฑด์ ์ํด์๋ ์ต์ํ ํ๋์ GPU๊ฐ ํ์ํฉ๋๋ค. ๋ฌผ๋ก GPU ์์ด ์ ํ ๋๋ ๋ก์ง์คํฑ ํ๊ท์ ๊ฐ์ ๊ธฐ๋ณธ ํญ๋ชฉ์ ์คํํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ tensorflow์ ๊ธด ์ํธ๊ฐ ์๋๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก GPU๊ฐ ํ์ํ ๋ฅ ๋ฌ๋ ์์ ์ ์ํด ๋ง๋ค์ด์ก์ต๋๋ค.
@marklit ์ด๋ฏธ ์ด๋ฐ ์์ผ๋ก ์ฌ์ฉํ๊ณ ์์ง๋ง ๋๋ถ๋ถ์ ๋ด ์ฑ์ Windows์์ ์คํ๋๊ณ ๋๋ถ๋ถ์ ๊ฐ๋ฐ์ Windows์์ ์งํ๋ฉ๋๋ค. ์์คํ ์ ๋ค๋ฅธ ๋ถ๋ถ์ผ๋ก ๋ฌด์ธ๊ฐ๋ฅผ ํ ๋๋ง๋ค OS๋ฅผ ์ ํํ๋ ๊ฒ์ด ์ฝ์ง ์์ต๋๋ค...
@๋ฃจ๋กฑ
๋น์ ์ ์ถ์ธก์ด ๋ง์ต๋๋ค!
https://www.quora.com/Why-did-Google-decide-to-use-Bazel-with-TensorFlow/answer/Derek-Murray-3
2016๋
9์ 12์ผ ์คํ 12:17 "Eugene Ivanchenko" ์๋ฆผ @github.com
์ผ๋ค:
@marklit https://github.com/marklit ์ด๋ฏธ ์ด ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๊ณ ์์ง๋ง ๋๋ถ๋ถ
๋ด ์ฑ์ด Windows์์ ์คํ๋๊ณ ์์ผ๋ฉฐ ๋๋ถ๋ถ์ ๊ฐ๋ฐ์ด ์งํ ์ค์ ๋๋ค.
windows... ์์ ํ ๋๋ง๋ค OS๋ฅผ ์ ํํ๋ ๊ฒ์ ์ฝ์ง ์์ต๋๋ค.
์์คํ ์ ๋ค๋ฅธ ๋ถ๋ถ...โ
์ด ์ค๋ ๋์ ๊ฐ์ ํ๊ธฐ ๋๋ฌธ์ ์ด ๋ฉ์์ง๋ฅผ ๋ฐ๊ณ ์์ต๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/tensorflow/tensorflow/issues/17#issuecomment -246239719,
๋๋ ์ค๋ ๋ ์์๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AEBIBhhA-t1MrFnddm5k-wER0KAm_p30ks5qpNJTgaJpZM4GexU4
.
Windows์ฉ TensorFlow์ ๊ด์ฌ์ ๊ฐ์ ธ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค! ์ฐ๋ฆฌ๋ ๋ ๊ฐ์ง ์ฃผ์ ์ธก๋ฉด์์ ์ง์ ์ ์ด๋ฃจ๊ณ ์์ต๋๋ค.
BUILD
ํ์ผ์ Windows์์ ์๋ํ๋๋ก ์กฐ์ . ์ต๊ทผ @meteorcloudy ์ ํด๋น ๋ฐฉํฅ(์: #4449)์ pull ์์ฒญ์ ๋ณด์์ ์ ์์ผ๋ฉฐ ์ต์ข
๊ณํ์ Windows์์ Bazel์ ์ฌ์ฉํ์ฌ TensorFlow ๋น๋๋ฅผ ์๋ฒฝํ๊ฒ ์ง์ํ๋ ๊ฒ์
๋๋ค.BUILD
ํ์ผ์ด ํ๋ซํผ ๊ฐ ์๋ํ ๋ Bazel๋ก ์ ํํ ๊ณํ์
๋๋ค.๋ฐ์ด๋๋ฆฌ PIP ํจํค์ง์ Windows์์ TensorFlow๋ฅผ ๋น๋ํ๊ธฐ ์ํ ์ง์นจ๊ณผ ํจ๊ป ๊ณง ๋ฐํํ ์์ ์ ๋๋ค. ๊ทธ๋์ ๊ณต์ ํ ์์์ด ์์ผ๋ฉด ์ด ๋ฌธ์ ๋ฅผ ์ ๋ฐ์ดํธํ๊ฒ ์ต๋๋ค.
@kestrelm ์ ํน์ ์ง๋ฌธ ์ ๋ํ ๋ต๋ณ:
tensorflow/python/_pywrap_tensorflow.so
์ ํด๋น)์ ์์ฑํ๊ณ ์ ์ ์ผ๋ก ๋งํฌ๋ C++ ๋ฐ์ด๋๋ฆฌ( tensorflow/cc/tutorials/example_trainer.cc
์ ํด๋น)๋ฅผ ๋น๋ํ๊ธฐ ์ํ ์ง์นจ์ ์ ๊ณตํ ์ ์์ต๋๋ค. ).๋ฉ์ง ์์ , @mrry!
๋ฐ์ด๋๋ฆฌ PIP ํจํค์ง์ Windows์์ TensorFlow๋ฅผ ๋น๋ํ๊ธฐ ์ํ ์ง์นจ๊ณผ ํจ๊ป ๊ณง ๋ฐํํ ์์ ์ ๋๋ค.
๊ทธ ๋ฐํ๊ฐ ์ธ์ ์ผ์ง ๋๋ต์ ์ธ ์์์ ํ ์ ์์ต๋๊น? ๊ธฐ๋ค๋ฆด ์ ์์ด!
@mrry : Derek, ํ์คํ ์ ๋ฐ์ดํธ์ ๋๋ค. ๋๋จธ์ง ๋ฉ์ดํฌํ์ผ/์ปดํ์ผ๋ฌ ํ๋ ์์ํฌ๊ฐ ๊ตณ์ด์ง๊ธฐ ์ ์ ๋ฐ์ด๋๋ฆฌ GPU ๋ฆด๋ฆฌ์ค(๋ฒ ํ)๊ฐ ์์ต๋๊น? ์ ์ด๋ ์ฌ๋๋ค์ Python API์ ๋ํด ์ํํด ๋ณผ ์ ์์ต๋๋ค ...
์น์ ํ๋ ์ ๋ฌธ๊ฐ:
Windows 10์ ์์ค ์ฝ๋์์ tensorflow๋ฅผ ๋น๋ํ๋ ค๊ณ ํ์ต๋๋ค. bazel์ด Windows์์ ์ด๋ฏธ ์ง์๋์ง๋ง ์์ ์ ์ด์ง ์์ ์ ์๋ค๊ณ ๋ณด๊ณ ํฉ๋๋ค. ๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ ๋๋ ์ผํ๋ ๊ฒ์ ์ป์๋ค.
๊ทธ๋ฌ๋ tensorflow๋ฅผ ๋น๋ํ๋ ค๊ณ ํ ๋ ๋ ๊ฐ์ง ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋จผ์ "bazel clean --expunge_async"๊ฐ ๊ถํ ๋ฌธ์ ๋ก ์คํจํ์์ ๋ํ๋
๋๋ค. ๊ทธ๋ ๊ฒ ์ฌํ์ง ์๋ค๊ณ ํฉ๋๋ค. ๋ค์ ๋ฌธ์ ๋ ๋น๋๋ฅผ ์ฐจ๋จํ๊ธฐ ๋๋ฌธ์ ์กฐ๊ธ ์ค์ํฉ๋๋ค. ๋ค์๊ณผ ๊ฐ์ด ๋ณด๊ณ ํฉ๋๋ค.
...
์ ๋ณด: ๋์ 1๊ฐ๋ฅผ ์ฐพ์์ต๋๋ค...
INFO: 'logfile'์ ๋ํ ์ฌ๊ตฌ์ถ ์ค๋ช
์์ฑ ์ค
์ค๋ฅ: '@local_config_cuda// cuda:lib64/libcublas.so ' ์
๋ ฅ ํ์ผ์ด ์์ต๋๋ค.
์ค๋ฅ: C:/tensorflow/tensorflow/tools/pip_package/ BUILD:23 :1: //tensorflow/tools/pip_ package:build_pip_package : ์
๋ ฅ ํ์ผ '@local_config_cuda// cuda:lib64/libcublas.so '๊ฐ ์์ต๋๋ค.
๋์ //tensorflow/tools/pip_ package:build_pip_package ๋น๋ ์คํจ
์ค๋ฅ: C:/tensorflow/tensorflow/tools/pip_package/ BUILD:23 :1 1 ์
๋ ฅ ํ์ผ์ด ์กด์ฌํ์ง ์์ต๋๋ค.
์ ๋ณด: ๊ฒฝ๊ณผ ์๊ฐ: 34.644์ด, ์๊ณ ๊ฒฝ๋ก: 1.52์ด
์ค์ ๋ก ๊ตฌ์ฑ ๊ณผ์ ์์ GPU ์ง์์ ์๋์ ์ผ๋ก ๋นํ์ฑํํ๋๋ฐ ์ CUDA์ ๊ด๋ จ๋ ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ก๋ํ๋ ค๊ณ ํฉ๋๊น?
GPU ์ง์์ ๋นํ์ฑํํ๊ธฐ ๋๋ฌธ์ ์คํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํฌ๊ธฐ๊ฐ 0์ด๊ณ DLL ํ์ผ ํ์ฅ์๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ๋ฐ๋ฅด๊ฒ ์์ฑ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ์ค๋ฅ ๋ฉ์์ง์ ๊ฐ์ด CUDA ๊ด๋ จ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ก๋ํด์ผ ํ๋ ์๊ตฌ ์ฌํญ์ด ์ด๋์์ ๋ฐ์ํ๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ์ฌ๋ฌ ํ์ผ์ ํ์ธํ์ง๋ง ์ฌ์ ํ ๋ชจ๋ฆ ๋๋ค. ํํธ, SO ํ์ผ ๋์ DLL ํ์ผ์ ์ฐพ์์ผํ๊ธฐ ๋๋ฌธ์ ํ์ผ์ด ์๋ชป ์์ฑ๋์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋๋ ์ฌ์ ํ ๋จ์๊ฐ ์์ต๋๋ค.
๋๊ตฌ๋ ์ง์ด ๋ฌธ์ ์ ๋ํ ์์ด๋์ด๊ฐ ์์ต๋๊น? ์ ๋ง ๊ฐ์ฌํฉ๋๋ค.
๋ณํฉ๋ PR #4778์์ ๋ณด์ จ๊ฒ ์ง๋ง ์ด์ CMake๋ฅผ ์ฌ์ฉํ์ฌ Windows์์ TensorFlow๋ฅผ ๋น๋ํ๊ธฐ ์ํ ์๋น ์ง์์ด ์ ๊ณต๋ฉ๋๋ค. C++ ์์ ํธ๋ ์ด๋ ํ๋ก๊ทธ๋จ์์ ์ฌ์ฉํ๊ธฐ ์ํ CPU ์ ์ฉ ๋ฒ์ ์ TensorFlow ๋ฐ Python์ฉ PIP ํจํค์ง ๋น๋๋ฅผ ์ง์ํฉ๋๋ค. Windows์ ์์ค์์ TensorFlow๋ฅผ ๋น๋ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ธํ ๋ด์ฉ๊ณผ ์ง์นจ์ CMake readme ๋ฅผ ์ฐธ์กฐํ์ธ์.
์ด๊ฒ์ ์ํ ํ์ง์ ์ฝ๋์ด๋ฉฐ ์ด ์ด๊ธฐ ๋ฒ์ ์ ๋ฒ๊ทธ๊ฐ ์์ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค. ํ๋๋ฅผ ์ฐพ์ผ๋ฉด ํน์ ๋ฌธ์ ์ ๋ํ ์๋ก์ด GitHub ๋ฌธ์ ๋ฅผ ์ ๊ธฐํ์ญ์์ค.
์ด์ Windows์์ TensorFlow์ ๋ํ GPU ์ง์์ ๋ฐ๊ณ Windows ๋ฐ Linux์ฉ ๊ณตํต Bazel ๊ธฐ๋ฐ ๋น๋๋ก ์ ํํ๋ ๋ฐ ์ด์ ์ ๋ง์ถฅ๋๋ค. ๋ค๋ฅธ ๊ธฐ๋ฅ ์์ฒญ์ด ์๋ ๊ฒฝ์ฐ ์๋ก์ด GitHub ๋ฌธ์ ๋ฅผ ์ ๊ธฐํ์ธ์.
์ด ๋ฏธ๋ฆฌ ๋น๋๋ ํ๋ก์ ํธ https://github.com/shishaochen/TensorFlow-0.8-Win ์ ์ฌ์ฉํ๊ณ ์์์ง๋ง GPU๋ฅผ ์ง์ํ์ง ์์ต๋๋ค.
@mrry ์๋
ํ์ธ์, Derek, TensorFlow์ ๋ํ ๊ธฐ์ฌ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
@cesardelgadof ์๋
ํ์ธ์, Cesar, ์ ๋ณด ๊ฐ์ฌํฉ๋๋ค.
๊ทธ๋ฌ๋ ์ด์ ์ Windows ํ๋ซํผ์์ TensorFlow ๋น๋๋ฅผ ๋ฐฉํดํ๋ ์ฅ์ ๋ฌผ์ Windows์์ bazel์ ์ฌ์ฉํ ์ ์๋ค๋ ์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ด์ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ์์ ์ ์ด์ง ์์ ์ ์์ผ๋ฏ๋ก bazel์ ์ฌ์ฉํ์ฌ TensorFlow๋ฅผ ๋น๋ํ ๋ ๋ฏธ๋ฆฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ ๋ ๊ฐ์ธ์ ์ผ๋ก Google ์ง์๋ค์ด Windows์์ ๊ธฐ๋ณธ ๋น๋๋ฅผ ์ง์ํ ๊ณํ์ด ์๋ค๋ฉด ์๋ง๋ bazel์ ์ ํํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๊ณต์ ์๋ฃจ์ ์ด ์ ๊ณต๋๋ฉด ์ฌ๋๋ค์ cmake์์ bazel๋ก ์ ํํ ๊ฒ์ ๋๋ค. ๊ทธ๋์ ๊ทธ๋ฐ ๋ ์ด ์๋ค๋ฉด ์ ์ฐ๋ฆฌ๋ ๊ทธ ๋ ์ด ์ผ์ฐ ์ค๋๋ก ํจ๊ป ์ผํฉ๋๊น?
๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ ๋๋ cmake ๋ฒ์ ์ ์๋ํ๊ณ ๋ค๋ฅธ ๋๊ตฐ๊ฐ๊ฐ bazel ๋น๋ ์์คํ ๋ ์๋ํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ์๋ง๋ ์ฐ๋ฆฌ๋ ๋ถ์พํ ์ค๋ฅ์ ์์ธ์ ์์๋ด๊ณ ์๋ชป ์์ฑ๋ ๊ตฌ์ฑ ํ์ผ์ ์ฐพ์ ์ ์์ ๊ฒ์ ๋๋ค.
๋ชจ๋ ๊ฐ์ฌํฉ๋๋ค.
@mrry ํฐ ๊ธฐ์ฌ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค! ๋๋ ๋น์ ์ ์ง์๋ฅผ ๋ฐ๋ฅด๋ ค๊ณ ๋ ธ๋ ฅํ์ต๋๋ค. ๋ค์๊ณผ ๊ฐ์ด ์คํจํ ๋๊น์ง ๋ชจ๋ ์๋ฒฝํ๊ฒ(์ฝ 45๋ถ ๋์) ์๋ํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
"C:\Program Files (x86)\MSBuild\Microsoft\NuGet\Microsoft.NuGet.targets (186,61)"์ BeforeTargets ํน์ฑ์ ๋์ด๋ ๋์ "BeforeGenerateProjectPriFile"์ ํ๋ก์ ํธ์ ์กด์ฌํ์ง ์์ผ๋ฉฐ ๋ฌด์๋ฉ๋๋ค.
ํ๋ก์ ํธ "H:\PycharmProjects\tensorflow\tensorflow\contrib\cmake\build\tf_python_build_pip_package.vcxproj"(๊ธฐ๋ณธ ๋์) ๋น๋ ์๋ฃ -- ์คํจ.
"H:\PycharmProjects\tensorflow\tensorflow\contrib\cmake\build\tf_python_build_pip_package.vcxproj"(๊ธฐ๋ณธ ๋์) (1) ->
"H:\PycharmProjects\tensorflow\tensorflow\contrib\cmake\build\pywrap_tensorflow.vcxproj"(๊ธฐ๋ณธ ๋์) (3) ->
"H:\PycharmProjects\tensorflow\tensorflow\contrib\cmake\build\tf_core_cpu.vcxproj"(๊ธฐ๋ณธ ๋์) (4) ->
"H:\PycharmProjects\tensorflow\tensorflow\contrib\cmake\build\tf_core_framework.vcxproj"(๊ธฐ๋ณธ ๋์) (5) ->
(CustomBuild ๋์) ->
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets(171,5): ์ค๋ฅ MSB6006: "cmd.exe"๊ฐ ์ฝ๋ 1๊ณผ ํจ๊ป ์ข
๋ฃ๋์์ต๋๋ค. [H:\PycharmProjects \ํฐ
ensorflow\tensorflow\contrib\cmake\build\tf_core_framework.vcxproj]
30 Warning(s)
1 Error(s)
@laudney ์๋ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ค๋ฅ๊ฐ ๋ฐ์ํ์ฌ ์ ๊ฐ์ ๋๋ค! ์ด ๋ฌธ์ ๋ ๊ตฌ๋ ์๊ฐ ๋ง๊ธฐ ๋๋ฌธ์ ์ด ๋ฌธ์ ์ ๋ํ ์์ ์ฌํญ์ ์ถ์ ํ๊ธฐ ์ํด ๋ฌธ์ #4798์ ๋ง๋ค์์ต๋๋ค.
@mingyr ์ฐ๋ฆฌ๋ ๊ฐ๋ฅํ ํ ๋นจ๋ฆฌ Bazel์ ์ฌ์ฉํ์ฌ Windows์์ TensorFlow๋ฅผ ๊ตฌ์ถํ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. @meteorcloudy ๋ ์ด๋ฅผ ์คํํ๊ธฐ ์ํด ์์ฒญ๋ ๋
ธ๋ ฅ์ ๊ธฐ์ธ์ด๊ณ ์์ผ๋ฉฐ Bazel์ด Windows์์ //tensorflow/cc:tutorials_example_trainer
๋ฅผ ๋น๋ํ ์ ์๋๋ก ํ๋ PR #4796์ ๋ณด๋์ต๋๋ค. ๊ณง ๋ณํฉํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๊ณ ์์ต๋๋ค.
@mrry #4798 ๋๋ถ์ ์ด์ ๋น๋๊ฐ ์ ๋๊ณ python whl ์ค์น๋ ํ ์คํธ๋์์ผ๋ฉฐ ์ง๊ธ๊น์ง ๋ฌธ์ ๊ฐ ๋ฐ๊ฒฌ๋์ง ์์์ต๋๋ค.
๊ณง conda์์ tensorflow๋ฅผ ๋ณผ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
Docker/VirtualBox๋ ๋งค์ฐ ๋์ ์๋ฃจ์ ์ด๋ฏ๋ก ๊ฐ์ํ๋ ํ๊ฒฝ์์ Tensorflow๋ฅผ ์ฌ์ฉํ์ญ์์ค. Tensorflow๋ ๊ธฐ๋ณธ์ ์ผ๋ก Windows์์ ์คํ๋์ด์ผ ํฉ๋๋ค. (๊ทธ๋ฆฌ๊ณ ๋๋ถ๋ถ์ด Python์ผ๋ก ์ฝ๋ฉ๋์ด ์๊ธฐ ๋๋ฌธ์ Windows์ฉ ๋ฐฐํฌํ์ ๋ง๋๋ ๋ฐ ๋ฌธ์ ๊ฐ ์์ด์ผ ํฉ๋๋ค.)
์๋ ํ์ธ์ ์ฌ๋ฌ๋ถ! @mrry ์์ ์ธ๊ธํ๋ฏ์ด ์ ๋ Bazel์ ์ฌ์ฉํ์ฌ TensorFlow Windows ๋น๋๋ฅผ ์์ ์ค์ ๋๋ค. PR #4796๊ณผ PR #4874๊ฐ ๋ณํฉ๋์ด ์ด์ C++ ์์ ํธ๋ ์ด๋๊ฐ Windows์์ Bazel 0.3.2 ๋ก ๋น๋๋ฉ๋๋ค!
๋ค์์ Windows์์ Bazel์ ์ฌ์ฉํ์ฌ TF๋ฅผ ๋น๋ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๊ฐ๋จํ ์ง์นจ์ ๋๋ค.
./configure
์คํbazel build -c opt --cpu=x64_windows_msvc --host_cpu=x64_windows_msvc //tensorflow/cc:tutorials_example_trainer --verbose_failures
์คํํธ์์ ~/.bazelrc
์ ๋น๋ ์ต์
์ ๋ฃ์ ์ ์์ต๋๋ค.
build -c opt
build --cpu=x64_windows_msvc --host_cpu=x64_windows_msvc
build --copt="/w" # Suppress some warning messages
build --experimental_ui # Enable a nice UI
์๋ ค์ง ๋ฌธ์ ๋ Bazel์ MSVC ๋ํผ ์คํฌ๋ฆฝํธ ๊ฐ Bazel 0.3.2์์ python3์ ์ง์ํ์ง ์์ง๋ง https://github.com/bazelbuild/bazel/commit/ce5c33dd7e96aff0cf1eb993edd41a5fe8c423f2์์ ์ด๋ฏธ ์์ ๋์๋ค๋ ๊ฒ์
๋๋ค. BAZEL_PYTHON
๋ฅผ python 2.7 ๋ฐ์ด๋๋ฆฌ๋ก ์ค์ ํ๊ฑฐ๋ HEAD์์ Bazel์ ๋น๋ํ์ฌ ํด๊ฒฐํ ์ ์์ต๋๋ค.
Bazel์ ์ฌ์ฉํ์ฌ C++ ์์ ํธ๋ ์ด๋๋ฅผ ๋น๋ํ๋ ๋ฐ ๋ด ์ปดํจํฐ(Windows 7, CPU 2.9GHz, RAM 64G)์์ ์ฝ 20๋ถ์ด ์์๋๋ฉฐ ์ผ๋ถ ์์ค ํ์ผ(์: array_ops.cc
)์ ๋ณ๊ฒฝํ ํ ์ฆ๋ถ ๋น๋๋ ์ฝ 1๋ถ์
๋๋ค.
๋ํ Bazel์ ์ฌ์ฉํ์ฌ Windows์์ python PIP ํจํค์ง๋ฅผ ๋น๋ํ๋ ๋ฐ ์ฝ๊ฐ์ ์ง์ ์ด ์์ผ๋ฉฐ ๊ฐ๋ฅํ ํ ๋นจ๋ฆฌ PR์ ๋ณด๋ด๊ฒ ์ต๋๋ค.
Windows์์ Bazel๋ก TensorFlow๋ฅผ ๋น๋ํ๊ณ ๊ฐ์ ํ ์ ์ ์๋ ค์ฃผ์ธ์!
@meteorcloudy , ์๋
, ์ค:
C++ ์์ ํธ๋ ์ด๋๋ Windows์ ์ค์น๋ ์ฌ์ ๋น๋๋ bazel ๋ฐ์ด๋๋ฆฌ๋ก ๋น๋ํด์ผ ํฉ๋๋ค. ์๋๋ฉด ์ต์ git ๋ฒ์ ์ bazel๊ณผ ๋๊ธฐํํ๊ณ ์ฌ์ฉ์ ์ ์ ๋น๋๋ bazel์ ์ฌ์ฉํ ์ ์์ต๋๊น?
์ค์ ๋ก ๋ ๋ฒ์งธ ๋ฐฉ๋ฒ์ ์ ํํ๊ณ ๊ณ ๊ฐ ๋น๋ bazel์ ์ฌ์ฉํ์ง๋ง ๋ค์๊ณผ ๊ฐ์ด ๋ถํํฉ๋๋ค.
์ค๋ฅ: C:/tensorflow/tensorflow/core/ BUILD:108 :1: ์ถ๋ ฅ 'tensorflow/core/example e/example.pb.h'๊ฐ ์์ฑ๋์ง ์์์ต๋๋ค.
์ค๋ฅ: C:/tensorflow/tensorflow/core/ BUILD:108 :1: ์ถ๋ ฅ 'tensorflow/core/example e/example_parser_configuration.pb.h'๊ฐ ์์ฑ๋์ง ์์์ต๋๋ค.
์ค๋ฅ: C:/tensorflow/tensorflow/core/ BUILD:108 :1: ์ถ๋ ฅ 'tensorflow/core/example e/example.pb.h'๊ฐ ์์ฑ๋์ง ์์์ต๋๋ค.
์ค๋ฅ: C:/tensorflow/tensorflow/core/ BUILD:108 :1: ์ถ๋ ฅ 'tensorflow/core/example e/feature.pb.h'๊ฐ ์์ฑ๋์ง ์์์ต๋๋ค.
......
๋ด๊ฐ ์ทจํ ๋น๋ ์ ์ฐจ:
$ cd c:/ํ
์ํ๋ก
$ export JAVA_HOME="$(ls -d C:/Program\ Files/Java/jdk* | ์ ๋ ฌ | tail -n 1)"
$ ๋ด๋ณด๋ด๊ธฐ BAZEL_SH=c:/tools/msys64/usr/bin/bash.exe
$ export BAZEL_VS="C:/Program Files (x86)/Microsoft Visual Studio 14.0"
$ ๋ด๋ณด๋ด๊ธฐ BAZEL_PYTHON=C:/Python27/python.exe
$ ๋ด๋ณด๋ด๊ธฐ PATH=$PATH:/c/Python27:/c/Python27/Scripts:/c/tools/swigwin-3.0.10:/c/bazel/output
./๊ตฌ์ฑ
bazel ๋น๋ -c opt --cpu=x64_windows_msvc --host_cpu=x64_windows_msvc //tensorflow/cc:tutorials_example_trainer --verbose_failures
์ด๋ ํ ์ ์?
๊ฐ์ฌ ํด์.
@meteorcloudy ์๋ ์ค,
๋น์ทํ ์ ์ฐจ๋ฅผ ๋ฐ๋์ง๋ง ๋ค์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
cd C:/tools/msys64/var/tmp/Bazel/V1uFCi$H/execroot/tensorflow
bazel-out/host/bin/external/protobuf/protoc.exe --cpp_out=bazel-out/vc_14_0_x64-opt/genfiles/ --plugin=protoc-gen-grpc=bazel-out/host/bin/external/grpc /grpc_cpp_plugin.exe --grpc_out=bazel-out/vc_14_0_x64-opt/genfiles/ -I. -Iexternal/protobuf/src -Ibazel-out/vc_14_0_x64-opt/genfiles/external/protobuf/src tensorflow/core/debug/debug_service.proto: com.google.devtools.build.lib.shell.BadExitStatusException: ํ๋ก์ธ์ค๊ฐ ์ํ๋ก ์ข
๋ฃ๋จ 1.
azel-out/vc_14_0_x64-opt/genfiles/external/protobuf/src: ๊ฒฝ๊ณ : ๋๋ ํฐ๋ฆฌ๊ฐ ์กด์ฌํ์ง ์์ต๋๋ค.
ํด๋๋ฅผ ํ์ธํ๋๋ฐ protobuf์ src ๋๋ ํ ๋ฆฌ๊ฐ ์์ต๋๋ค. ๋ํ bazel_out/host/bin/external/์๋ grpc ํด๋๊ฐ ์์ต๋๋ค(grpc_cpp_plugin.exe ํ์ผ์ด ์์).
์ด ์ค๋ฅ๋ tensorflow/core์ ํ์ผ์ด ์์ฑ๋์ง ์๋๋ค๋ ์ฌ๋ฌ ์ค๋ฅ๊ฐ ๋ค๋ฐ๋ฆ ๋๋ค.
๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ด๋์ด๊ฐ ์์ต๋๊น?
๊ฐ์ฌ ํด์
@mingyr @karthiek Bazel๊ณผ ํจ๊ป TF๋ฅผ ๊ตฌ์ถํด ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค!
๋ถํํ๋ http://ci.bazel.io/job/TensorFlow/ ์ ๋ฐ๋ฅด๋ฉด HEAD์์ Bazel์ ์ฌ์ฉํ์ฌ Linux์์ TF ๋น๋๊ฐ ์คํจํ๊ณ ๋น์ทํ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ์์ ํ๊ณ ์์ต๋๋ค. ํํธ Bazel 0.3.2 ๋ก ๋ค์ ์๋ํ ์ ์์ต๋๊น?
@meteorcloudy ์๋ ์ค:
"Bazel 0.3.2๋ก ๋ค์ ์๋ํ ์ ์์ต๋๊น?"์(๋) ๋ฌด์จ ๋ป์ธ๊ฐ์?
๊ณต์ ์ฌ์ ๋น๋๋ Windows ๋ฐ์ด๋๋ฆฌ๋ฅผ ์๋ฏธํฉ๋๊น, ์๋๋ฉด ์ต์ ๋ฒ์ ์ bazel๊ณผ ๋๊ธฐํํ๊ณ ๋ด ๋น๋๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๊น?
์ฌ์ค ๋๋ ์ด๋ฏธ ์ต์ ๋ฒ์ ์ bazel๊ณผ ๋๊ธฐํํ๊ณ ๋ด ๋น๋๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ฌธ์ ๊ฐ ์์ง ๋ณด๋ฅ ์ค์ธ์ง ํ์ธํ๊ธฐ ์ํด ๊ณต์ ์ฌ์ ๋น๋ ๋ฐ์ด๋๋ฆฌ๋ฅผ ์๋ํด์ผ ํ๋ค๊ณ ํ์ํ๋ฉด ์น์ ํ๊ฒ ์๋ ค์ฃผ์ธ์.
BR
@mingyr ์, "๊ณต์ ์ฌ์ ๋น๋ ๋ฐ์ด๋๋ฆฌ"๋ฅผ ์๋ฏธํฉ๋๋ค. HEAD์ ๋๊ธฐํํ ํ์๋ ๋์ผํ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
https://github.com/bazelbuild/bazel/issues/1929 ๋ฅผ ์ฐธ์กฐํ์ญ์์ค.
@meteorcloudy ์๋ ํ์ธ์, ์ค
์ ์ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ๋ฏธ๋ฆฌ ์ปดํ์ผ๋ 0.3.2 ๋ฐ์ด๋๋ฆฌ๋ฅผ ์ฌ์ฉํด ๋ณด์๋๋ฐ tutorialilas_example_trainer.exe ํ์ผ์ ์ปดํ์ผํ๊ณ ์์ฑํ ์ ์์์ต๋๋ค.
@karthiek ์ฑ๊ณตํด์ ๋คํ์ ๋๋ค! ์ผ๋ง๋ ๊ฑธ๋ ธ์ด? CMake ๋น๋๋ณด๋ค ๋น ๋ฆ ๋๊น?
@meteorcloudy ์ฝ 15๋ถ์ด ๊ฑธ๋ ธ์ต๋๋ค(Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz). ์ด์ ๋ Windows์์ ํ ์ ํ๋ฆ์ ๋น๋ํ ํ์๊ฐ ์์์ต๋๋ค. ๊ทธ๋์ ๋ง์ง๋ง์ผ๋ก ์๋ ค์ฃผ์ ๋ฐฉ๋ฒ์ ์ง์ ์๋ํด ๋ดค์ต๋๋ค. CMake๋ฅผ ์ฌ์ฉํ์ฌ ๋น๋ํ์ง ์์์ต๋๋ค.
์๋ ํ์ธ์, @meteorcloudy ์ ๊ทผ์ ์๋ํ์ง๋ง ์๋์ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค. ๋๊ตฌ๋ ์ง ๋์์ค ์ ์์ต๋๊น?
bazel ๋น๋ -c opt --cpu=x64_windows_msvc --host_cpu=x64_windows_msvc //tensorflow/cc:tutorials_example_trainer --verbose_failures
์ ๋ณด: ๋ถ์ ๋์ //tensorflow/cc:tutorials_example_trainer.
์ ๋ณด: ๋์ 1๊ฐ๋ฅผ ์ฐพ์์ต๋๋ค...
ERROR: C:/Programming/tensorflow/tensorflow/core/ BUILD:1064 :1: genrule //tensorflow/ core:version_info_gen ์คํ ์คํจ: bash.exe ์คํจ: ๋ช
๋ น ์คํ ์ค๋ฅ
cd C:/tools/msys64/var/tmp/Bazel/s5nfxnhX/execroot/tensorflow
SET ๊ฒฝ๋ก=C:\tools\msys64\usr\local\bin;C:\tools\msys64\usr\bin;C:\tools\msys64\usr\bin;C:\tools\msys64\opt\bin;C :\Windows\System32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\tools\msys64\usr\bin\site_perl;C:\ tools\msys64\usr\bin\vendor_perl;C:\tools\msys64\usr\bin\core_perl;C:\Program Files\Google;C:\WinPython-64bit-2.7.10.2\python-2.7.10.amd64; C:\WinPython-64bit-2.7.10.2\python-2.7.10.amd64\Scripts;C:\tools\swigwin-3.0.10;C:\Program Files\java\jdk1.8.0_102\bin
C:/tools/msys64/usr/bin/bash.exe -c ์์ค ์ธ๋ถ/bazel_tools/tools/genrule/genrule-setup.sh; tensorflow/tools/git/gen_git_source.py --generate tensorflow/tools/git/gen/spec.json tensorflow/tools/git/gen/head tensorflow/tools/git/gen/branch_ref "bazel-out/vc_14_0_x64-opt/ genfiles/tensorflow/core/util/version_info.cc": com.google.devtools.build.lib.shell.BadExitStatusException: ์ํ 1๋ก ์ข
๋ฃ๋ ํ๋ก์ธ์ค
์ญ์ถ์ (๊ฐ์ฅ ์ต๊ทผ ํธ์ถ ๋ง์ง๋ง):
ํ์ผ "tensorflow/tools/git/gen_git_source.py", 258ํ,
์์ฑ(์ธ์.์์ฑ)
ํ์ผ "tensorflow/tools/git/gen_git_source.py", ๋ผ์ธ 210, ์์ฑ
git_version = get_git_version(๋ฐ์ดํฐ["๊ฒฝ๋ก"])
get_git_version์ "tensorflow/tools/git/gen_git_source.py" ์ค 151 ํ์ผ
"--long", "--dirty", "--tags"]).strip()
ํ์ผ "C:\WinPython-64bit-2.7.10.2\python-2.7.10.amd64\lib\subprocess.py", 566ํ, check_output
ํ๋ก์ธ์ค = Popen(stdout=PIPE, _popenargs, *_kwargs)
ํ์ผ "C:\WinPython-64bit-2.7.10.2\python-2.7.10.amd64\lib\subprocess.py", 710ํ, ์ด๊ธฐํ
ํ๋ฆฌ๋ค, ํ๋ฆฌ๋ค)
ํ์ผ "C:\WinPython-64bit-2.7.10.2\python-2.7.10.amd64\lib\subprocess.py", 958ํ, _execute_child
์์ ์ ๋ณด)
WindowsError: [์ค๋ฅ 2] ์์คํ
์ด ์ง์ ๋ ํ์ผ์ ์ฐพ์ ์ ์์ต๋๋ค.
์ค๋ฅ: C:/tools/msys64/var/tmp/Bazel/s5nfxnhX/external/jpeg_archive/ BUILD:74 :1: ์ ์ธ๋ ์ถ๋ ฅ 'external/jpeg_archive/jconfig.h'๊ฐ genrule์ ์ํด ์์ฑ๋์ง ์์์ต๋๋ค. ์ด๊ฒ์ genrule์ด ์ค์ ๋ก ์ด ์ถ๋ ฅ์ ์์ฑํ์ง ์์๊ธฐ ๋๋ฌธ์ผ ์ ์์ต๋๋ค. ๋๋ ์ถ๋ ฅ์ด ๋๋ ํ ๋ฆฌ์ด๊ณ genrule์ด ์๊ฒฉ์ผ๋ก ์คํ๋์๊ธฐ ๋๋ฌธ์ผ ์ ์์ต๋๋ค(์ ์ธ๋ ํ์ผ ์ถ๋ ฅ์ ๋ด์ฉ๋ง ์๊ฒฉ์ผ๋ก ์คํ๋๋ genrule์์ ๋ณต์ฌ๋จ)
์ค๋ฅ: C:/tools/msys64/var/tmp/Bazel/s5nfxnhX/external/gif_archive/ BUILD:35 :1: ์ ์ธ๋ ์ถ๋ ฅ 'external/gif_archive/windows/unistd.h'๊ฐ genrule์ ์ํด ์์ฑ๋์ง ์์์ต๋๋ค. ์ด๊ฒ์ genrule์ด ์ค์ ๋ก ์ด ์ถ๋ ฅ์ ์์ฑํ์ง ์์๊ธฐ ๋๋ฌธ์ผ ์ ์์ต๋๋ค. ๋๋ ์ถ๋ ฅ์ด ๋๋ ํ ๋ฆฌ์ด๊ณ genrule์ด ์๊ฒฉ์ผ๋ก ์คํ๋์๊ธฐ ๋๋ฌธ์ผ ์ ์์ต๋๋ค(์ ์ธ๋ ํ์ผ ์ถ๋ ฅ์ ๋ด์ฉ๋ง ์๊ฒฉ์ผ๋ก ์คํ๋๋ genrule์์ ๋ณต์ฌ๋จ)
๋์ //tensorflow/cc:tutorials_example_trainer ๋น๋ ์คํจ
์ ๋ณด: ๊ฒฝ๊ณผ ์๊ฐ: 4.967์ด, ์๊ณ ๊ฒฝ๋ก: 0.96์ด
์คํจ: ๋น๋๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋์ง ์์์ต๋๋ค.
@bssrdf ์ฆ์์ https://github.com/bazelbuild/bazel/issues/1463๊ณผ ์ ์ฌํฉ๋๋ค.
์์
๊ณต๊ฐ์ด C:
๋๋ผ์ด๋ธ์ ์๋ ๊ฒฝ์ฐ ์ค๋จ๋๋ Windows์ bazel์ ์๋ ค์ง ๋ฌธ์ ์
๋๋ค.
์ด ๊ฒฝ์ฐ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ ํฉ์ ๋ง๋๋ ๊ฒ์
๋๋ค. tensorflow ์ฒดํฌ์์์ด d:\src\tensorflow
์ ์์ผ๋ฉด ๋ค์์ด ์๋ํด์ผ ํฉ๋๋ค.
C:\> mklink /j d_src d:\src
C:\> cd c:\d_src\tensorflow
C:\D_SRC\TENSORFLOW> bazel build ...
https://github.com/bazelbuild/bazel/issues/1463#issuecomment -251967323 ์ฐธ์กฐ
๋ถํธ์ ๋๋ ค ์ฃ์กํฉ๋๋ค. ์ต๋ํ ๋นจ๋ฆฌ ์์ ํ๊ฒ ์ต๋๋ค.
@bssrdf ํ ๋ ๋ฒ์งธ๋ก ๋ณด๋ฉด ๊ทธ๋ ์ง ์์ ์๋ ์์ต๋๋ค. PATH์ git
๊ฐ ์์ ์ ์์ต๋๊น?
@meteorcloudy ์๋ ํ์ธ์, ์ค:
๋ํ ๋ฏธ๋ฆฌ ์ปดํ์ผ๋ bazel ๋ฐ์ด๋๋ฆฌ ๋ฒ์ 0.3.2๋ฅผ ์ฌ์ฉํ์ฌ C++ ์์ ํธ๋ ์ด๋๋ฅผ ์ปดํ์ผํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ์์์ ํ์ธํฉ๋๋ค.
๋ด ๋ ธํธ๋ถ์ ์ค๋๋ ๋ ธํธ๋ถ์ด๊ณ ๋ค๋ฅธ ์์ ์ ์คํํ๋ฏ๋ก ๋ฒค์น๋งํน ๊ด์ ์์ ์ปดํ์ผ ์๊ฐ์ ๋ง๋ ์๋ฉ๋๋ค.
์์ ์ ๊ฐ์ฌ๋๋ฆฌ๋ฉฐ Windows์์ python PIP ํจํค์ง๋ฅผ ์ปดํ์ผํ๋ ๋ฐฉ๋ฒ์ ์ดํด๋ณด์ธ์.
BR
@mingyr ๋ฉ์ง๋ค์ !
๊ทธ๋ฌ๋ ๋ชจ๋ ์ฌ๋์ ์ํ ์๋ฆผ์
๋๋ค. ์์ ํธ๋ ์ด๋๋ TF HEAD์์ ๋น๋ํ ์ ์์ต๋๋ค. ๋ด ์์ ์ฌํญ์ด ์ด๋ค ์ด์ ๋ก be3bc472a52571a83f048479d6a4fa528b5a495e๋ก ๋๋๋ ค์ก๊ธฐ ๋๋ฌธ์
๋๋ค.
์ข์ ์์์ Bazel์ ์ฌ์ฉํ์ฌ Python PIP ํจํค์ง๋ฅผ ๋น๋ํ๋ ๊ฒ์ด ๊ฑฐ์ ์๋ฃ๋์๋ค๋ ๊ฒ์
๋๋ค! PR #4942๋ฅผ ์ฐธ์กฐํ์ญ์์ค.
@dslomov ๋ต๋ณ ๊ฐ์ฌํฉ๋๋ค. ์ ์ํ ๋๋ก bazel non-c: ๋๋ผ์ด๋ธ ์์ ๊ณต๊ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผ ํ์ต๋๋ค. Windows์ฉ git์ ์ค์นํ์ผ๋ฉฐ git์ MSYS2์ PATH์์ ๋ณผ ์ ์์ต๋๋ค.
๋ฐฉ๊ธ bazel ๋น๋ ๋ช ๋ น์ ๋ค์ ์คํํ๋๋ฐ ๊ธฐ์ ์ฒ๋ผ ์๋ํ๊ณ ์์ต๋๋ค. ์ด์ ๋ฌด์จ ์ผ์ด ์์๋์ง ๋ชจ๋ฅด๊ฒ ์ด์. ์ด์จ๋ ์ด๊ฒ์ Windows 10 ํ, VS 2015 ์ปค๋ฎค๋ํฐ ์๋์ , ์ฌ์ ๋น๋๋ bazel 0.3.2 ๋ฐ Winpython-2.7.10.2์์ ์ฑ๊ณต์ ํ์ธํ๋ ๋ ๋ค๋ฅธ ๊ฒ์ ๋๋ค.
์ค์จ์ ๋ ธ๊ณ ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
@meteorcloudy , ์ ์ฐจ์ ๋ฐ๋ผ GPU ๋ฒ์ ์ ๋น๋ํ ์ ์์ต๋๊น(๋ฌผ๋ก bazel ๋น๋ ๋ณ๊ฒฝ ํฌํจ)?
@mrry Hi Derek, ๊ธฐ์ฌํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ํ์ง๋ง ํ ์๋ณด๋์ ์ด ๋ฌธ์ ๊ฐ ์๋๋ฐ ์๋ํ์ง ์์ต๋๋ค.
C:\Users\Cesar\Documents\Notebooks\DeepLearning>tensorboard --logdir='./my_graph/'
Traceback (most recent call last):
File "c:\program files\anaconda3\lib\runpy.py", line 184, in _run_module_as_main
"__main__", mod_spec)
File "c:\program files\anaconda3\lib\runpy.py", line 85, in _run_code
exec(code, run_globals)
File "C:\Program Files\Anaconda3\Scripts\tensorboard.exe\__main__.py", line 5, in <module>
ImportError: No module named 'tensorflow.tensorboard'
@bssrdf ์ฝ๋๊ฐ ์์ง Windows์์ GPU๋ฅผ ์ง์ํ์ง ์๊ธฐ ๋๋ฌธ์ ์๋ง๋ ์๋ ๊ฒ์ ๋๋ค. @mrry ๋ MSVC๋ก TF ์ฝ๋๋ฅผ ์ปดํ์ผํ๋ ๋ชจ๋ ์์ ์ ์ํํ์ผ๋ฉฐ GPU ์ง์์ ์์ ํ๋ ๋ฐ ์ฃผ๋ ฅํด ์์ต๋๋ค.
ํ๋ก๋์ ์ฌ์ฉ์ ์ํ ETA์ ๋ํด ๊ต์ก๋ฐ์ ์ถ์ธก์ด ์์ต๋๊น?
Windows์์ Bazel์ ์ฌ์ฉํ๋ ์ฌ๋๋ค๊ณผ ๊ด๋ จ์ด ์๋ ๊ฒ ๊ฐ๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ค์น๋ฅผ ์ฝ๊ฒ ํ๊ธฐ ์ํด ์ด์ฝ๋ฆฟ ํจํค์ง๋ฅผ ๋ง๋ค์์ต๋๋ค. https://chocolatey.org/packages/bazel. ์ฌ์ฉํด ๋ณด์๊ณ ๋ฌธ์ ๊ฐ ์๋ ๊ฒฝ์ฐ(์ ๊ฒ์ ๋๋ค.) bazelbuild/bazel์์ ํธ์ํ๊ฑฐ๋ ๋ฌธ์ ๋ฅผ ์ ๊ธฐํ์ญ์์ค.
@mrry ๋ฐ @guschmue ๋๋ถ์ GPU ์ง์์ด ์ค๋จ๋์์ต๋๋ค.
์ง์นจ์ readme ์์ ์
๋ฐ์ดํธ๋ฉ๋๋ค.
๋๊ตฌ๋ ์ง Windows์์ ์ปดํ์ผํ๊ณ PIP ํจํค์ง๋ฅผ ๋ง๋ค ์ ์์ต๋๊น? ๊ฐ์ฌํฉ๋๋ค. :)
๋ง์คํฐ(66f979714c9a8582059f383ec1505d13c9e8c523)๋ Windows CPU ๋ฐ GPU์์ ์ ์์ ์ผ๋ก ๋น๋๋์ด์ผ ํฉ๋๋ค. ์ง์นจ์ tensorflow/contrib/cmake/README.md์ ์์ต๋๋ค(์ง๊ธ์ cmake 3.6 ์ฌ์ฉ).
Tensorboard๊ฐ ํฌํจ๋์ด ์์ง ์์ต๋๊น? ์๋ํ์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
C:\Users\Cesar\Documents\Notebooks\DeepLearning>tensorboard --logdir='./my_graph/'
Traceback (most recent call last):
File "c:\program files\anaconda3\lib\runpy.py", line 184, in _run_module_as_main
"__main__", mod_spec)
File "c:\program files\anaconda3\lib\runpy.py", line 85, in _run_code
exec(code, run_globals)
File "C:\Program Files\Anaconda3\Scripts\tensorboard.exe\__main__.py", line 5, in <module>
ImportError: No module named 'tensorflow.tensorboard'
์ผ๋ถ python ๋ชจ๋์ด pip์์ ๋๋ฝ๋์์ต๋๋ค. ์, contrib ๋ฐ tensorboard ์ค ์ผ๋ถ๋ cmake๋ก ๋น๋ํ ๋ ํ ์ ๋ณต์ฌ๋์ง ์์ต๋๋ค.
tf_python.cmake์ ์ต์
์ ์ถ๊ฐํ๊ฑฐ๋ ํฉ๋ณ์ฆ์ด ์๋์ง ํ์ธํ๊ฒ ์ต๋๋ค.
์ง์นจ์ ๋ฐ๋ผ Python์ฉ tensorflow๋ฅผ ์ปดํ์ผํ์ง๋ง ๋ด GPU์์ tf.nn.conv2d
๋ฅผ ์ฌ์ฉํ ๋ cudnn
์์ ๋ฐ์ํ๋ ์ถฉ๋์ด ๋ฐ์ํฉ๋๋ค.
์ถฉ๋์ ์ผ์ผํค๋ ์ํ ์ฝ๋๋
import tensorflow as tf
import numpy as np
sess = tf.InteractiveSession()
image = tf.placeholder(tf.float32, shape=[None, 10, 10, 1], name='image')
kernel = tf.truncated_normal([5, 5, 1, 1], stddev=0.1)
conv = tf.nn.conv2d(image, kernel, strides=[1, 1, 1, 1], padding='SAME')
sess.run(tf.initialize_all_variables())
sess.run(conv, feed_dict={image: [np.zeros((10, 10, 1))]})
์ด๋ก ์ธํด python ํ๋ก์ธ์ค๊ฐ ์ค๋จ๋๊ณ jupyter ์ฝ์์ ์ด ์ถ๋ ฅ์ด ํ์๋ฉ๋๋ค.
WARNING:root:kernel 800a0f42-d62b-4128-a61a-ba64ee725ca8 restarted
I d:\tensorflow\tensorflow\tensorflow\stream_executor\dso_loader.cc:125] successfully opened CUDA library cublas64_80.dll locally
I d:\tensorflow\tensorflow\tensorflow\stream_executor\dso_loader.cc:125] successfully opened CUDA library cudnn64_5.dll locally
I d:\tensorflow\tensorflow\tensorflow\stream_executor\dso_loader.cc:125] successfully opened CUDA library cufft64_80.dll locally
I d:\tensorflow\tensorflow\tensorflow\stream_executor\dso_loader.cc:125] successfully opened CUDA library nvcuda.dll locally
I d:\tensorflow\tensorflow\tensorflow\stream_executor\dso_loader.cc:125] successfully opened CUDA library curand64_80.dll locally
I d:\tensorflow\tensorflow\tensorflow\core\common_runtime\gpu\gpu_device.cc:944] Found device 0 with properties:
name: GeForce GTX 970
major: 5 minor: 2 memoryClockRate (GHz) 1.3165
pciBusID 0000:01:00.0
Total memory: 4.00GiB
Free memory: 3.31GiB
I d:\tensorflow\tensorflow\tensorflow\core\common_runtime\gpu\gpu_device.cc:965] DMA: 0
I d:\tensorflow\tensorflow\tensorflow\core\common_runtime\gpu\gpu_device.cc:975] 0: Y
I d:\tensorflow\tensorflow\tensorflow\core\common_runtime\gpu\gpu_device.cc:1034] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GTX 970, pci bus id: 0000:01:00.0)
E d:\tensorflow\tensorflow\tensorflow\core\common_runtime\gpu\gpu_device.cc:662] Could not identify NUMA node of /job:localhost/replica:0/task:0/gpu:0, defaulting to 0. Your kernel may not have been built with NUMA support.
E d:\tensorflow\tensorflow\tensorflow\stream_executor\cuda\cuda_dnn.cc:385] could not create cudnn handle: CUDNN_STATUS_NOT_INITIALIZED
E d:\tensorflow\tensorflow\tensorflow\stream_executor\cuda\cuda_dnn.cc:392] error retrieving driver version: Permission denied: could not open driver version path for reading: /proc/driver/nvidia/version
E d:\tensorflow\tensorflow\tensorflow\stream_executor\cuda\cuda_dnn.cc:352] could not destroy cudnn handle: CUDNN_STATUS_BAD_PARAM
F d:\tensorflow\tensorflow\tensorflow\core\kernels\conv_ops.cc:532] Check failed: stream->parent()->GetConvolveAlgorithms(&algorithms)
cudnn64_5.dll
์ ๋ค๋ฅธ ๋ฒ์ ์ ์๋ํ๋ฉด์ ์ด์ฌ๋ ๊ฑฐ๋ฆฌ๋ ๋์ ์ฝ๋๊ฐ ํ ๋ฒ ์๋ํ๋๋ก ํ ์ ์์๊ณ GPU๊ฐ ์ฌ์ฉ ์ค์์ ํ์ธํ์ง๋ง cudnn
์ ๋ชจ๋ ๋ฒ์ ์ ์๋ํ ํ์๋ ๋ ๋ฒ์งธ๋ก ์๋ํ๊ฒ ๋ง๋๋ ์ด์ด ์์์ต๋๋ค.
๋น์ ์ ์คํฌ๋ฆฝํธ๋ฅผ ์๋ํ๊ณ ๊ทธ๊ฒ์ ๋๋ฅผ ์ํด ์๋ํฉ๋๋ค. ์ฐ๋ฆฌ๋ cudnn5.1๋ก๋ง ํ
์คํธํ์ผ๋ฉฐ ์ด์ ๋ฒ์ ์ ๋ชจ๋ ๋ชจ๋ฆ
๋๋ค.
cudnn5.1์ ์๋ก ์ค์นํ๊ณ ์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋น๋ํ๊ณ PATH์ cudnn64_5.dll์ด 5.1์ธ์ง ํ์ธํฉ๋๋ค.
ํ์ธํด์ผ ํ ๋ ๋ค๋ฅธ ์ฌํญ: ์ฌ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์์๋ณด๋ค ์ฝ๊ฐ ๋ฎ์ต๋๋ค. ์ฅ์น๊ฐ ์ด๋ ค ์๋ ์คํ ์ค์ธ ๋ค๋ฅธ ํ์ด์ฌ์ด ์์ต๋๊น?
๋๋ ์ ์ ํ cudnn์ ๋ค์ด๋ก๋ํ๊ณ PATH( cudnn-8.0-windows10-x64-v5.1
)์์ ๊นจ๋ํ ์ฌ๊ตฌ์ถ์ ์๋ํ์ง๋ง ์๊ฐ๋ ์์์ต๋๋ค. ์ด ๋ค์ด๋ก๋์ cudnn64_5.dll
๋ 'ํ์ผ ๋ฒ์ ': 6.14.11.8000
์ด๊ณ 'ํ์ผ ์ค๋ช
': NVIDIA CUDA 80.0.29 CUDNN Library
์
๋๋ค.
CUDA 8.0 ๊ฒฝ๋ก์ cublas64_80.dll
'ํ์ผ ๋ฒ์ '์ ๊ฐ์ง๋ง 'ํ์ผ ์ค๋ช
': NVIDIA CUDA 80.0.45 BLAS Library
cufft64_80.dll
๋ฐ curand64_80.dll
์๋ ์ผ์นํ๋ 'ํ์ผ ๋ฒ์ '์ด ์์ง๋ง 'ํ์ผ ์ค๋ช
'์์ 8.0.44
์
๋๋ค.
๋ด๊ฐ ์ค์นํ GPU ๋๋ผ์ด๋ฒ๋ ์ต์ CUDA ๋๋ผ์ด๋ฒ์ 369.30
๋ฒ์ ์ด๊ณ System32์ nvcuda.dll
์๋ 'ํ์ผ ๋ฒ์ ': 6.14.13.6930
๋ฐ 'ํ์ผ ์ค๋ช
': NVIDIA CUDA 80.0.44 driver
์ด ์์ต๋๋ค.
๋๋ ๋ฎ์ ์ฅ์น ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋จ์ง 3.5GB์ ์ ์ฉํ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์๊ณ CUDA๊ฐ ๋ง์ง๋ง 0.5GB๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์ข์ํ์ง ์๋ 970์ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๋๋ ๋์ผํ cudnn ๋ฒ์ ์ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ ์ ์๋ํฉ๋๋ค. tf ํธ๋ฆฌ์๋ ๋ง์ conv python ํ ์คํธ๊ฐ ์์ผ๋ฉฐ ๋ชจ๋ ํต๊ณผํ๊ณ ์์ต๋๋ค. ์ ๋ ์ฃผ๋ก ํ ์คํธ์ฉ์ผ๋ก 970์ ์ฌ์ฉํฉ๋๋ค. ๊ทํ์ ๋ก๊ทธ๋ cudnn์ ์ด๊ธฐํํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ์๋ค๊ณ ๊ตฌ์ฒด์ ์ด์์ต๋๋ค. ์ด๊ธฐํ ์ฝ๋๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
ํ์ธ ๋ฌธ์ ๋ ๋๋ผ์ด๋ฒ ๋ฌธ์ ์ธ ๊ฒ ๊ฐ์ต๋๋ค. ๋น๋์ค ๋๋ผ์ด๋ฒ๋ฅผ ๋ค์ ์์ํ ๋๋ง๋ค cudnn๊ณผ convolution์ ์ฑ๊ณต์ ์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค(์ฅ์น ๊ด๋ฆฌ์ ๋นํ์ฑํ ํ ํ์ฑํ ์ฌ์ฉ). ๊ทธ๋ฌ๋ ํ ํ๋ก์ธ์ค์์ ์ฌ์ฉํ ํ์๋ ํฅํ ์ฌ์ฉ์ด ์ด๊ธฐํ๋์ง ์์ต๋๋ค.
๋ํ cudnn์ด ์ด๊ธฐํ๋๋ฉด ๋ค๋ฅธ ํ๋ก์ธ์ค์์ ๋๋ผ์ด๋ฒ ๊ด๋ จ ์ถฉ๋์ด ๋ฐ์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ ๋ฐ์ดํธ: ๊ทธ๋ํฝ ๋๋ผ์ด๋ฒ๋ฅผ ์ ๊ฑฐํ๊ณ ๋ค์ ์ค์นํ์ผ๋ฉฐ ์ด์ cudnn์ด ์๋ ํ๋์ ํ๋ก์ธ์ค(jupyter ์ปค๋)๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๋๋ก ํ ์ ์์ง๋ง ํด๋น ์ปค๋์ ๋ซ์ ๋๊น์ง ๋ค๋ฅธ ์ปค๋์์ cudnn์ ์ฌ์ฉํ๋ ค๋ ๋ชจ๋ ์๋์์ ๋์ผํ ์ถฉ๋์ด ๋ฐ์ํฉ๋๋ค. ์๋ ์ค์ธ ์ปค๋์ ๋ค์ ์์ํ๋ฉด ๋๋ผ์ด๋ฒ๋ฅผ ๋ค์ ๋ก๋ํ์ง ์๊ณ ๋ ๋ค๋ฅธ ์ปค๋์์ ์ฝ๋๋ฅผ ์คํํ ์ ์์ต๋๋ค.
๋๋ฅผ ์ํด ์ปดํ์ผ๋์์ง๋ง gen_git_source.py ํ์ผ์ 150ํ์ shell=True๋ฅผ ์ถ๊ฐํด์ผ ํ์ต๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
http://stackoverflow.com/questions/24306205/file-not-found-error-when-launching-a-subprocess
@synap5e ์ผ๋ฐ tf.Session()์์ ์ด๊ฒ์ ์คํํ๋ฉด tf๊ฐ GPU์ ๋ชจ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ๋๋ฌธ์ ๋ ๋ฒ์งธ ์ธ์คํด์ค๊ฐ ์๋ํ์ง ์์ต๋๋ค. ๋ค์๊ณผ ๊ฐ์ด Session()์ ๋ํ ๊ตฌ์ฑ์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
๊ตฌ์ฑ = tf.ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction = 0.4
tf.Session(config=config)์ ์ธ์
์ผ๋ก ์ฌ์ฉ:
...
๊ทธ๊ฒ์ผ๋ก cudnn์ ์น๋ ๋ฃจํ์์ 2๊ฐ์ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ ์ ์์ต๋๋ค. ์ด๊ฒ์ ๋ฆฌ๋
์ค์์๋ ๋ง์ฐฌ๊ฐ์ง์
๋๋ค.
๊ทธ๋ฌ๋ ์ถฉ๋์ Windows์์ ๋ค๋ฆ
๋๋ค. Linux์์๋ CUDA_ERROR_OUT_OF_MEMORY๋ฅผ ์ป๊ณ Windows์์๋ CUDNN_STATUS_NOT_INITIALIZED๋ฅผ ์ป์ต๋๋ค. ์ด๊ฒ์ ์ดํด๋ณด๊ธฐ๋ก ํ๋ค.
์ ๊ทธ๋์ ๋ฌธ์ ๋ ๋ด ์์คํ ์ด tensorflow๋ฅผ ์ด๊ธฐํํ๊ธฐ ์ ์๋ ๋๋ฌด ๋ง์ ๋น๋์ค ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ณ ์์๋ค๋ ๊ฒ์ ๋๋ค. ๋๋ผ์ด๋ฒ ํญ๋ชฉ์ด ์ฌ์ฉ๋ ์ฅ์น ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ฎ์ถ์ด tensorflow๊ฐ ์ ๋๋ก ์ด๊ธฐํ๋ ์ ์๋๋ก ํ ๊ฒ ๊ฐ์ต๋๋ค. ๊ฐ์ฌ ํด์!
์ฌ๋ฌ๋ถ, MSVS ์์ด Windows์์ ๋น๋ํ ์ ์์ต๋๊น? Windows 10 SDK๋ C++ ์ปดํ์ผ๋ฌ๋ฅผ ํฌํจํด์ผ ํฉ๋๋ค. ์์ ์ ์ถฉ๋ถํ์ง ์์๊น์?
@zandaqo Windows 10 SDK ๋ฐ CMake์ ํจ๊ป ๋ ๋ฆฝ ์คํํ MSVC ์ปดํ์ผ๋ฌ ๋ง ํ์ํ๋ฏ๋ก ์ ์ฒด Visual Studio๋ฅผ ์ค์นํ ํ์๊ฐ ์์ต๋๋ค. Windows 10 SDK์๋ dll, ์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ํค๋ ํ์ผ ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ ์์ค ์ฝ๋์ ๋ช ๊ฐ์ง ์ ์ฉํ ๋๊ตฌ๊ฐ ํฌํจ๋์ด ์์ง๋ง ์ปดํ์ผ๋ฌ๋ ํฌํจ๋์ด ์์ง ์์ต๋๋ค.
์ฌ๋ณด์ธ์!
์ ๋ Python๊ณผ Tensorflow ๋ชจ๋ ์ฒ์์ด์ง๋ง ๊ณผ๊ฑฐ์ MNIST ์์ ์ ์ํํ ์ ์ด ์์ต๋๋ค. ๋๋ tensorflow/contrib/cmake/README.md์ ๋ํ ์ง์นจ์ ๋ฐ๋๊ณ ์ ์๋ํ๊ณ GPU๋ ์ ์๋ํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ์์๋๋ก Windows์ Tensorflow๊ฐ ์ผ๋ถ ์์น์์ ์ค๋จ๋๋ ๊ฒ ๊ฐ์ผ๋ฉฐ ํ์์ ๋ํ ์ ์ดํด๊ฐ ์ฌ๋ฐ๋ฅธ์ง ํ์ธํ๊ณ ์ถ์ต๋๋ค.
https://www.tensorflow.org/versions/r0.11/tutorials/mnist/beginners/index.html ์ ๋ฐ๋ฅด๋ ค๊ณ ์๋ํ์ง๋ง ์ด ๊ฐ์ ธ์ค๊ธฐ ๊ฒฝ๋ก(tensorflow.examples.tutorials.mnist)๊ฐ ์๋ํ์ง ์๊ธฐ ๋๋ฌธ์ ์๋ํ์ง ์์ต๋๋ค. ์กด์ฌํ๋ค. ์ด๊ฒ์ ๊ถ๊ทน์ ์ผ๋ก tf.contrib
๊ฐ pip ํจํค์ง์ ํฌํจ๋์ง ์์๊ธฐ ๋๋ฌธ์
๋๋ค. ๋ง์ต๋๊น?
๊ทธ๋ฅ ํธ๊ธฐ์ฌ์์ ๋๋ ๊ฝค ๋์ฐํ ์ผ์ ํ์ต๋๋ค. tensorflow repo์ ๋ด์ฉ์ site-packages\tensorflow์ lib ์์น์ ๋ณต์ฌํ๋๋ฐ, ์ด๋ก ์ธํด ๋ง์ ๋ถ๋ถ์ด ์์๋ ๊ฒ์ผ๋ก ์์ํ์ต๋๋ค. ์ด๊ฒ์ด ๊นจ์ง๋ ๋ฐฉ๋ฒ์ ๋๋ค.
File "C:\Program Files\Anaconda3\lib\site-packages\tensorflow\contrib\framework\python\ops\variables.py", line 23, in <module>
from tensorflow.contrib.framework.python.ops import gen_variable_ops
ImportError: cannot import name 'gen_variable_ops'
์ด๋์์๋ gen_variable_ops์ ์ ์๋ฅผ ์ฐพ์ ์ ์์์ง๋ง ๋ฌธ์์๋ tf.load_op_library()
๊ฐ ํ์ฌ ๊ตฌํ๋์ด ์์ง ์๋ค๊ณ ๋์ ์์ต๋๋ค. ๋ฐ๋ผ์ gen_variable_ops
๋ ๋ค๋ฅธ ๊ณณ์์ ๊ตฌํ๋๋ฉฐ tf.load_op_library()
๋ฅผ ์ฌ์ฉํ์ฌ ๋ก๋ํด์ผ ํฉ๋๋ค. ๊ทธ๋์, tf.load_op_library์ ๋ถ์กฑ์ด ๋ฌธ์ ๋ฅผ ์ผ์ผํค๋ ๊ฒ์
๋๋ค. ๋ง์ต๋๊น?
cmake ๊ฒฝ๋ก๋ฅผ ๋ฐ๋ผ pip ํจํค์ง๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ๋น๋ํ๊ณ ์ฑ๊ณต์ ์ธ ์ค์น๋ฅผ ๋ณด๊ณ ํ pip install tensorflow-0.11.0rc1_cmake_experimental-py3-none-any.whl
๋ก ์ค์นํ์ต๋๋ค. ๊ทธ๋ฌ๋ tensorflow๋ฅผ ๊ฐ์ ธ์ค๋ ค๊ณ ํ๋ฉด ๋ค์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
>>> import tensorflow as tf
Traceback (most recent call last):
File "C:\Users\Tester\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 18, in swig_import_helper
return importlib.import_module(mname)
File "C:\Users\Tester\AppData\Local\Programs\Python\Python35\lib\importlib\__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 986, in _gcd_import
File "<frozen importlib._bootstrap>", line 969, in _find_and_load
File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 666, in _load_unlocked
File "<frozen importlib._bootstrap>", line 577, in module_from_spec
File "<frozen importlib._bootstrap_external>", line 906, in create_module
File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed
ImportError: DLL load failed: The specified module could not be found.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\Tester\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\__init__.py", line 54, in <module>
from tensorflow.python import pywrap_tensorflow
File "C:\Users\Tester\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 21, in <module>
_pywrap_tensorflow = swig_import_helper()
File "C:\Users\Tester\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 20, in swig_import_helper
return importlib.import_module('_pywrap_tensorflow')
File "C:\Users\Tester\AppData\Local\Programs\Python\Python35\lib\importlib\__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
ImportError: No module named '_pywrap_tensorflow'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\Tester\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\__init__.py", line 23, in <module>
from tensorflow.python import *
File "C:\Users\Tester\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\__init__.py", line 60, in <module>
raise ImportError(msg)
ImportError: Traceback (most recent call last):
File "C:\Users\Tester\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 18, in swig_import_helper
return importlib.import_module(mname)
File "C:\Users\Tester\AppData\Local\Programs\Python\Python35\lib\importlib\__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 986, in _gcd_import
File "<frozen importlib._bootstrap>", line 969, in _find_and_load
File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 666, in _load_unlocked
File "<frozen importlib._bootstrap>", line 577, in module_from_spec
File "<frozen importlib._bootstrap_external>", line 906, in create_module
File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed
ImportError: DLL load failed: The specified module could not be found.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\Tester\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\__init__.py", line 54, in <module>
from tensorflow.python import pywrap_tensorflow
File "C:\Users\Tester\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 21, in <module>
_pywrap_tensorflow = swig_import_helper()
File "C:\Users\Tester\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 20, in swig_import_helper
return importlib.import_module('_pywrap_tensorflow')
File "C:\Users\Tester\AppData\Local\Programs\Python\Python35\lib\importlib\__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
ImportError: No module named '_pywrap_tensorflow'
Error importing tensorflow. Unless you are using bazel,
you should not try to import tensorflow from its source directory;
please exit the tensorflow source tree, and relaunch your python interpreter
from there.
์ฌ๊ธฐ์ ์ข ์์ฑ์ ๋์ณค๊ฑฐ๋ ๋น๋/์ค์น์ ๋ฌธ์ ๊ฐ ์์ต๋๊น?
@zandaqo , Windows์์ tensorflow๋ฅผ ์ฒ์ ์คํํ ๋ ์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค. ์์ ๋ฅผ ์ปดํ์ผํ๊ณ ์ปดํ์ผ๋ ์์ ๊ฐ ์๋ ํด๋๋ฅผ ๊ฒฝ๋ก์ ์ถ๊ฐํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. ์ํ ์ฝ๋๋ฅผ ์ปดํ์ผํ๋ฉด Tensorflow์ ํ์ํ ์ผ๋ถ DLL๋ ์ปดํ์ผ๋ฉ๋๋ค.
@ErivaldoJunior ์์ ๋ฅผ ์ปดํ์ผํ๋ค๋ ๊ฒ์ ๋ค์์ ์๋ฏธํฉ๋๋ค. MSBuild /p:Configuration=Release tf_tutorials_example_trainer.vcxproj
? pip ํจํค์ง๋ฅผ ์ปดํ์ผํ๊ธฐ ์ ์ ๊ทธ๋ ๊ฒ ํ์ต๋๋ค. .\Release
๋ก ์ปดํ์ผ๋ฉ๋๋ค. ๊ฒฝ๋ก์ ์ถ๊ฐํ ํด๋์
๋๊น? ๋ฐฉ๊ธ ์ถ๊ฐํ๋ ค๊ณ ์๋ํ์ง๋ง ์ง๊ธ๊น์ง๋ ์ด์ด ์์ต๋๋ค.
.\Release
ํด๋์ ์ค๋ฅ์์ ์ธ๊ธ๋ pywrap_tensor
๋ผ๋ ํ์ผ์ ๋ณผ ์ ์์ต๋๋ค. ์๋์ผ๋ก ํ์ผ์ ์ด๋๊ฐ์ ๋ณต์ฌํ๋ฉด Python์ด ํ์ผ์ ๋ณด๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค. ์ด๋์ธ์ง ํ์คํ์ง ์์ต๋๋ค.
@zandaqo ๋ง์ต๋๋ค. ํด๋น ๋ฆด๋ฆฌ์ค ํด๋๋ฅผ Windows ๊ฒฝ๋ก์ ์ถ๊ฐํ๊ธฐ๋ง ํ๋ฉด ์๋ํฉ๋๋ค. ๊ทธ๋ฌ๋ CMD ์ฐฝ์์ python my_tensorflow_script.py๋ฅผ ์คํํ์ฌ ํ ์คํธํ์ต๋๋ค. ์ด๋ค ์ข ๋ฅ์ IDE ๋๋ iPython์ ์ฌ์ฉํ๋ฉด ์๋ํ๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
@ErivaldoJunior ๊ฐ์ฌํฉ๋๋ค. DLL ๋๋ฝ์ ๋ํ ๋ง์์ ์ณ์์ง๋ง ์ ๊ฒฝ์ฐ์๋ ํจํค์ง์ .\Release
ํด๋ ๋ชจ๋์์ ๋๋ฝ๋ zlib.dll
๋ก ๋ฐํ์ก์ต๋๋ค. ์ฌ๊ธฐ ์ ์ ์๋ ๋๋ก ํด๋์ zlib.dll
๋ฅผ ์๋์ผ๋ก ๋ณต์ฌํ์ผ๋ฉฐ ์ด์ ๊ฐ์ ธ์ค๊ธฐ๊ฐ ์๋ํฉ๋๋ค.
ํ
์ํ๋ก ๋น๋์ ์ฑ๊ณตํ์ต๋๋ค! ๊ทธ๋ฌ๋ cmake 3.3.1
๋ ๋น๋ ์ค๋ฅ๋ฅผ ์ผ์ผํค๊ณ 3.6.3
๋ ์ ๋๋ก ์๋ํฉ๋๋ค.
์์ ๋๋ง ํ! ์ ์ ํ ์ต์ ๋ฒ์ ์ PR์ ํ์ํฉ๋๋ค.
cmakelist ํ์ผ์ ๋ฌธ.
2016๋
11์ 5์ผ(ํ ) ์ฟ ๋ณด ํ์นดํ๋ก [email protected]
์ผ๋ค:
ํ ์ํ๋ก ๋น๋์ ์ฑ๊ณตํ์ต๋๋ค! ๊ทธ๋ฌ๋ cmake 3.3.1์ ๋น๋ ์ค๋ฅ๋ฅผ ๋ฐ์์ํต๋๋ค.
3.6.3์ ์ ์๋ํฉ๋๋ค.โ
๋น์ ์ด ๋๊ธ์ ๋ฌ์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/tensorflow/tensorflow/issues/17#issuecomment -258649999,
๋๋ ์ค๋ ๋ ์์๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AAjO_Ys4MI03pcc3tCR_BzsqIXFrQTTcks5q7RVRgaJpZM4GexU4
.
@martinwicke ์ฌ๊ธฐ ์์ ์๋ ค์ง ์ต์ ์์ Cmake ๋ฒ์ ์ 3.5์ธ ๊ฒ ๊ฐ์ต๋๋ค. ์ต์ ์๊ตฌ ์ฌํญ ์ 3.5๋ก ๋ณ๊ฒฝํ๊ณ ์ต์ 3.5์ ๋ํ ์ถ๊ฐ ์ ๋ณด๋ฅผ 3.6๊น์ง ์ ๋ฐ์ดํธํด์ผ ํฉ๋๊น?
์ด์ TensorFlow๊ฐ ์ด์ GPU๊ฐ ์๋ Windows์์ ์๋ํ ์ ์๋ค๋ ์ฌ์ค์ ์๊ฒ ๋์ด ๊ธฐ์ฉ๋๋ค. ์์ค์์ ์ค์นํ ํ์๊ฐ ์๋ ๋ฒ์ ์ ๋ํ ๊ณํ์ด ์์ต๋๊น? ๊ทธ๋ ๋ค๋ฉด ETA๊ฐ ์์ต๋๊น? ์ค์ ํ๋ก์ธ์ค๊ฐ Linux์์์ฒ๋ผ ๊ฐ๋จํ๊ณ ๋ฌธ์ ์์ด Linux์์ TensorFlow๋ฅผ ์ฌ์ฉํ๊ณ ์๊ณ Windows์์๋ ๊ทธ๋ ๊ฒ ํ๊ณ ์ถ์ง๋ง Readme์ ๋ฌธ์ํ๋ ํ์ ์กฐ๊ฑด ๋ฐ ์ค์ ํ๋ก์ธ์ค๋ ํ์ฌ ์ด๋ค์๊ฒ ์ฝ๊ฐ ๋ฒ๊ฑฐ๋ก์ ๋ณด์ ๋๋ค. ์๊ฐ์ด ๋ง์ง ์์ ์ฐ๋ฆฌ๋ค...
์๋ค ์! Bazel 0.4.0 ๋ฆด๋ฆฌ์ค์ ํจ๊ป TensorFlow PIP ํจํค์ง๋ ์ด์ Windows์์ Bazel์ ์ฌ์ฉํ์ฌ ๋น๋ํ ์ ์์ต๋๋ค.
@petemounce ์ ๊ธฐ์ฌ ๋๋ถ์ choco install bazel --version 0.4.0
๋ฅผ ์ฌ์ฉํ์ฌ Bazel์ ์ฝ๊ฒ ์ค์นํ ์ ์์ต๋๋ค.
@gunan ์ ์ด๋ฏธ CI ์์
์ ์ค์ ํ์ต๋๋ค: http://ci.tensorflow.org/job/tensorflow-pr-win-bazel/
๊ธฐ๋ณธ์ ์ผ๋ก ์ฐ๋ฆฌ๋ ์ด ์คํฌ๋ฆฝํธ ๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ๋ฐ๋ผ์ ํ๊ฒฝ ๋ณ์๋ฅผ ์ ์ ํ๊ฒ ์์ ํ๋ฉด(Visual Studio, Python 3 ๋๋ msys๊ฐ ํ์ค ์์น์ ์ค์น๋์ง ์์ ๊ฒฝ์ฐ) Bazel์ ์ฌ์ฉํ์ฌ PIP ํจํค์ง๋ ๋น๋ํ ์ ์์ต๋๋ค!
์ ๋ฐ์ดํธ: ์ง์ ์คํํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ์๋ ๊ฒฝ์ฐ ์คํฌ๋ฆฝํธ์์ ๋ช ๋ น์ ์๋์ผ๋ก ์คํํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
@meteorcloudy ์
๋ฐ์ดํธ ๊ฐ์ฌํฉ๋๋ค!
bazel๋ก ๋น๋๊ฐ ์ ์๊ฒ ์ ํฉํ์ง ์์์ต๋๋ค. ์ค๋ฅ: CreateFile(C:\tmp\Bazel\44EoGNou\install)
๋๋ฒ๊น
ํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น? ๋๋ ํ์งํ ๋ ์ฐฝ (๋ฌ์์์ด)์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์๋ง๋ ๊ทธ๊ฒ์ด ์์ธ ์ผ ๊ฒ์
๋๋ค.
์ ์ฒด ๋ก๊ทธ. PowerShell์์ ๊ด๋ฆฌ์๋ก ์คํ:
C:\libs\tensorflow>c:\tools\msys64\usr\bin\bash -l C:\libs\tensorflow/tensorflow/tools/ci_build/windows/cpu/pip/build_tf_windows.sh
+ set -e
++ dirname 'C:\libs\tensorflow/tensorflow/tools/ci_build/windows/cpu/pip/build_tf_windows.sh'
+ script_dir='C:\libs\tensorflow/tensorflow/tools/ci_build/windows/cpu/pip'
+ cd 'C:\libs\tensorflow/'
+ export TMPDIR=C:/tmp
+ TMPDIR=C:/tmp
+ export BAZEL_SH=C:/tools/msys64/usr/bin/bash
+ BAZEL_SH=C:/tools/msys64/usr/bin/bash
+ export 'PYTHON_BIN_PATH=C:\tools\Anaconda3/python'
+ PYTHON_BIN_PATH='C:\tools\Anaconda3/python'
+ export 'BAZEL_PYTHON=C:\tools\Anaconda3/python'
+ BAZEL_PYTHON='C:\tools\Anaconda3/python'
+ export 'BAZEL_VS=C:/Program Files (x86)/Microsoft Visual Studio 14.0'
+ BAZEL_VS='C:/Program Files (x86)/Microsoft Visual Studio 14.0'
+ export 'PATH=/c/tools/bazel:/c/Program Files/Anaconda3:/usr/local/bin:/usr/bin:/bin:/opt/bin:/c/Windows/System32:/c/Windows:/c/Windows/System32/Wbem:/c/Windows/System32/WindowsPowerShell/v1.0/'
+ PATH='/c/tools/bazel:/c/Program Files/Anaconda3:/usr/local/bin:/usr/bin:/bin:/opt/bin:/c/Windows/System32:/c/Windows:/c/Windows/System32/Wbem:/c/Windows/System32/WindowsPowerShell/v1.0/'
+ bazel clean
Extracting Bazel installation...
ERROR: CreateFile(C:\tmp\Bazel\44EoGNou\install): โโ โโโโโโโ โโโโโ โโโโโโโโโ โโโโ.
(2)
.....................................................................................................................................................................................................................................................................................................................................
INFO: Starting clean (this may take a while). Consider using --expunge_async if the clean takes more than several minutes.
++ bazel info output_base
+ output_base=C:/tmp/Bazel/44EoGNou
+ bazel shutdown
+ rm -rf C:/tmp/Bazel/44EoGNou
rm: ะฝะตะฒะพะทะผะพะถะฝะพ ัะดะฐะปะธัั 'C:/tmp/Bazel/44EoGNou/server/jvm.out': Device or resource busy
@KhabarlakKonstantin ๊ทธ๊ฒ ( ERROR: CreateFile(C:\tmp\Bazel\44EoGNou\install)
) bazelbuild/bazel#1744๋ผ๊ณ ์๊ฐํฉ๋๋ค. bazel์ด ์ค์น๋ ํ ์ฒ์์๋ง ๋ฐ์ํฉ๋๋ค. ํ์ ์ฆ์ ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
@KhabarlakKonstantin @petemounce ๊ฐ ์ง์ ํ๋ฏ์ด ํด๋น ์ค๋ฅ๋ ๋ฌด์ํด๋ ๋ฉ๋๋ค. Device or resource busy
์ค๋ฅ๊ฐ ์ฐจ๋จ๋๋ฉด rm -rf C:/tmp/Bazel/44EoGNou
๋ฅผ ๊ฑด๋๋ธ ์๋ ์์ต๋๋ค. bazel shutdown
ํธ์ถ ํ jvm์ด ์์ ํ ์ข
๋ฃ๋๊ธฐ ์ ์ jvm.out
์ ๊ฑฐ๋ฅผ ์๋ํ๊ธฐ ๋๋ฌธ์ธ ๊ฒ ๊ฐ์ต๋๋ค.
@petemounce @meteorcloudy ๋์ ๊ฐ์ฌํฉ๋๋ค
๋ฌธ์ ๋ ๊ฑด์ค์ ์์ํ์ง ์๋๋ค๋ ๊ฒ์
๋๋ค. bazel shutdown
์ ์ฃผ์ ์ฒ๋ฆฌํ์ผ๋ฉฐ ์ด์ ์กฐ๊ธ ๋ ์งํ๋์ง๋ง ์ฌ์ ํ ์ถฉ๋ํฉ๋๋ค.
INFO: Starting clean (this may take a while). Consider using --expunge_async if the clean takes more than several minutes.
++ bazel info output_base
+ output_base=C:/tmp/Bazel/44EoGNou
+ echo ''
+ ./configure
/c/libs/tensorflow /c/libs/tensorflow
Found possible Python library paths:
C:\Program Files\Anaconda3\lib\site-packages
C:\Program Files\Anaconda3
Please input the desired Python library path to use. Default is [C:\Program Files\Anaconda3\lib\site-packages]
Using python library path: C:\Program Files\Anaconda3\lib\site-packages
Junction created for util\python\python_include <<===>> C:\Program Files\Anaconda3\include
Junction created for util\python\python_lib <<===>> C:\Program Files\Anaconda3\lib\site-packages
Junction created for third_party\py\numpy\numpy_include <<===>> C:\Program Files\Anaconda3\lib\site-packages\numpy\core\include
์ฌ๊ธฐ์ ๋ ์ด์ ์ถ๋ ฅ์ด ์์ต๋๋ค.
@KhabarlakKonstantin OpenCL ๊ตฌ์ฑ์ด ./configure
์ ์ถ๊ฐ๋ ๊ฒ ๊ฐ์ง๋ง Windows์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๊บผ์ ธ ์์ง ์์ผ๋ฏ๋ก ํด๋น ์คํฌ๋ฆฝํธ๋ฅผ ์๋์ผ๋ก ์คํํ๊ฑฐ๋ $ echo "" | ./configure
export TF_NEED_OPENCL=0
๋ฅผ ์ถ๊ฐํ์ญ์์ค.
pcloudy@PCLOUDY1-W MSYS ~/workspace/tensorflow
$ ./configure
~/workspace/tensorflow ~/workspace/tensorflow
Please specify the location of python. [Default is /c/Program Files/Anaconda3/python]:
Found possible Python library paths:
C:\Program Files\Anaconda3\lib\site-packages
C:\Program Files\Anaconda3
Please input the desired Python library path to use. Default is [C:\Program Files\Anaconda3\lib\site-packages]
Using python library path: C:\Program Files\Anaconda3\lib\site-packages
Junction created for util\python\python_include <<===>> C:\Program Files\Anaconda3\include
Junction created for util\python\python_lib <<===>> C:\Program Files\Anaconda3\lib\site-packages
Junction created for third_party\py\numpy\numpy_include <<===>> C:\Program Files\Anaconda3\lib\site-packages\numpy\core\include
Do you wish to build TensorFlow with OpenCL support? [y/N] n
No OpenCL support will be enabled for TensorFlow
Configuration finished
Pragma์์ ์ด๋ฌํ ์ค๋ฅ ๊ฐ ๋ฐ์ํ๋ ๋ค๋ฅธ ์ฌ๋์ด ์์ต๋๊น(pywrap ๋ฌด์)?
readme์ ๋ฐ๋ผ GPU ๋ฐ ๋ชจ๋ ์ฌ์์ผ๋ก ๋น๋ํฉ๋๋ค.
@Carmezim , ๊ทธ๊ฒ์ ๋๋ฅผ ์ํด ์ ์๋ํ์ต๋๋ค. ์ด๋ฌํ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์์์ต๋๋ค.
๋๋ ์ด๊ฒ์ ๊ณ ์น ํ๋ณด๊ฐ ์์ต๋๋ค: https://github.com/tensorflow/tensorflow/pull/5421
@guschmue ์ข์์ ! ๋น ๋ฅธ ์๋ต ๊ฐ์ฌํฉ๋๋ค
_Pragma๋ฅผ ์์ ํ ํ ๋์ผํ ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ด ํ์๋ฉ๋๋ค.
C:/tensorflow/tensorflow/core/kernels/parameterized_truncated_normal_op_gpu.cu.cc(168): error : more than
one operator "/" matches these operands: [C:\tensorflow\tensorflow\contrib\cmake\build\tf_core_gpu_kernels.v
cxproj]
bazel์ ์ฌ์ฉํ์ฌ GPU ์ง์์ผ๋ก ๋น๋ํ ์ ์์ต๋๊น?
@ edwin100394 ์์ง bazel์ ์ฌ์ฉํ๋ Windows์์ GPU ์ง์์ด ์์ต๋๋ค.
์์ง ์์
์ค์
๋๋ค.
2016๋
11์ 7์ผ ์์์ผ ์คํ 9์ 33๋ถ, edwin100394 [email protected]
์ผ๋ค:
bazel์ ์ฌ์ฉํ์ฌ GPU ์ง์์ผ๋ก ๋น๋ํ ์ ์์ต๋๊น?
โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/tensorflow/tensorflow/issues/17#issuecomment -259049695,
๋๋ ์ค๋ ๋ ์์๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AHlCOXNRNoMFmnSPfnkTMLsRHcIcl9TXks5q8AmigaJpZM4GexU4
.
@meteorcloudy export TF_NEED_OPENCL=0
์(๋ฅผ) ์ถ๊ฐํ๋ ๋ฐ ๋์์ด ๋์์ต๋๋ค.
์ด์ ๋ค๋ฅธ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
ERROR: C:/libs/tensorflow/tensorflow/core/BUILD:1115:1: Executing genrule //tensorflow/core:version_info_gen failed: bash failed: error executing command
cd C:/tmp/Bazel/44EoGNou/execroot/tensorflow
SET PATH=C:\tools;C:\tools\Anaconda;C:\tools\msys64\usr\local\bin;C:\tools\msys64\usr\bin;C:\tools\msys64\usr\bin;C:\tools\msys64\opt\bin;C:\Windows\System32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\tools\msys64\usr\bin\site_perl;C:\tools\msys64\usr\bin\vendor_perl;C:\tools\msys64\usr\bin\core_perl
C:/tools/msys64/usr/bin/bash -c source external/bazel_tools/tools/genrule/genrule-setup.sh; tensorflow/tools/git/gen_git_source.py --generate tensorflow/tools/git/gen/spec.json tensorflow/tools/git/gen/head tensorflow/tools/git/gen/branch_ref "bazel-out/vc_14_0_x64-py3-opt/genfiles/tensorflow/core/util/version_info.cc": com.google.devtools.build.lib.shell.BadExitStatusException: Process exited with status 1
Traceback (most recent call last):
File "tensorflow/tools/git/gen_git_source.py", line 260, in <module>
generate(args.generate)
File "tensorflow/tools/git/gen_git_source.py", line 212, in generate
git_version = get_git_version(data["path"])
File "tensorflow/tools/git/gen_git_source.py", line 152, in get_git_version
str("--work-tree=" + git_base_path), "describe", "--long", "--dirty", "--tags"
File "C:\tools\Anaconda\lib\subprocess.py", line 626, in check_output
**kwargs).stdout
File "C:\tools\Anaconda\lib\subprocess.py", line 693, in run
with Popen(*popenargs, **kwargs) as process:
File "C:\tools\Anaconda\lib\subprocess.py", line 947, in __init__
restore_signals, start_new_session)
File "C:\tools\Anaconda\lib\subprocess.py", line 1224, in _execute_child
startupinfo)
FileNotFoundError: [WinError 2] The system cannot find the file specified
Target //tensorflow/tools/pip_package:build_pip_package failed to build
INFO: Elapsed time: 10.997s, Critical Path: 3.44s
FAILED: Build did NOT complete successfully
๋๋ ์ฒ์๋ถํฐ ์์ํ๊ณ ์์ค์์ bazel์ ๋น๋ํ์ต๋๋ค. ์ด์ ๊ฑฐ์ ๋๋ ๋๊น์ง ๊ฑด๋ฌผ์ ์ง๊ณ ์์ต๋๋ค.
๊ฒฐ๊ตญ ๋งํฌ ํ์์ ์คํจํฉ๋๋ค.
ERROR: C:/libs/tensorflow/tensorflow/python/BUILD:1907:1: Linking of rule '//tensorflow/python:_pywrap_tensorflow.so' failed: msvc_link.bat failed: error executing command
cd C:/tmp/Bazel/44EoGNou/execroot/tensorflow
SET PATH=external/local_config_cc/wrapper/bin
external/local_config_cc/wrapper/bin/msvc_link.bat /DLL /WHOLEARCHIVE -pthread -m64 -Xcompilation-mode=opt -Wl,@bazel-out/vc_14_0_x64-py3-opt/bin/tensorflow/python/_pywrap_tensorflow.so-2.params: com.google.devtools.build.lib.shell.BadExitStatusException: Process exited with status 1169
Warning: Unmatched arguments: -ldl -lm -ldl -lm
Warning: Unmatched arguments: -pthread
libversion_lib.a(version_info.o) : error LNK2005: "char const * __cdecl tf_compiler_version(void)" (?tf_compiler_version@@YAPEBDXZ) already defined in libframework_internal.lo(version_info.o)
libversion_lib.a(version_info.o) : error LNK2005: "char const * __cdecl tf_git_version(void)" (?tf_git_version@@YAPEBDXZ) already defined in libframework_internal.lo(version_info.o)
Creating library bazel-out/vc_14_0_x64-py3-opt/bin/tensorflow/python/_pywrap_tensorflow.lib and object bazel-out/vc_14_0_x64-py3-opt/bin/tensorflow/python/_pywrap_tensorflow.exp
bazel-out/vc_14_0_x64-py3-opt/bin/tensorflow/python/_pywrap_tensorflow.so : fatal error LNK1169: one or more multiply defined symbols found
ERROR: C:/libs/tensorflow/tensorflow/python/BUILD:639:1: output 'tensorflow/python/gen_control_flow_ops_py_wrappers_cc.exe' was not created
ERROR: C:/libs/tensorflow/tensorflow/python/BUILD:698:1: output 'tensorflow/python/gen_resource_variable_ops_py_wrappers_cc.exe' was not created
Target //tensorflow/tools/pip_package:build_pip_package failed to build
์๋ ํ์ธ์ ์ฌ๋ฌ๋ถ, ์ด์ ๊ธฐ๋ณธ์ ์ธ Windows ์ง์์ด ์ด๋ฃจ์ด์ก์ผ๋ฏ๋ก ์๋ก์ด ์๊ฒฌ์ ์ํด ์ด ๋ฌธ์ ๋ฅผ ์ ๊ทธ๊ณ ์์ ์ ์ธ ๋ฆด๋ฆฌ์ค๊ฐ ๋์ฌ ๋๊น์ง ์ด์ด ๋๊ฒ ์ต๋๋ค. ์์ผ๋ก:
๋ค์ ํ ๋ฒ TensorFlow-on-Windows์ ๊ด์ฌ์ ๊ฐ์ ธ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ด์ ๋ค์ ์์ ์ ์์ํ๊ฒ ์ต๋๋ค!
์ค๋ ์ฐ๋ฆฌ๋ Python 3.5์ฉ ํจํค์ง์ ํจ๊ป TensorFlow 0.12์ ๊ธฐ๋ณธ Windows ์ง์์ ๋ฐํํ์ต๋๋ค . 64๋นํธ ๋ฒ์ ์ Python 3.5(Python.org ๋๋ Anaconda์์ ์ ๊ณต)๋ฅผ ์ค์นํ ๊ฒฝ์ฐ ๋จ์ผ ๋ช ๋ น์ผ๋ก TensorFlow๋ฅผ ์ค์นํ ์ ์์ต๋๋ค.
C:\> pip install tensorflow
GPU ์ง์์ ์ํด CUDA 8.0์ด ์ค์น๋ ๊ฒฝ์ฐ ๋ค์ ํจํค์ง๋ฅผ ๋์ ์ค์นํ ์ ์์ต๋๋ค.
C:\> pip install tensorflow-gpu
์ด์ Windows๊ฐ ์ง์๋๋ ๊ตฌ์ฑ์ด๋ฏ๋ก ์ด ๋ฌธ์ ๋ฅผ ์ข ๋ฃํ๊ฒ ์ต๋๋ค. ์ด๋ฌํ ํจํค์ง์ ๋ฌธ์ ๊ฐ ์๋ ๊ฒฝ์ฐ ์ ๋ฌธ์ ๋ฅผ ์ฌ์ญ์์ค. ๋ฆด๋ฆฌ์ค ์ ๋ณด ์ ์ค๋ช ๋ Windows ํจํค์ง์ ๋ค๋ฅธ ํ๋ซํผ ๊ฐ์๋ ์ฌ์ ํ ์ฝ๊ฐ์ ๋ถ์ผ์น๊ฐ ์์ต๋๋ค. ์ด๋ฌํ ๊ฒฉ์ฐจ๋ฅผ ์ค์ด๊ธฐ ์ํด ์์ผ๋ก ๋ช ์ฃผ ๋์ ๋ ธ๋ ฅํ ๊ฒ์ ๋๋ค.
Windows์ฉ TensorFlow์ ๊ด์ฌ์ ๊ฐ์ ธ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค!
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
Windows์ฉ TensorFlow์ ๊ด์ฌ์ ๊ฐ์ ธ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค! ์ฐ๋ฆฌ๋ ๋ ๊ฐ์ง ์ฃผ์ ์ธก๋ฉด์์ ์ง์ ์ ์ด๋ฃจ๊ณ ์์ต๋๋ค.
BUILD
ํ์ผ์ Windows์์ ์๋ํ๋๋ก ์กฐ์ . ์ต๊ทผ @meteorcloudy ์ ํด๋น ๋ฐฉํฅ(์: #4449)์ pull ์์ฒญ์ ๋ณด์์ ์ ์์ผ๋ฉฐ ์ต์ข ๊ณํ์ Windows์์ Bazel์ ์ฌ์ฉํ์ฌ TensorFlow ๋น๋๋ฅผ ์๋ฒฝํ๊ฒ ์ง์ํ๋ ๊ฒ์ ๋๋ค.BUILD
ํ์ผ์ด ํ๋ซํผ ๊ฐ ์๋ํ ๋ Bazel๋ก ์ ํํ ๊ณํ์ ๋๋ค.๋ฐ์ด๋๋ฆฌ PIP ํจํค์ง์ Windows์์ TensorFlow๋ฅผ ๋น๋ํ๊ธฐ ์ํ ์ง์นจ๊ณผ ํจ๊ป ๊ณง ๋ฐํํ ์์ ์ ๋๋ค. ๊ทธ๋์ ๊ณต์ ํ ์์์ด ์์ผ๋ฉด ์ด ๋ฌธ์ ๋ฅผ ์ ๋ฐ์ดํธํ๊ฒ ์ต๋๋ค.
@kestrelm ์ ํน์ ์ง๋ฌธ ์ ๋ํ ๋ต๋ณ:
tensorflow/python/_pywrap_tensorflow.so
์ ํด๋น)์ ์์ฑํ๊ณ ์ ์ ์ผ๋ก ๋งํฌ๋ C++ ๋ฐ์ด๋๋ฆฌ(tensorflow/cc/tutorials/example_trainer.cc
์ ํด๋น)๋ฅผ ๋น๋ํ๊ธฐ ์ํ ์ง์นจ์ ์ ๊ณตํ ์ ์์ต๋๋ค. ).