Tensorflow: Windows ์ง€์› ๋ฐ ์„ค๋ช…์„œ

์— ๋งŒ๋“  2015๋…„ 11์›” 09์ผ  ยท  180์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: tensorflow/tensorflow

๋‚˜๋Š” tensorflow๋ฅผ ๋ณด๊ฒŒ ๋˜์–ด ๊ธฐ๋ปค์ง€๋งŒ Windows๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋‹ค๋ฅธ ๋งŽ์€ ์‚ฌ์šฉ์ž์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ด ์ง€์›์ด ์ด๋ฃจ์–ด์ง€๋ฉด ๊ธฐ์  ๊ฒƒ์ž…๋‹ˆ๋‹ค. Windows ํฌํŠธ ๊ธฐ์—ฌ๋ฅผ ์ˆ˜๋ฝํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

ํ•œํŽธ Microsoft๋Š” ์ตœ๊ทผ Linux ๋ฐ Windows์šฉ GPU๊ฐ€ ์žˆ๋Š” ์—ฌ๋Ÿฌ ์ปดํ“จํ„ฐ์—์„œ ํ™•์žฅ๋˜๋Š” Deep Learning ํˆดํ‚ท์„ ์ถœ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค. https://github.com/Microsoft/CNTK

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

Windows์šฉ TensorFlow์— ๊ด€์‹ฌ์„ ๊ฐ€์ ธ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ์šฐ๋ฆฌ๋Š” ๋‘ ๊ฐ€์ง€ ์ฃผ์š” ์ธก๋ฉด์—์„œ ์ง„์ „์„ ์ด๋ฃจ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

  1. TensorFlow์˜ Bazel BUILD ํŒŒ์ผ์„ Windows์—์„œ ์ž‘๋™ํ•˜๋„๋ก ์กฐ์ •. ์ตœ๊ทผ @meteorcloudy ์˜ ํ•ด๋‹น ๋ฐฉํ–ฅ(์˜ˆ: #4449)์˜ pull ์š”์ฒญ์„ ๋ณด์•˜์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ตœ์ข… ๊ณ„ํš์€ Windows์—์„œ Bazel์„ ์‚ฌ์šฉํ•˜์—ฌ TensorFlow ๋นŒ๋“œ๋ฅผ ์™„๋ฒฝํ•˜๊ฒŒ ์ง€์›ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  2. Visual C++ 2015 ์ปดํŒŒ์ผ๋Ÿฌ๋กœ ๋นŒ๋“œํ•˜๋„๋ก TensorFlow ๋Ÿฐํƒ€์ž„์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด ๋…ธ๋ ฅ์„ ํ•ด์™”๊ณ , HEAD์™€ ๋‚ด ์ž‘์—… ๋ธŒ๋žœ์น˜ ์‚ฌ์ด์˜ ์ฐจ์ด๋Š” ๋‚˜๋‚ ์ด ์ž‘์•„์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ CMake๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Visual Studio/MSBuild๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ TensorFlow๋ฅผ ๋นŒ๋“œํ•˜๊ณ  ์žˆ์ง€๋งŒ BUILD ํŒŒ์ผ์ด ํ”Œ๋žซํผ ๊ฐ„ ์ž‘๋™ํ•  ๋•Œ Bazel๋กœ ์ „ํ™˜ํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค.

๋ฐ”์ด๋„ˆ๋ฆฌ PIP ํŒจํ‚ค์ง€์™€ Windows์—์„œ TensorFlow๋ฅผ ๋นŒ๋“œํ•˜๊ธฐ ์œ„ํ•œ ์ง€์นจ๊ณผ ํ•จ๊ป˜ ๊ณง ๋ฐœํ‘œํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. ๊ทธ๋™์•ˆ ๊ณต์œ ํ•  ์†Œ์‹์ด ์žˆ์œผ๋ฉด ์ด ๋ฌธ์ œ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.


@kestrelm ์˜ ํŠน์ • ์งˆ๋ฌธ ์— ๋Œ€ํ•œ ๋‹ต๋ณ€:

  1. ์ €๋Š” ํ˜„์žฌ CMake๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ํ”„๋กœ์ ํŠธ๊ฐ€ ์žˆ๋Š” VS ์†”๋ฃจ์…˜์„ ์ƒ์„ฑํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์ด๋ฅผ ์œ„์˜ ํ•ญ๋ชฉ (2)์˜ ์ผ๋ถ€๋กœ ๋ณ‘ํ•ฉํ•ฉ๋‹ˆ๋‹ค.
  2. ์ตœ์†Œํ•œ ๋Ÿฐํƒ€์ž„๊ณผ ๋ชจ๋“  ์ปค๋„์„ ํฌํ•จํ•˜๋Š” Python ํ™•์žฅ DLL( tensorflow/python/_pywrap_tensorflow.so ์— ํ•ด๋‹น)์„ ์ƒ์„ฑํ•˜๊ณ  ์ •์ ์œผ๋กœ ๋งํฌ๋œ C++ ๋ฐ”์ด๋„ˆ๋ฆฌ( tensorflow/cc/tutorials/example_trainer.cc ์— ํ•ด๋‹น)๋ฅผ ๋นŒ๋“œํ•˜๊ธฐ ์œ„ํ•œ ์ง€์นจ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ).
  3. ์ดˆ๊ธฐ ๋ฆด๋ฆฌ์Šค์˜ ์ผ๋ถ€๋Š” ์•„๋‹์ง€๋ผ๋„ ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ(C API ๋’ค์˜ DLL์— ์žˆ๋Š” ์ถ”๋ก  ๊ด€๋ จ ์ปค๋„์˜ Android ํ•˜์œ„ ์ง‘ํ•ฉ๊ณผ ๊ฐ™์€ ๊ฒƒ)์„ ์‚ฌ์šฉํ•˜์—ฌ ๋Ÿฐํƒ€์ž„ ๋ฒ„์ „์„ ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋นŒ๋“œ ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜์—ฌ ์ด๋Ÿฌํ•œ ์†์„ฑ์„ ๊ฐ€์ง„ ๋Œ€์ƒ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ๊ฐ€๋Šฅํ•˜๋ฉฐ ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ ค๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ์„ ๊ธฐ๊บผ์ด ๋•๊ฒ ์Šต๋‹ˆ๋‹ค.

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

