사이킷런으로 연산 하던 것을 텐서 2.0 GPU로 바꾸니 20 분 걸리던데 5초 걸린다.

GPU도 이런데 구글의 TPU는 더 어마어마 하겠네. 물론, 맞는 상황이면...  2017 저장된 구글링 자료는 저런 비교가 되어 있던데... 시간 날 때 좀 더 자세히 봐야겠다. 일단 가설은 텐서 짱.

2020-06-30 23:56:10.818918: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1555] 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-06-30 23:56:10.819336: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cudart64_101.dll

2020-06-30 23:56:10.819574: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cublas64_10.dll

2020-06-30 23:56:10.819780: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cufft64_10.dll

2020-06-30 23:56:10.819988: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library curand64_10.dll

2020-06-30 23:56:10.820184: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cusolver64_10.dll

2020-06-30 23:56:10.820390: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cusparse64_10.dll

2020-06-30 23:56:10.820562: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cudnn64_7.dll

2020-06-30 23:56:10.821190: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1697] Adding visible gpu devices: 0

2020-06-30 23:56:10.821391: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1096] Device interconnect StreamExecutor with strength 1 edge matrix:

2020-06-30 23:56:10.821600: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1102]      0

2020-06-30 23:56:10.821752: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1115] 0:   N

2020-06-30 23:56:10.822327: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1241] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 2885 MB memory) -> physical GPU (device: 0, name: GeForce RTX 2080 SUPER, pci bus id: 0000:09:00.0, compute capability: 7.5)

 

사이킷런(Scikit-learn) vs 텐서플로우(TensorFlow)

Kim Kanu

2017. 10. 13. 18:03

 이웃추가

본문 기타 기능

머신러닝 프레임워크는 분류, 회귀(Regression), 클러스터링, 비정상행위 탐지(Anomaly Detection), 데이터 준비(Data Preparation)를 위한 다양한 학습 방법을 다루며, 인공 신경망 메소드(Method)를 포함할 수도, 포함하지 않을 수도 있음

 

Ex) 사이킷런(Scikit-learn)과 스파크(Spark) MLlib는 머신러닝 프레임워크

 

 

 

 

딥러닝 또는 심층 신경망(Deep Neural Network: DNN) 프레임워크는 여러 개의 은닉 계층(Hidden Layer)을 가진 다양한 신경망 토폴로지, 이런 계층은 다단계 프로세스의 패턴 인식으로 이루어져 있다. 망에 계층이 많을수록 클러스터링과 분류를 위해 추출할 수 있는 특징이 더 다양

 

Ex) 카페(Caffe), 마이크로소프트 인지 툴킷(Cognitive Toolkit: CNTK 2)과 딥러닝4j(하둡과 스파크에서 사용하는 자바와 스칼라(Scalar)용 딥러닝 소프트웨어), 케라스(Keras: 테아노와 텐서플로우용 딥러닝 프론트엔드), MX넷, 텐서플로우(TensorFlow) 등은 딥러닝 프레임워크

 

 

 

하기 프레임워크에 대한 내용은 머신러닝 프레임워크는 사이킷런 & 딥러닝 프레임워크로는 텐서플로우를 다룬다.

 

 

 

사이킷런

사이킷런 파이썬 프레임워크는 탄탄한 학습 알고리즘이 장점

잘 정의된 알고리즘과 통합 그래픽, 검증된 라이브러리라는 것도 장점

설치, 학습, 사용하기 쉽고 예제와 사용 설명서가 잘 돼 있음

 

딥러닝이나 강화 학습을 다루지 않는 단점

그래픽 모델과 시퀀스 예측(Sequence Prediction) 기능을 지원하지 않음

이썬 이외의 언어에서는 사용할 수 없고, 파이썬 JIT(Just-in-Time) 컴파일러인 파이파이(PyPy)나 GPU를 지원하지 않음 

 

사이킷런은 분류와 회귀, 클러스터링, 차원 축소(Dimensionality Reduction), 모델 선택, 전처리에 대해 다양한 알고리즘을 지원, 이와 관련된 문서화와 예제도 훌륭하다. 하지만 이런 작업을 완료하기 위한 안내 워크플로우가 전혀 없음 

 

딥러닝이나 강화 학습을 지원하지 않아 정확한 이미지 분류와 신뢰성 있는 실시간 언어 구문 분석(Language Parsing), 번역 같은 문제를 해결하는 데는 적절치 않음

 

여러 가지 다른 관측값(Observation)을 연결하는 예측 함수를 만드는 것부터 관측값을 분류하는 것, 라벨이 붙어있지 않은 데이터 세트의 구조를 학습하는 것까지, 수십 개의 뉴런 계층이 필요 없는 일반적인 머신러닝 용도라면 사이킷만한 것이 없음

 

 

 

텐서플로우

텐서플로우는 구글이 내놓은 이식성 좋은 머신러닝과 인공 신경망 라이브러리

배우기가 조금 어렵지만 성능과 확장성이 좋음 

텐서플로우에는 딥러닝에서 많이 사용하는 다양한 모델과 알고리즘이 들어 있으며 GPU(훈련용)나 구글 TPU(현업에 적용할 수 있는 규모로 예측용)를 장착한 하드웨어에서 탁월한 성능

이썬 지원이 훌륭하며 문서화가 잘되어 있고 텐서보드라고 하는 소프트웨어가 포함돼 있어 결과를 설명하는 데이터 플로우그래프(Data Flow Graph: DFG)를 표시하고 이해하기 좋음

데이터 플로우 그래프에서 노드(Node)는 수학적 연산을 나타내며, 그래프 에지(Edge)는 노드 간을 흐르는 다차원 데이터 어레이(텐서)를 나타낸다. 이런 유연한 아키텍처가 적용돼 있어 사용자가 코드를 재작성하지 않고도 데스크톱과 서버, 모바일 기기에 있는 하나 또는 이 이상의 CPU나 GPU에 배포할 수 있음

 

텐서플로우를 사용하기 위한 주요 언어는 파이썬

C++에 대한 지원은 일부 제한

 

텐서플로우와 함께 제공되는 사용 설명서를 보면, 수기 숫자 분류와 이미지 인식, 워드 임베딩( Word Embedding: 단어 표현), RNN (Recurrent Neural Network: 순환 신경망), 기계 번역(Machine Translation)을 위한 시퀀스-투-시퀀스(Sequence-to-Sequence) 모델, 자연어 처리, 그리고 PDE(Partial Differential Equation: 편 미분 방정식) 기반의 시뮬레이션에 대한 애플리케이션 등이 포함

텐서플로우를 이용하면 현재 이미지 인식과 언어 처리 분야를 바꿔놓고 있는 딥 CNN과 LSTM 재귀 모델을 포함해 온갖 종류의 신경망을 쉽게 처리가능 계층을 정의하는 코드가 다소 복잡하지만 3가지 딥러닝 인터페이스 옵션 중 한 가지로 이 불편함을 해결

비동기 네트워크 솔버(Asynchronous Network Solver)를 디버깅하기가 만만치 않지만 텐서보드 소프트웨어는 사용자가 그래프를 시각화할 수 있게 해줌

 

Source : 구글 텐서플로우부터 MS CNTK까지딥러닝/머신러닝 프레임워크 6종 비교 분석(IDG)

댓글 0공유하기

Kim Kanu

스타트업 백서 저자, 기술신용평가사 저자

 

+ Recent posts