[Pytorch] 파이토치 설치와 Keras, Tensorflow 비교
파이토치(Pytorch)는 페이스북에서 바톤터치를 한 이후 계속 만들고 잘 관리하고 있으며 한 때 텐서플로우로 딥러닝 시장이 제패될 것 같던 상황에서 파이토치가 기가 막히게 생명력을 유지하면서 최근에는 특정 분야는 더 앞서는 모습을 보여주기도 한다.
Pytorch는 그냥 학문에서나 쓰이며 박사나 일부 연구원들이 사용하는 것이라 다짐하며, 다시는 배우지 않을거라 생각했지만 최근 들어 자연어처리쪽의 파이토치의 약진이 무섭다. 그래서 신기술을 빠르게 익히기 위해서 Pytorch를 배운다는 것은 선택이 아니라 필수가 되어 버렸다.
그럼 설치와 사용에 앞서 각각은 언제 사용하는 것이 좋은지 해외 아티클들을 뒤지면서 정리해보았다.
Pytorch vs Keras vs Tensorflow
우선 초창기의 텐서플로우(Tensorflow)는 난이도가 상당히 높았다. 지금 텐서플로우 2.0부터 배우는 사람들은 케라스가 내장되어 행운아라는 말이 있을 정도로 개념을 이해하기도 힘들었지만, 코드 자체도 난이도가 높았다. 텐서플로우 2.0의 Wrapper 언어로 등극한 케라스로 1.0대의 텐서플로우의 코드를 포팅한다면 이렇게 쉬운 녀석인가 싶을 정도니 말이다.
그러다보니 텐서플로우 1.0의 성능이 좋더라도 프로그램이 익숙하지 않았던 연구원들과 수학자들은 파이토치를 사용하였고, 서비스의 퍼포먼스가 중요했던 현업들은 울며겨자먹기로 텐서플로우를 사용했었다.
그러다가 위 트렌드처럼 시간이 지나면서 상황이 웃기게 역전이 되어버렸는데 케라스가 텐서플로우의 전면에 나서면서 텐서플로우가 너무 쉬워진 것이다. 급격한 변화로 인해서 1.x대에 적응했던 사람들은 오히려 힘들어지고 텐서플로우는 소스가 1.x와 2.x가 뒤섞이면서 엉망진창이 되어버렸다. (하여간 파이썬 진영은 이게 문제인 듯)
그에 반해 파이토치는 마치 곰탕처럼 꾸준히 성능이 좋아지면서, 이제는 중간 위치의 성능을 보여주고 있다. 한마디로 텐서플로우 보다는 약간 성능이나 서비스적인 측면(ex: serving을 할 때 텐서플로우는 자체적으로 지원이 되지만 파이토치는 flask같은 웹프레임워크를 써야 한다)에서 밀리지만 케라스보단 좋은 상황인 것이다.
Pytorch 설치
많이들 파이토치를 설치할 때 당황하게 될텐데 그 이유는 아래와 같은 설치 명령어가 먹히지 않기 때문이다.
(base) C:\Users>pip install pytorch
Collecting pytorch
Downloading pytorch-1.0.2.tar.gz (689 bytes)
Building wheels for collected packages: pytorch
Building wheel for pytorch (setup.py) ... error
ERROR: Command errored out with exit status 1:
command: 'e:\Anaconda3\python.exe' -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\Steele\\AppData\\Local\\Temp\\pip-install-81iyvwvj\\pytorch_2e235796cab948dea174ed1d7864a9f7\\setup.py'"'"'; __file__='"'"'C:\\Users\\Steele\\AppData\\Local\\Temp\\pip-install-81iyvwvj\\pytorch_2e235796cab948dea174ed1d7864a9f7\\setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d 'C:\Users\Steele\AppData\Local\Temp\pip-wheel-q2izjtmz'
cwd: C:\Users\needjarvis\AppData\Local\Temp\pip-install-81iyvwvj\pytorch_2e235796cab948dea174ed1d7864a9f7\
Complete output (5 lines):
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "C:\Users\Steele\AppData\Local\Temp\pip-install-81iyvwvj\pytorch_2e235796cab948dea174ed1d7864a9f7\setup.py", line 15, in <module>
raise Exception(message)
Exception: You tried to install "pytorch". The package named for PyTorch is "torch"
----------------------------------------
ERROR: Failed building wheel for pytorch
Running setup.py clean for pytorch
Failed to build pytorch
Installing collected packages: pytorch
Running setup.py install for pytorch ... error
ERROR: Command errored out with exit status 1:
command: 'e:\Anaconda3\python.exe' -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\Steele\\AppData\\Local\\Temp\\pip-install-81iyvwvj\\pytorch_2e235796cab948dea174ed1d7864a9f7\\setup.py'"'"'; __file__='"'"'C:\\Users\\Steele\\AppData\\Local\\Temp\\pip-install-81iyvwvj\\pytorch_2e235796cab948dea174ed1d7864a9f7\\setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record 'C:\Users\Steele\AppData\Local\Temp\pip-record-6xc29ctp\install-record.txt' --single-version-externally-managed --compile --install-headers 'e:\Anaconda3\Include\pytorch'
cwd: C:\Users\Steele\AppData\Local\Temp\pip-install-81iyvwvj\pytorch_2e235796cab948dea174ed1d7864a9f7\
Complete output (5 lines):
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "C:\Users\Steele\AppData\Local\Temp\pip-install-81iyvwvj\pytorch_2e235796cab948dea174ed1d7864a9f7\setup.py", line 11, in <module>
raise Exception(message)
Exception: You tried to install "pytorch". The package named for PyTorch is "torch"
----------------------------------------
ERROR: Command errored out with exit status 1: 'e:\Anaconda3\python.exe' -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\Steele\\AppData\\Local\\Temp\\pip-install-81iyvwvj\\pytorch_2e235796cab948dea174ed1d7864a9f7\\setup.py'"'"'; __file__='"'"'C:\\Users\\Steele\\AppData\\Local\\Temp\\pip-install-81iyvwvj\\pytorch_2e235796cab948dea174ed1d7864a9f7\\setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record 'C:\Users\Steele\AppData\Local\Temp\pip-record-6xc29ctp\install-record.txt' --single-version-externally-managed --compile --install-headers 'e:\Anaconda3\Include\pytorch' Check the logs for full command output.
파이토치는 위와 같은 명령어로 설치가 되지 않고 가이드가 존재한다.
https://pytorch.org/get-started/locally/
위 사이트에 접속을 하면, 아래와 같이 옵션을 선택하는 것이 있다. 자신의 환경에 맞게 옵션을 선택하면 아래, Run this Command 라는 설치 명령어가 나온다.
Command 명령어를 입력하게 되면, 이제 원하는 설정으로 pytorch가 설치된다.
설치가 마무리 되었다면, 이제 pytorch가 제대로 작동이 되는지 확인을 해보자
작동 확인
(scientist) C:\Users>python
Python 3.9.7 (default, Sep 16 2021, 16:59:28) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> torch.__version__
'1.10.1'
>>>
참고로 파이토치는 import torch를 써야 하며, torch.__version__으로 버전을 확인할 수 있다.
References
[1] Keras vs Tensorflow vs Pytorch: Key Differences Among the Deep Learning Framework, https://www.simplilearn.com/keras-vs-tensorflow-vs-pytorch-article
[2] Pytorch Install, https://pytorch.org/get-started/locally/