ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [CS231n] 8강 Deep Learning Software
    Study/CS231n 2020. 11. 27. 19:37

    Deep Learning Software 설명이다.

     

    CPU vs GPU

    Deep Learning Frame work

     

    이 2가지가 주제이다. 이 부분은 정말 간단하게 설명하고 넘어가겠다.

     

    CPU vs GPU

     

     

    CPU : central processing unit

    GPU : graphics processing unit

     

    간단히 CPU는 컴퓨터의 뇌의 역할을 하며 조금 더 적은 core수로 연속적인 작업을 처리한다.

    GPU는 컴퓨터 그래픽을 Rendering하기 위해 사용한다. cpu보다 더 많은 core를 병렬적으로 사용할때 GPU를 쓴다. 자체적인 RAM도 가지고 있다.

     

    GPU 프로그래밍 할때 주로 3가지가 쓰인다.

     

    1. CUDA (NVDIA Only)

    2. OpenCL

    3. Udacity

     

    대표적으로 CUDA에서는 cuDNN을 함께 사용하여 training 속도가 훨씬 빨라진다고 한다.

     

    각종 CNN 아키텍처의 대한 속도이다. 매우 빠른 것을 알 수 있다.

     

    GPU 사용할때는 communication을 생각해줘야 한다.

     

    Data를 읽을때 발생하는 Bottleneck 현상이 일어날 수 있다.

     

    1. 모든 Data를 RAM으로 읽어드리기

    2. HDD가 아닌 SSD 사용하기

    3. CPU의 멀티 쓰레드를 이용하여 prefatch된 data 사용하기

     

    위와 같은 3가지 방법으로 이 현상을 해결할 수 있다고 한다.

     


    Deep Learning Framework

     

     

    Tensorflow

     

    tensorflow는 computational graph를 그린다. 코드를 보면 NN을 먼저 정의하고 run을 통해 training 과정을 진행한다.

     

    그래프가 굉장히 static 하다.  이 특징은 모델을 만들면 수정과 재사용이 쉽고 최적화 과정을 run 전에 할 수 있다. 상대적으로 low하다.

     

    코드에서 보이는 with tf.Session() as sess 이 부분 이후에 data를 넣어주고 training 한다.

     

    Keras

    kera는 tensorflow에서 제공하는 high-Level wrapper이다.

    직관적으로 짤 수있고 tensorflow보다 더 쉽다. layer의 시퀀스 모델을 설정하고

    add 해준 다음에 model.compile로 그래프를 만들고 model.fit으로 training 하면 된다.

     

    Pytorch

     

     

    pytorch는 3가지 추상화가 있다.

     

    tensor : 다차원배열인데 GPU에서 run 될 수있도록 하는 일종의 numpy 배열이다.

    variable : computational graph의 하나의 노드라고 생각하면 된다..

    module : neural network의 layer라고 생각하자.

     

    pytorch와 tensorflow에 큰 차이는 graph가 dynamic 하다는 것이다.

     

    tensorflow (sataic computational graph)는 그래프를 명시적으로 구성하고 그 다음 실행하는 반면

    pytorch(dynamic computational graph)는 forward pass 할 때 마다 그래프를 다시 구성한다. 

     

    즉 training 할때마다 새로운 그래프를 만들기 때문에 코드를 깔끔하게 구성할 수 있다. optimizer을 이용해

    learning rate 또한 쉽게 설정 가능하다. 

     

    쉽게 활성화 함수를 불러 올 수 있다.

     

    Adam을 사용한 것이다.

    data를 불러오는 과정 또한 간단하다.

     

    그래프 최적화와 관련된 얘기다. dynamic에서는 하기 힘들다.

    tensorflow는 조건문을 만들기가 힘들다.

     

    pytorch는 그냥 for문을 이용하면 된다. 파이썬 처럼 말이다.

     

    하지만 tensorflow는 명시적으로 loop를 넣어주어야 한다

     

    image captioning 에서 dynamic graph가 필요하다. RNN에서도 보통 dynamic graph를 필요로 한다.

     


    Caffe2

     

    caffe2는 처음 들어본 프레임워크이다. 유독 CS231n 에서는 caffe를 많이 언급하는 것 같다.

     

    간단히 C++로 작성되어있으며

     

    python으로 모델을 training 하고 serialize와 deploy는 python 없이 진행 가능하고

     

    ios/ Android에서도 작동하는 프레임워크다.

     

    FaecBook에서 pytorch(Research) + Caffe2(Production)을 이용하여 실제 제품을 만든다고 한다.

     

    다음시간에는 CNN Architecture에서 배운다.

     

    댓글

Designed by Tistory.