[BoostCamp AI Tech / Day 11, PytTorch] 1~3강

newbie·2021년 8월 17일
0

(01강) Introduction to PyTorch

딥러닝 코드를 작성 시 하드코딩으로 모델을 구현할 수 있다.
하지만, 딥러닝 코드들을 조금 더 편하게 사용할수 있게 다양한 딥러닝 프레임 워크가 공유되어 있어서 조금의 검색만으로 원하는 결과를 구현할 수 있다.

그 중 이 과정에서 쓰일 PyTorch는 facebook에서 공개한 오픈소스로, 다양한 기능이 구현되어 있고, 관리가 잘 되며, 많은 업계에서 사용되기에 어떤 표준화된 언어로도 많이 사용된다.
그 외에도 Tensorflow와 keras가 있는데, keras는 Tensorflow로 흡수되었다.

결과적으로 현재는 Tensorflow vs PyTorch인데
아래 자료는 조금 이전 자료라 일부만 참고하면되는데, 이 두 프레임 워크의 가장 큰 차이는 computational graphs used이다.
역전파 시 우선 현재 데이터를 그래프로 표현하는데 두 프레임워크는 다음과 같은 차이가 있다.
1. Tensorflow: 그래프를 먼저 정의 후 실행 시점에 데이터 feed
2. PyTorch : 실행시점에 그래프를 정의(Dynamic Computational Graph,DCG)
물론 Tensorflow가 2.0이 출시되며, Tensorflow도 Define by Run 방식도 지원하게 되었으며, 결과적으로 Torch와 Tensorflow가 서로의 장점을 흡수하고 있지만, CGD방식은 이전부터 이어져오던 아이덴티티로 생각하면 될 거라 생각한다.

Torch의 큰 장점은 debug를 과정 중간중간에서 확인할 수 있는 점이다.
그 외에도 다양한 특징이 있다.

특히 각 학회에서 발표된 논문들의 프레임 워크들을 보면, Torch는 지속적으로 사용량이 증가하는 것을 볼 수 있지만, Tensorflow 정체되어 있거나 조금 감소한다.

아무래도 tensorflow는 구글 도구기에, Production, Cloud, Multi-GPU 측면에서 장점이 있어서 실제 제품 출시 영역에서 많이 사용되고,
Torch는 개발 과정에서 pythonic code라 Debug가 쉬워서 paper작성이나 논문 구현 과정에서 조금 더 장점이 있다.

결과적으로 둘 다 유용하지만, 현재는 학습 과정이니 Torch를 사용할 예정이다.

Torch를 정리해보면 "numpy array + autograd(자동미분) + function"이다.


(02강) PyTorch Basics

2강은 실습으로 colab을 통해 공부할 예정이다.

(03강) PyTorch 프로젝트 구조 이해하기

개발 단계에선 학습 과정과 디버깅 등을 지속적인 확인을 위해 노트북 형태의 환경을 사용하지만, 개발이 완료된 코드를 배포하거나 연구를 한 코드를 공유할 땐 재현가능성을 홗보하기 위해 프로젝트 단위로 공개를 한다.

따라서, 다양한 기능들을 OOP + 모듈 형태로 하여 Project 단위로 공개를하며, 이 프로젝트에는 다양한 템플릿이 존재하여 사용자 필요에 따라 수정하여 사용이 가능하다.

실행, 데이터, 모델, 설정, 로깅, 지표, 유틸리티 등 다양한 모듈들을 분리하여 프로젝트 템플릿화가 되어있다.

프로젝트 단위로 구성된 것을 colab에서 사용하려면 git clone을 통해 해당 repository를 다운받으면 된다.

그리고, 코랩이라는 가상 컴퓨터 환경을 원격으로 접속하여 사용하고 싶을 땐 여러 가지 방법이 있는데, 이것을 지원해주는 도구 중 하나로 ngrok이 있다.
가입을 하여 connected your account에서, authtoken 이후의 token을 가져와서 환경을 실행 시 입력으로 사용하고, 아래와 같이 ssh로 접속할 수 있도록 ngrok 토큰을 및 지정한 비밀번호를 입력으로 하여 외부에서 접속 가능한 환경을 구현한다(?)

이렇게 실행시키고 완료되면 아래와 같은 결과가 출력된다.

참고로 3강은 따로 작성해뒀지만, 이러한 프로젝트 형태의 데이터를 처음 해석해봐서 설명이 부족하고, 또한 나만이 이해할 수 있는 표현으로 작성해뒀기에 따로 찾아보는 것을 추천한다...

profile
DL, NLP Engineer to be....

0개의 댓글