PyTorch와 TensorFlow는 두 가지 주요 딥러닝 프레임워크로, 각각의 장단점이 다릅니다. 두 프레임워크는 주로 연구, 실무, 프로덕션 환경에서 널리 사용됩니다. 아래에서 PyTorch와 TensorFlow의 주요 장단점을 비교해드리겠습니다.
PyTorch
장점
- 직관적이고 유연한 API
- Pythonic: PyTorch의 인터페이스는 Python의 문법과 매우 유사하여 직관적이고 쉽게 배울 수 있습니다.
- 동적 계산 그래프: PyTorch는 실행 시점에 계산 그래프를 동적으로 생성하여, 디버깅과 모델 자유도가 높습니다.
- 강력한 연구 및 프로토타이핑 도구
- 빠른 실험: 동적 그래프 덕분에 연구자들이 빠르게 실험하고 새로운 아이디어를 테스트할 수 있습니다.
- 디버깅 편의성: Python의 기본 디버깅 도구 (예: pdb)를 사용할 수 있어 디버깅이 용이합니다.
- 커뮤니티 지원
- 활발한 커뮤니티: PyTorch의 사용자 커뮤니티가 매우 활발하여 다양한 튜토리얼, 게시판, 포럼 등을 통해 다양한 지원을 받을 수 있습니다.
- 프레임워크 통합: Hugging Face, Pyro와 같은 많은 라이브러리와 잘 통합됩니다.
- 투명한 모델 구현
- 딥러닝 모델의 가시성: 모델의 각 부분을 쉽게 볼 수 있으며, 수정하고 디버깅하기가 상대적으로 쉽습니다.
단점
- 프로덕션 배포의 상대적 불리함
- 프로덕션 준비 부족: TensorFlow에 비해 PyTorch는 배포와 관련된 도구나 서비스가 상대적으로 부족할 수 있습니다.
- 모바일 지원 제한: TensorFlow Lite에 비해 PyTorch Mobile의 생태계가 비교적 덜 성숙했습니다.
- 상대적으로 적은 산업 채택
- 기업 사용 비율: 일부 대규모 기업에서는 여전히 TensorFlow를 더 선호하며, PyTorch의 산업 채택이 상대적으로 적을 수 있습니다.
TensorFlow
장점
- 광범위한 도구 및 생태계
- TensorFlow Extended (TFX): 데이터 검증, 모델 검증, 모델 배포에 필요한 일련의 도구들로 구성된 확장 패키지를 제공합니다.
- TensorFlow Serving: 프로덕션 환경에서 모델 배포를 용이하게 해주는 도구입니다.
- TensorFlow Lite: 모바일 및 임베디드 장치에서 모델을 효율적으로 실행할 수 있도록 지원합니다.
- TensorFlow.js: 브라우저에서 모델을 실행할 수 있도록 지원합니다.
- 강력한 프로덕션 지원
- 배포 및 확장성: TensorFlow는 Google의 다양한 서비스에 통합되어 있으며, 클라우드 환경에서 대규모 배포와 확장에 강점이 있습니다.
- 정적 계산 그래프
- 최적화: 계산 그래프를 미리 정의하여, 다양한 최적화를 적용할 수 있습니다.
- 배포의 용이성: 모델을 저장하고 로드하기가 상대적으로 쉽습니다.
- 커뮤니티 및 기업 지원
- 활발한 커뮤니티: TensorFlow도 많은 사용자 커뮤니티와 자원들이 있어 배우고 도움을 받기 쉽습니다.
- 기업 채택: 많은 대규모 기업들이 TensorFlow를 채택하여 사용하고 있습니다.
단점
- 복잡한 API
- 기울기에 있는 학습 곡선: TensorFlow의 API는 PyTorch에 비해 복잡할 수 있으며, 학습 곡선이 더 가파를 수 있습니다.
- 초보자에게 난해함: 특히 초보자는 TensorFlow의 복잡한 개념과 구조로 인해 어려움을 겪을 수 있습니다.
- 동적 그래프 지원 부족
- 디버깅의 불편함: 정적 계산 그래프의 특성상 디버깅이 다소 불편할 수 있습니다.
- 유연성 부족: 동적 계산 그래프가 필요할 때, PyTorch보다 유연성이 떨어집니다.
________________________________________________________
WARNING:tensorflow:From O:/PycharmProjects/catdogtf2.2/001.py:133: Model.fit_generator (from tensorflow.python.keras.engine.training) is deprecated and will be removed in a future version.
Instructions for updating:
Please use Model.fit, which supports generators.
failed call to cuInit: CUDA_ERROR_NO_DEVICE: no CUDA-capable device is detected
D:\Program Files\NVIDIA Corporation\nvsmi
https://www.nvidia.co.kr/Download/index.aspx?lang=kr
d:\nvidia
Failed to initialize NVML: Unknown Error
D:\Program Files\NVIDIA Corporation\NVSMI>nvidia-smi.exe
Failed to initialize NVML: Unknown Error
D:\Program Files\NVIDIA Corporation\NVSMI>nvidia-smi.exe
Mon Aug 10 18:56:04 2020
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 388.13 Driver Version: 451.67 |
|-------------------------------+----------------------+----------------------+
| GPU Name TCC/WDDM | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce RTX 208... WDDM | 00000000:09:00.0 On | N/A |
| 16% 49C P8 6W / 250W | 372MiB / 8192MiB | 5% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
Internal error
D:\Program Files\NVIDIA Corporation\NVSMI>
Python 3.7.7 (default, May 6 2020, 11:45:54) [MSC v.1916 64 bit (AMD64)] on win32
>>> runfile('O:/PycharmProjects/catdogtf2.2/001.py', wdir='O:/PycharmProjects/catdogtf2.2')
2020-08-10 18:58:07.273739: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cudart64_101.dll
2020-08-10 18:58:09.472382: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library nvcuda.dll
2020-08-10 18:58:09.522700: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1561] Found device 0 with properties:
pciBusID: 0000:09:00.0 name: GeForce RTX 2080 SUPER computeCapability: 7.5
coreClock: 1.845GHz coreCount: 48 deviceMemorySize: 8.00GiB deviceMemoryBandwidth: 462.00GiB/s
2020-08-10 18:58:09.523231: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cudart64_101.dll
2020-08-10 18:58:09.630640: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cublas64_10.dll
2020-08-10 18:58:09.739451: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cufft64_10.dll
2020-08-10 18:58:09.767974: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library curand64_10.dll
2020-08-10 18:58:09.859263: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cusolver64_10.dll
2020-08-10 18:58:09.901611: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cusparse64_10.dll
2020-08-10 18:58:10.104479: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cudnn64_7.dll
2020-08-10 18:58:10.104874: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1703] Adding visible gpu devices: 0
2020-08-10 18:58:10.105523: I tensorflow/core/platform/cpu_feature_guard.cc:143] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2
2020-08-10 18:58:10.117841: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x1ee580c2550 initialized for platform Host (this does not guarantee that XLA will be used). Devices:
2020-08-10 18:58:10.118253: I tensorflow/compiler/xla/service/service.cc:176] StreamExecutor device (0): Host, Default Version
2020-08-10 18:58:10.118581: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1561] Found device 0 with properties:
pciBusID: 0000:09:00.0 name: GeForce RTX 2080 SUPER computeCapability: 7.5
coreClock: 1.845GHz coreCount: 48 deviceMemorySize: 8.00GiB deviceMemoryBandwidth: 462.00GiB/s
2020-08-10 18:58:10.119137: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cudart64_101.dll
2020-08-10 18:58:10.119473: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cublas64_10.dll
2020-08-10 18:58:10.119767: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cufft64_10.dll
2020-08-10 18:58:10.120060: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library curand64_10.dll
2020-08-10 18:58:10.120364: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cusolver64_10.dll
2020-08-10 18:58:10.120668: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cusparse64_10.dll
2020-08-10 18:58:10.120965: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cudnn64_7.dll
2020-08-10 18:58:10.121312: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1703] Adding visible gpu devices: 0
2020-08-10 18:58:10.979136: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1102] Device interconnect StreamExecutor with strength 1 edge matrix:
2020-08-10 18:58:10.979373: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1108] 0
2020-08-10 18:58:10.979563: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1121] 0: N
2020-08-10 18:58:10.979987: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1247] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 6198 MB memory) -> physical GPU (device: 0, name: GeForce RTX 2080 SUPER, pci bus id: 0000:09:00.0, compute capability: 7.5)
2020-08-10 18:58:10.983679: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x1ee20800930 initialized for platform CUDA (this does not guarantee that XLA will be used). Devices:
2020-08-10 18:58:10.984072: I tensorflow/compiler/xla/service/service.cc:176] StreamExecutor device (0): GeForce RTX 2080 SUPER, Compute Capability 7.5
2020-08-10 18:58:10.986288: I tensorflow/core/common_runtime/eager/execute.cc:501] Executing op MatMul in device /job:localhost/replica:0/task:0/device:GPU:0
2020-08-10 18:58:10.986835: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cublas64_10.dll
CPU 사용량 100% 에서
30%로 떨어짐.
GPU는 메모리가 중요...
RTX 8000이 쿠다 성능 점수는 같은데 900만원 하는 이유가 있네.
'3D world > AI Integration Engineer' 카테고리의 다른 글
tutorials 02 (0) | 2020.08.11 |
---|---|
tutorial 01 running on pyCharm 2020.2 & 3.7 (1) | 2020.08.11 |
cat vs dog old ver. & (0) | 2020.07.01 |
opencv 궁합 맞는 아이들 (0) | 2020.07.01 |
NVIDIA's GANimation (0) | 2020.07.01 |
최근댓글