딥러닝 입문기(1) - tensorflow? pytoch? 그게 뭔데?

전지환·2024년 4월 24일

딥러닝입문기

목록 보기
2/5

https://www.assemblyai.com/blog/pytorch-vs-tensorflow-in-2023/
해당 아티클을 참고해서 작성하였습니다.

1. 딥러닝과 머신러닝


딥러닝이 무엇인지 알기 위해서는 우선 머신러닝에 대한 이해가 필요하다. 머신러닝은 컴퓨터가 어떠한 데이터셋에 대해서 명시적으로 프로그래밍되지 않은 상태에서 학습하는 것을 말한다. 쉽게 말하자면 데이터를 기반으로 어떤 상황에 대한 예측 및 분류를 한다고 이해하면 된다.

딥러닝은 머신 러닝의 한 분야라고 볼 수 있으며 단순한 암기가 아닌 학습을 위해 인공 신경망을 구성하여 복잡한 데이터를 학습 할 수 있도록 하는 인공지능 기술입니다.

머신러닝이 상대적으로 다양한 분야에서 사용되며 딥러닝은 주로 복잡한 알고리즘이 필요한 곳, 예를 들어 자연어 처리, 이미지 인식, 음성 인식 등에서 주로 사용됩니다.

2. 머신러닝 프레임워크(tensorflow, pytorch)

딥러닝을 기술적으로 쉽게 구현하기 위해서는 프레임워크의 도움이 필요합니다. 위의 두 프레임워크 외에도 다양한 프레임워크들이 있습니다. 파이썬에선 numpy와 같은 라이브러리가 존재하지만 딥러닝을 다루는데는 약간의 문제점이 있습니다. 바로 연산에 cpu를 사용한다는 것이죠, 단순한 수학적인 계산을 수행할 때는 별다른 문제가 없지만 복잡한 구성의 머신러닝을 수행하는데는 gpu 연산이 필수적입니다. gpu 연산을 도와줄 수 있는 대표적인 두 프레임워크를 비교해보며 실제 프로젝트에 적용할 프레임워크를 선택해보겠습니다.

1) tensorflow

tensorflow는 Google에서 개발한 프레임워크로 c++로 작성되었으며 python 외에도 go, c++, java 등의 언어에서도 사용이 가능합니다. 수치 계산, 대규모 머신 러닝, 딥러닝, 기타 통계 및 예측 분석 워크로드 등 다양한 분야에서 사용될 수 있으며 자연어 처리 등을 위한 심층 심경망 학습에도 특화되어 있습니다.

Uber, Airbnb, Twitter, Intel, NVIDIA 등 다양한 기업에서 실제로 사용하고 있으며 Google의 대부분의 서비스들은 tensorflow를 기반하여 만들어지고 있습니다. 또한 텐서플로우 lite와 같은 임베디드/IOT 기기들을 위한 적은 자원을 사용하는 버전도 존재합니다.

장점.

방대한 커뮤니티 - 상대적으로 오랜 시간이 지난 프레임워크이며 시장에서 점유율이 높은만큼 방대한 커뮤니티를 갖고 있습니다.
다양한 기능 및 편한 배포 - 평가 및 배포에 필요한 다양한 기능들을 제공하고 있으며 tensor-board와 같은 시각화 도구 또한 존재합니다.
확장성 - 설계된 모델의 확장성이 뛰어납니다. 대규모 어플리케이션과 적합한 기능을 갖고 있습니다.
고급 인터페이스 - Keras를 텐서플로우의 코어 라이브러리로 지원합니다.

Keras란?
Google 에서 자체적으로 개발한 오픈소스 심층 신경망 라이브러리로 심층 신경망의 빠른 실험을 위해 설계되었으며 최소한의 작업을 통해서 모듈을 생성하며 확장성이 매우 높다. 사용하기 쉬운 api를 통해 연구자들의 빠른 실험 및 개발을 지원합니다.

2) pytorch

pytorch는 페이스북의 인공지능 연구팀이 개발한 Torch 기반의 오픈소스 머신러닝 라이브러리입니다. Torch는 루아 기반의 프레임워크였지만 pytorch는 이름에서 알 수 있듯이 파이썬으로 개발된 언어입니다. 텐서플로우보다 1년정도 뒤늦게 시장에 나타났기 때문에 선점효과를 누리지는 못하였지만 이 프레임워크의 단순함과 빠른 속도는 점차 점유율을 늘려나갈 수 있는 기반을 마련하였습니다.

텐서플로우와 파이토치 두 모델 모두 버전2로의 업그레이드를 하며 텐서플로우는 파이토치를 닮아갔고, 파이토치는 더 발전하였습니다. 실제 사용환경에서 많은 변화들이 있었습니다. 많은 회사들이 실제 사용하는 프레임워크를 tensorflow에서 pytorch로 변경하고 있으며 현 시점에서 연구분야의 사용성이 가장 높은 프레임워크라고 할 수 있습니다.

장점.

낮은 러닝커브 - 파이썬으로 작성되며 가장 파이썬친화적인 프레임워크입니다. 간단한고 강력한 사용성과 개발자 커뮤니티의 강력한 지원으로 인하여 초보자에게 적합합니다.
사용 용의성 - build by run 과 같은 아키텍쳐는 작성해야하는 코드를 줄여주고 더 직관적으로 만들어줍니다.
동적 환경 - 동적 계산 그래프를 통해 모델에 대해서 즉각적인 피드백 반영이 가능합니다.

정리

두 프레임워크 모두 각기의 장점을 가지고 있었다. 텐서플로우는 강력한 확장성과 배포의 용의성을 바탕으로 실무에서 많이 사용되고 있으며 강력한 커뮤니티를 형성하고 있었고 파이토치는 단순한 사용성과 동적인 모델 변화부분에서 두각을 나타내며 연구분야를 점령했다.

내 선택은 pytorch였다. 당장은 많은 기업에서 텐서플로우를 사용하고 있지만 나에게 있어서 텐서플로우의 장점들이 당장 활용하기에는 아쉬운 부분들이 있었다. 파이썬에 익숙한 부분도 있었고 내게 머신러닝에 입문하는 부분에 있어서는 가이드라인이 많은 파이토치가 더 마음에 들었다!
다음장에서는 파이토치의 기본에 대해서 알아보겠다.

profile
언제나 탐구하는 개발자입니다.

0개의 댓글