Deep Learning/2023 DL 기초 이론 공부

[Standford_cs231n] Lecture 8 ) Deep Learning Software

a._muj 2023. 7. 7. 15:46
728x90
반응형

 

1. CPU vs GPU
  • CPU는 컴퓨터의 뇌에 해당하는 부분
  • 컴퓨터에서 구성 단위 중 기억, 해석, 연산, 제어부분을 수행하는 중요한 녀석이다.
  • 좀 더 적은 core의 수로 연속적인 일을 처리하는데 CPU가 자주 쓰인다

  • GPU는 computer graphics를 Rendering하기 위해 쓰이는 녀석이다.
  • 더 많은 core로 일을 병렬적으로 수행하고 싶을 때 GPU가 자주 쓰인다.
  • GPU는 내부적으로 자체적인 RAM을 가지고 있다.

⇒ GPU의 종류는 크게 세가지

  1. CUDA
  1. OpenCL
  1. Udacity
2. Deep Learning Framework
  • 딥러닝 프레임 워크를 사용하는 이유는?
  1. Computational Graph를 쉽게 build하기 위해
  1. Gradient 계산을 쉽게 하기 위해
  1. GPU에서 효과적으로 딥러닝을 돌리기 위해
1. Tensorflow
  • Neural Network를 먼저 정의하고 training 시킴
  • Graph이 static이다
  • 즉, 모델을 한번 구성해놓으면 재사용이 쉽고 최적화 과정도 가능.

처음에 Neural Net을 만든다. placeholder라는 곳에 input값과 weights들의 값을 넣어준다.

Xavier에 의해 weight의 초기화 값을 설정해준다. 그리고 y_pred 를 이용해 자동적으로 weight값이 바뀌도록 설정해준다.

그리고 optimizer를 이용해 gradient값을 계산하고,loss값이 최소가 되도록 계속 update를 해준다.

2. Keras

keras란 Tensorflow에서 제공하는 high-level wrapper이다.

굉장히 직관적으로 모델을 짤 수 있도록 구성되어 있어 처음 딥러닝 모델을 배울 때 좋은

model.fit 하면 알아서 모델 합치고 training 하게끔 함.

3. Pytorch

pytorch에는 3가지의 abstraction이 존재하는데,

Tensor란 쉽게 말하면 다차원 배열인데 GPU에서 돌아가게끔 만든 배열이다.

Variable이란 computational graph의 하나의 노드라고 생각하면 된다. data와 gradient값을 가지고 있다. 

Module이란 neural network의 하나의 layer라고 생각하면 된다.

pytorch는 tensorflow와 다르게 graph가 dynamic graph이다.

training을 시킬 때, 매번 새로운 그래프를 구성한다.

따라서 코드를 깔끔하게 작성할 수 ㅇㅇ

모듈을 새로 만들어 주고, 내가 만든 모델을 이용하여 학습을 진행할 수 있다. optimizer를 이용해서 learning rate를 쉽게 정할 수도 있다.

DataLoader를 이용하여 쉽게 dataset을 불러올 수도 있다.

4. Caffe2
  • c++로 작성되어 있다.
  • python으로 모델을 training을 시키고 serialize와 deploy는 python없이 진행할 수 있다.
  • iOS / Android 에서도 동작한다.
  • Facebool에서 직접 딥러닝을 적용하여 실제 제품을 만들 때 사용한다.

 

728x90
반응형