์ข‹์€ ์ œ์•ˆ์ธ ๊ฒƒ ๊ฐ™์•„์š”!

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋‹ค์šด๋กœ๋“œ ๋ฐ ์„ค์น˜ ํŽ˜์ด์ง€์—์„œ 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_ ๋Œ“๊ธ€์„ ๋งŒ๋“ค์ง€ ๋งˆ์„ธ์š”! ๋Œ€์‹  github ๋ฐ˜์‘์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค!

+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์— ๊ด€์‹ฌ์„ ๊ฐ€์ ธ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ์šฐ๋ฆฌ๋Š” ๋‘ ๊ฐ€์ง€ ์ฃผ์š” ์ธก๋ฉด์—์„œ ์ง„์ „์„ ์ด๋ฃจ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

  1. TensorFlow์˜ Bazel BUILD ํŒŒ์ผ์„ Windows์—์„œ ์ž‘๋™ํ•˜๋„๋ก ์กฐ์ •. ์ตœ๊ทผ @meteorcloudy ์˜ ํ•ด๋‹น ๋ฐฉํ–ฅ(์˜ˆ: #4449)์˜ pull ์š”์ฒญ์„ ๋ณด์•˜์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ตœ์ข… ๊ณ„ํš์€ Windows์—์„œ Bazel์„ ์‚ฌ์šฉํ•˜์—ฌ TensorFlow ๋นŒ๋“œ๋ฅผ ์™„๋ฒฝํ•˜๊ฒŒ ์ง€์›ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  2. Visual C++ 2015 ์ปดํŒŒ์ผ๋Ÿฌ๋กœ ๋นŒ๋“œํ•˜๋„๋ก TensorFlow ๋Ÿฐํƒ€์ž„์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด ๋…ธ๋ ฅ์„ ํ•ด์™”๊ณ , HEAD์™€ ๋‚ด ์ž‘์—… ๋ธŒ๋žœ์น˜ ์‚ฌ์ด์˜ ์ฐจ์ด๋Š” ๋‚˜๋‚ ์ด ์ž‘์•„์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ CMake๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Visual Studio/MSBuild๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ TensorFlow๋ฅผ ๋นŒ๋“œํ•˜๊ณ  ์žˆ์ง€๋งŒ BUILD ํŒŒ์ผ์ด ํ”Œ๋žซํผ ๊ฐ„ ์ž‘๋™ํ•  ๋•Œ Bazel๋กœ ์ „ํ™˜ํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค.

๋ฐ”์ด๋„ˆ๋ฆฌ PIP ํŒจํ‚ค์ง€์™€ Windows์—์„œ TensorFlow๋ฅผ ๋นŒ๋“œํ•˜๊ธฐ ์œ„ํ•œ ์ง€์นจ๊ณผ ํ•จ๊ป˜ ๊ณง ๋ฐœํ‘œํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. ๊ทธ๋™์•ˆ ๊ณต์œ ํ•  ์†Œ์‹์ด ์žˆ์œผ๋ฉด ์ด ๋ฌธ์ œ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.


@kestrelm ์˜ ํŠน์ • ์งˆ๋ฌธ ์— ๋Œ€ํ•œ ๋‹ต๋ณ€:

  1. ์ €๋Š” ํ˜„์žฌ CMake๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ํ”„๋กœ์ ํŠธ๊ฐ€ ์žˆ๋Š” VS ์†”๋ฃจ์…˜์„ ์ƒ์„ฑํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์ด๋ฅผ ์œ„์˜ ํ•ญ๋ชฉ (2)์˜ ์ผ๋ถ€๋กœ ๋ณ‘ํ•ฉํ•ฉ๋‹ˆ๋‹ค.
  2. ์ตœ์†Œํ•œ ๋Ÿฐํƒ€์ž„๊ณผ ๋ชจ๋“  ์ปค๋„์„ ํฌํ•จํ•˜๋Š” Python ํ™•์žฅ DLL( tensorflow/python/_pywrap_tensorflow.so ์— ํ•ด๋‹น)์„ ์ƒ์„ฑํ•˜๊ณ  ์ •์ ์œผ๋กœ ๋งํฌ๋œ C++ ๋ฐ”์ด๋„ˆ๋ฆฌ( tensorflow/cc/tutorials/example_trainer.cc ์— ํ•ด๋‹น)๋ฅผ ๋นŒ๋“œํ•˜๊ธฐ ์œ„ํ•œ ์ง€์นจ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ).
  3. ์ดˆ๊ธฐ ๋ฆด๋ฆฌ์Šค์˜ ์ผ๋ถ€๋Š” ์•„๋‹์ง€๋ผ๋„ ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ(C API ๋’ค์˜ DLL์— ์žˆ๋Š” ์ถ”๋ก  ๊ด€๋ จ ์ปค๋„์˜ Android ํ•˜์œ„ ์ง‘ํ•ฉ๊ณผ ๊ฐ™์€ ๊ฒƒ)์„ ์‚ฌ์šฉํ•˜์—ฌ ๋Ÿฐํƒ€์ž„ ๋ฒ„์ „์„ ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋นŒ๋“œ ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜์—ฌ ์ด๋Ÿฌํ•œ ์†์„ฑ์„ ๊ฐ€์ง„ ๋Œ€์ƒ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ๊ฐ€๋Šฅํ•˜๋ฉฐ ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ ค๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ์„ ๊ธฐ๊บผ์ด ๋•๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ฉ‹์ง„ ์ž‘์—…, @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๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ์ง€์นจ์ž…๋‹ˆ๋‹ค.

  • Windows์— Bazel ์„ค์น˜( ์„ค์น˜ ์ง€์นจ )
  • MSVC๋กœ C++๋ฅผ ๋นŒ๋“œ ํ•˜๊ธฐ ์œ„ํ•ด Bazel์ด ํ•„์š”๋กœ ํ•˜๋Š” ํ™˜๊ฒฝ ์„ค์ •
  • TF ์ €์žฅ์†Œ ๋ณต์ œ, MSYS์—์„œ ./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]

5421๋„ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

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์— ๋Œ€ํ•œ ์ƒˆ ๋ฌธ์ œ๋ฅผ ์—ด์–ด ๋ฌธ์ œ๋ฅผ ์„ค๋ช…ํ•˜๊ณ  ํ‘œ์ค€ ๋ฌธ์ œ ํ…œํ”Œ๋ฆฟ์„ ์ž‘์„ฑํ•˜์„ธ์š”. ์ด๊ฒƒ์€ TensorFlow-on-Windows๋ฅผ ์ถœ์‹œํ•˜๊ธฐ ์œ„ํ•ด ํ•ด์•ผ ํ•  ๋‚˜๋จธ์ง€ ์ž‘์—…์„ ์ถ”์ ํ•˜๊ณ  ํ• ๋‹นํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.
  • ์šฐ๋ฆฌ๋Š” ์ด ๋ฌธ์ œ๋ฅผ Windows ์ง€์›์— ๋Œ€ํ•œ (๋“œ๋ฌธ) ๋ฐœํ‘œ์— ๊ณ„์† ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋ฏ€๋กœ TensorFlow-on-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์— ๊ด€์‹ฌ์„ ๊ฐ€์ ธ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

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