본문 바로가기
딥러닝\머신러닝

[pytorch vs. Tensorflow] 딥러닝 프레임워크? 어떤 차이가 있을까?

by 인포메틱스 2024. 4. 4.
반응형

 

1. Intro

 python으로 Deep learning 연구를 할때, 대부분의 사람들이 pytorch, Tensorflow를 이용합니다. 저는 pytorch를 이용합니다. 그런데 이 둘의 차이점에 대해서 궁금해 보신적이 없나요? 저도 항상 궁금하던 찰나에 외국 블로그를 참고하여 정리해 보았습니다.

 

2. pytorch vs. Tensorflow

 

 pytorch는 Facebook 그룹이 제작을 하였고,  2017년 github를 통해 open-source로 공개되었습니다. Tensorflow는 구글에서 만들어졌고, pytorch보다 더 일찍인 2015년에 open-source로 공개가 되었습니다. 그리고 구글에서 제작하다보니 안드로이드를 포함한 다양한 장치와의 호환성으로 인해 많은 스타트업이나, 조직에서 사용된다고 알려져 있습니다.

 

2-1. pytorch의 장점과 단점

pytorch의 장점

- python 코드와 유사합니다.

- 동적 그래프 (autograd)를 사용하기 때문에 직관적이고 유연합니다.

- 간단하고 빠른 편집으로 연구 프로토타입을 빠르게 개발하는데 유리함(pytorch는 많은 프로젝트에서 구현이 되어있음.).

- 커뮤니티 지원 및 문서로 잘 정리가 되어있음.

- 오픈 소스 소프트웨어

 

pytorch의 단점

- 배포가 어려움 Tensorflow에 비해 실제 생산 환경으로 배포할 때 더 복잡할수가 있음.

- Tensorflow에 비해 상용 API 지원이 적을 수 있음.

 

2-2 Tensorflow의 장점과 단점

Tensorflow의 장점

- 단일 cpu 환경에서부터 대규모 분산 시스템까지 다양한 환경에서 운영될수 있음. 그렇기에 대규모 데이터셋과 복잡한 모델에 적합함.

- Tensorboard를 활용하여 훈련을 시각화함.

- 간단한 모바일 지원 배포가 편함.

- 오픈 소스 소프트웨어

- 커뮤니티 지원 및 문서로 잘 정리가 되어있음.

 

Tensorflow의 단점

- 정적 그래프 사용법이 복잡하고 학습 곡선이 높을 수 있음 ( 최근 버전(2.x)으로 올라와서 동적 그래프도 허용)

- 디버깅 접근 방식

- 신속한 변화로 기능들이 자주 변경됨.

 

2-3. 차이점?

 

정적 그래프와 동적 그래프의 차이는 뭘까?

정적 그래프 (Static Graph)

 정적 그래프를 이해하려면, 미리 계획된 여행 일정을 생각해보면 됩니다. 여행 가기 전에 모든 것을 계획하는 것이라고 생각하면 되고, 마치 패키지 여행을 가서 중간에 일정들을 마음대로 못바뀐다고 생각하면 됩니다. 

동적 그래프 (Dynamic Graph)

 즉흥적인 여행이라고 생각하시면 됩니다. 코드를 실행하는 순간 모델이 어떻게 동작할지를 결정합니다. 이러한 방식은 많은 자유도와 유연성을 제공합니다.

 여기서 그래프를 구성하는 요소들은 다음과 같습니다.

노드(Node) 또는 정점(Vertex), edge, 가중치 (Weight), 방향 (Directed), 경로 (Path), 사이클 (Cycle)

 

  사실 동적과 정적 그래프를 100%이해는 못하겠으나, 동적 그래프와 정적 그래프의 차이를 단순하게 이야기해 보자면,  pytorch의 경우 모델을 돌리면서 weight를 꺼내 볼수 있지만, Tensorflow에서는 중간에 멈추고 보지 못함.

 

3. 결론

 

딥러닝 을 위한 최고의 프레임워크는 다양한 기준에 따라 달라집니다. 

 

Tensorflow

- Tensorflow는 개발된 생태계, 업계에서 강력한 지원, 상당한 규모의 사용자 기반을 가지고 있습니다. 다양성을 높이히 위해 높은 수준의 API(Keras)와 낮은 수준의 API 모두 지원됩니다.

- Tensorflow에서 CPU, GPU, TPU 를 포함한 여러 플랫폼에 걸친 배포를 완벽하게 지원하기 때문에, 연구 및 생산 애플리케이션 모두에 사용될수 있습니다.

- Tensorflow는 분산 학습, 모델 제공, 모델 최적화 기능을 제공하여 확장성과 효과적인 배포가 가능함.

 

Pytorch

- 사용자 친화적인 인터페이스로 인해 pytorch는 특히 연구자들 사이에서 인기가 많습니다. Tensorflow에 비해 더 많은 유연성과 쉬운 디버깅이 가능합니다.

- pytorch는 연구 커뮤니티에 중점을 두고 혁신적인 기술과 이미 훈련된 모델을 제공합니다.

- python에 익숙한 사람들이 쉽게 pytorch를 배울 수 있습니다.

 

 


 찾아보면서 Tensorflow가 정적 그래프에서 동적 그래프를 지원하는 것을 보면 더 유연하게 변하는 듯합니다. pytorch로 앞으로 단점을 보완 하면서 바뀌겠죠.

 사실 전문가가 아닌 이상 Tensorflow와 Pytorch사이 차이점을 명확하게 느끼기 힘들다고 생각합니다. 저는 전문가가 아니라 연구자여서 그런지 pytorch를 쓰는데 아직까지 차이를 체감하지 못하고 있습니다.

 

 

 

728x90
반응형

댓글