Tensorflow: google.protobuf์—์„œ ์„ค๋ช…์ž๋ฅผ _descriptor๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ ImportError: google.protobuf๋ผ๋Š” ๋ชจ๋“ˆ์ด ์—†์Šต๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2016๋…„ 06์›” 28์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: tensorflow/tensorflow

์•ˆ๋…•ํ•˜์„ธ์š”, ์ €๋Š” Amazon Web Services ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ํ”Œ๋žซํผ์—์„œ tensorflow๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋Š”๋ฐ ๋ช‡ ๊ฐ€์ง€ ๋ฌธ์ œ์— ๋ด‰์ฐฉํ–ˆ์Šต๋‹ˆ๋‹ค. pip๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ virtualenv์— tensorflow๋ฅผ ์„ค์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ /env/lib/python2.7/site-packages/์˜ ๋‚ด์šฉ์„ ์†Œ์Šค ์ฝ”๋“œ์™€ ํ•จ๊ป˜ AWS Lambda์šฉ ๊ฐœ๋ฐœ ํŒจํ‚ค์ง€์— ์••์ถ•ํ–ˆ์Šต๋‹ˆ๋‹ค(env๋Š” ๋‚ด virtualenv์˜ ์ด๋ฆ„). ์ด๊ฒƒ์€ AWS Lambda ํ”„๋กœ์„ธ์Šค์— python ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ์„ธ์Šค์ด๋ฉฐ ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. numpy, scipy, Pillow ๋ฐ ๊ธฐํƒ€ ํ›จ์”ฌ ๋œ ์ง€์›๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•ด ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ–ˆ์œผ๋ฉฐ ๋ชจ๋‘ Lambda์—์„œ ์ œ๋Œ€๋กœ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ tensorflow๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•˜๋ฉด ๋‹ค์Œ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“ˆ '๋ถ„๋ฅ˜'๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์—†์Œ: ์—ญ์ถ”์ (๊ฐ€์žฅ ์ตœ๊ทผ ํ˜ธ์ถœ ๋งˆ์ง€๋ง‰): ํŒŒ์ผ "/var/task/tensorflow/python/__init__.py", 52ํ–‰, intensorflow.core.framework.graph_pb2 import * ํŒŒ์ผ "/var/task/tensorflow/core/framework/graph_pb2.py", 6ํ–‰, ingoogle.protobuf ๊ฐ€์ ธ์˜ค๊ธฐ ์„ค๋ช…์ž๋ฅผ _descriptor ImportError๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ: google.protobuf๋ผ๋Š” ๋ชจ๋“ˆ์ด ์—†์Šต๋‹ˆ๋‹ค. tensorflow๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋™์•ˆ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. bazel์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ํ•œ ์†Œ์Šค ๋””๋ ‰ํ† ๋ฆฌ์—์„œ tensorflow๋ฅผ ๊ฐ€์ ธ์˜ค๋ ค๊ณ  ํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. tensorflow ์†Œ์Šค ํŠธ๋ฆฌ๋ฅผ ์ข…๋ฃŒํ•˜๊ณ  ๊ฑฐ๊ธฐ์—์„œ ํŒŒ์ด์ฌ ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜์‹ญ์‹œ์˜ค.

classify๋Š” AWS Lambda๊ฐ€ ํ˜ธ์ถœ๋  ๋•Œ ํ˜ธ์ถœํ•˜๋Š” ์†Œ์Šค ์Šคํฌ๋ฆฝํŠธ์ด๋ฉฐ ๋‚ด๊ฐ€ ์„ค๋ช…ํ•œ ๋Œ€๋กœ /env/lib/python2.7/site-packages/์˜ ๋‚ด์šฉ๊ณผ ํ•จ๊ป˜ ์••์ถ•๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์˜ค๋ฅ˜๋Š” ๋‹ค๋ฅธ ๋‘ ๊ณณ์—์„œ ํ•ด๊ฒฐ๋˜์—ˆ์ง€๋งŒ ํ•ด๋‹น ํŽ˜์ด์ง€์—์„œ ์ฐพ์€ ์†”๋ฃจ์…˜ ์ค‘ ์–ด๋Š ๊ฒƒ๋„ ์ €์—๊ฒŒ ํšจ๊ณผ๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ๊ทธ๋“ค ์ค‘ ๋ˆ„๊ตฌ๋„ ๋žŒ๋‹ค๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋žŒ๋‹ค๊ฐ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ์‹ ๋•Œ๋ฌธ์— ํ…์„œํ”Œ๋กœ๊ฐ€ ๋žŒ๋‹ค์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด ์–ด์จŒ๋“  zip์œผ๋กœ ์—…๋กœ๋“œํ•˜๋Š” ์†Œ์Šค ํด๋”์—์„œ tensorflow ํŒจํ‚ค์ง€๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋ฒˆ์‹์„ ์œ„ํ•œ ํŠน์ • ๋‹จ๊ณ„:

  • ๊ฐ€์ƒ ํ™˜๊ฒฝ
  • env/bin/pip ์„ค์น˜ https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.9.0-cp27-none-linux_x86_64.whl
  • .py ํŒŒ์ผ ๋ถ„๋ฅ˜๊ฐ€ ์žˆ๋Š” /env/lib/python2.7/site-packages์˜ zip ๋‚ด์šฉ
  • AWS ๋žŒ๋‹ค ํ•จ์ˆ˜์— ์—…๋กœ๋“œ
  • classify๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  "tf๋กœ tensorflow ๊ฐ€์ ธ์˜ค๊ธฐ" ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” aws ๋žŒ๋‹ค ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์ด AWS ์ปจํ…Œ์ด๋„ˆ ๋‚ด์—์„œ tensorflow๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์„ ๊ฐ์•ˆํ•  ๋•Œ ์ด๊ฒƒ์ด ์•„๋งˆ๋„ tensorflow๊ฐ€ ์ง€์›ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ ๊ฒƒ์ด๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. AWS.

๊ฐ์‚ฌ ํ•ด์š”!!

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

์ข‹์•„, ์ด๊ฒƒ์ด ๋ฌด์—‡์„ ํ•˜๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ์ด ์ „์ฒด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.:

์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€๋กœ cd
touch google/__init__.py
์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€๋ฅผ ์••์ถ•ํ•˜๊ธฐ ์ „์— ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์‹ญ์‹œ์˜ค.
^๋ฐฐ์‰ฌ

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

์ข‹์•„, ์ด๊ฒƒ์ด ๋ฌด์—‡์„ ํ•˜๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ์ด ์ „์ฒด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.:

์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€๋กœ cd
touch google/__init__.py
์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€๋ฅผ ์••์ถ•ํ•˜๊ธฐ ์ „์— ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์‹ญ์‹œ์˜ค.
^๋ฐฐ์‰ฌ

์ •๋ง ๋งค๋ ฅ์ ์ž…๋‹ˆ๋‹ค. ๋ฌธ์ œ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ AWS ๋žŒ๋‹ค ๊ณ ์œ ์˜ ๊ฒƒ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ์ข…๋ฃŒํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‚ด ์—ฌํ–‰์—์„œ ์ด๊ฒƒ์„ ์šฐ์—ฐํžˆ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. Lambda๊ฐ€ ์•„๋‹ˆ๋ผ protobuf ๋ชจ๋“ˆ์ž…๋‹ˆ๋‹ค. https://github.com/google/protobuf/issues/1296

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