본문 바로가기

AstraGo

머신러닝·딥러닝의 대표적 프레임워크 텐서플로우vs파이토치

 
 

알고리즘-ai개발
이미지 출처: 인공지능 신문

 

AI를 처음 시작하거나 관련 업무를 진행하게 되면, '텐서플로우' '파이토치'와 같은 단어들을 굉장히 자주 듣고 볼 수 있는데요. TensorFlow, PyTorch는 AI 업계에서 대표적인 프레임워크라고 할 수 있습니다.

 

아직까지 머신러닝·딥러닝에서 사용되는 프레임워크는 무엇인지 아직까지 낯설어하는 분들이 계실 수 있습니다. 그런 분들을 위해 이번 시간에는 가장 기본적으로 사용되는 이 용어들이 무엇인지, 어떤 차이점과 특징을 가지고 있는지 함께 짚어보는 시간을 가져봅시다!

 

AI 개발의 기본 뼈대, 프레임워크(FrameWork)

 
프레임워크-ai개발
이미지 출처: 크몽로그

프레임워크는 Frame(틀) + work(일)이라는 단어의 합성어인데요. 일 구조, 혹은 작업 구조라는 뜻과 같이 프레임워크는 어떠한 일을 처리하기 위한 구조를 제공합니다. 즉, AI를 개발할 때 미리 만들어진 ‘틀’ 안에서 개량할 수 있게끔 환경을 제공해 주는데요.

 

누군가가 이미 구현해놓은 환경을 바탕으로 AI를 조금 더 편하게 개발할 수 있게끔 도와주는 역할을 담당합니다. 프레임워크로 개발을 하면 우리는 일을 하기 위한 전체 구조와 동작 방식을 만들지 않아도 되는데요.

 

전체 동작 방식은 프레임워크가 제공하고 우리는 프레임워크의 일정 부분만 개발합니다. 크게는 ‘효율적’ ‘체계적’이라는 특징을 가지고 있습니다.


프레임워크의 두 가지 특징

ai개발-개발자
이미지 출처: AI타임스

1️⃣ 효율적: 기본적 틀이 존재하는 만큼 시간이 절약되고 작업 속도를 낼 수 있습니다.

 

2️⃣ 체계적: 체계적인 코드를 이용할 수 있기 때문에, 다른 사람이 만든 것이라도 쉽게 수정할 수 있습니다.

이러한 특징 때문에 많은 AI 개발자들에게는 프레임워크가 중요한 요소 중 하나입니다. 이제 프레임 워크를 알게 되었다면, 일반적으로 가장 대표적이라고 할 수 있는 두 가지 프레임워크는 무엇일까요?


 

 

구글의 오픈소스 텐서플로우(TensorFlow)

 
텐서플로우-구글오픈소스
이미지 출처:velog

 

TensorFlow는 구글 브레인 팀에서 개발한 프레임워크입니다. 오픈소스로 공개하며, 머신러닝과 딥러닝을 쉽게 사용할 수 있도록 다양한 기능을 제공하는데요. 주로 고수준 프로그래밍 언어로 알려진 Python 파이썬을 활용하여 연산처리를 작성할 수 있지만, 다른 언어들 또한 대부분 지원하고 있습니다.

 

TensorFow는 데이터 플로우 그래프(Data Flow Graph) 구조를 사용하는 특징이 있는데요. 각 노드 사이의 연결이나 다차원 배열 등을 의미하는 텐서 사이의 연결 관계를 풍부하게 표현할 수 있으며, 웹 기반의 대화형 대시보드인 텐서 보드에서 그래프 실행 방법에 대한 검사나 프로파일링도 가능합니다.


 
인공신경망-알고리즘
이미지 출처: Velog

TensorFlow는 주로 각종 신경망 학습에 사용됩니다. 인공지능과 딥러닝에서 가장 기본이 되는 이미지 인식이나 반복 신경망 구성, 기계 번역, 필기 숫자 판별 등에 활용되고 있습니다. 특히 대규모 예측 모델 구성에 뛰어나 테스트 단계부터 실제 서비스 구현까지 거의 모든 딥러닝 프로젝트에서 범용적으로 활용할 수 있습니다.

 

그리고, 지속적인 성능 개선과 지원에서 타 프레임워크보다 안정적이란 부분이 강점으로 꼽히는데요. 텐서플로우를 활용하면 개발자는 알고리즘의 세세한 구현보다 전체적인 논리 자체에 더 집중할 수 있게 되며 확장성 또한 뛰어납니다.

 

하지만, 딥러닝 모델을 만드는 데 기초 레벨부터 직접 작업해야 하기 때문에, 초보자가 입문하거나 사용하기에는 어려울 수 있습니다.

 

페이스북의 오픈소스 파이토치 (PyTorch)

 
파이토치-메타오픈소스
이미지 출처: medium

PyTorch는 페이스북의 AI 연구 팀이 개발한 파이썬 기반 프레임워크입니다. 텐서플로우와 다르게 절차가 간단하고 그래프가 동적으로 변화할 수 있으며, 코드 자체도 파이썬과 유사해 진입 장벽이 낮은 편입니다.

 

그래프를 만들면서 동시에 값을 할당하는 Define by run 방식으로 코드를 깔끔하고 직관적으로 작성할 수 있습니다. 파이토치는 텐서플로우랑 달리 메모리에서 연산을 하면서도 신경망 사이즈를 최적으로 바꾸면서 동작시킬 수 있어 학습 속도가 빠르다고 알려졌는데요.

 

 
파이토치텐서플로우그래프
이미지 출처: freejack

 

Numpy를 대체하면서도 GPU를 이용한 연산이 가능하며 유연하고 빨라, 20년도 이후부터의 프레임워크 점유율에서는 텐서플로보다 파이토치를 좀 더 선호하는 추세이기도 합니다.

 

 

*Numpy: 행렬이나 일반적으로 대규모 다차원 배열을 쉽게 처리할 수 있도록 지원하는 파이썬의 라이브러리

 

 
특장점
텐서 보드를 통해서 파라미터 변화 양상이나 DNN의 구조를 알 수 있음

파이토치는 간단하고 직관적으로 학습 가능하고, 속도 대비 빠른 최적화 가능

 

그렇다면, 텐서플로 VS 파이토치

무엇을 써야 할까?

 

 
파이토치텐서플로우
이미지 출처: kruschecompany

 

TensorFlow와 Pytorch는 둘 다 딥러닝 기계 학습 분야에서 굉장히 강력하고 인기 있는 프레임워크입니다. 그렇기 때문에 어느 한 쪽을 선택하는 것은 종종 개인의 필요나 특정 프로젝트의 요구 사항에 따라 결정됩니다.

 

텐서플로우는 풍부한 기능과 배포를 위한 강력한 도구로 인해 상업적 환경에서 더 널리 사용됩니다. 다양한 플랫폼에 쉽게 배포할 수 있고, 대규모의 데이터와 복잡한 인프라에서 모델을 훈련하고 배포하는 데 있어 큰 장점을 제공합니다.

 

파이토치는 직관적인 인터페이스와 동적 계산 그래프로 인해 현재 연구자들 사이에서 큰 인기를 얻었는데요. 이러한 특징은 연구와 무언가를 미리 실험해볼 수 있는 프로토타이핑을 더 쉽고 유연하게 만듭니다. 만약 새로운 모델 아키텍처나 연구 아이디어를 실험하는 학계의 연구자라면 파이토치를 선택하는 경향이 더 높은 것으로 알려졌습니다.


 

TensorFlow와 PyTorch 워크프레임의 가장 큰 강점은 결국 사전에 학습된 모델을 실무진이 본인 업무 및 기업 프로젝트 특성에 맞춰 몇 줄의 코드 입력만으로도 손쉽게 불러와 사용할 수 있다는 점입니다. 결론적으로 개발자가 텐서플로우와 파이토치 워크프레임을 사용하게 된다면, 사전에 학습된 모델을 프로젝트 성격과 특성에 맞추어 커스터마이징이 가능합니다.

 

또한 몇 줄의 코드 입력만으로도 쉽게 불러와 사용할 수 있어 용이합니다. 이렇게 최소한의 코드 작성으로 사전 모델을 사용자 맞춤형 모델로 변경하여 AI 딥러닝 및 학습에 적용이 가능한 것입니다.


AI 어플라이언스로 개발 효율을 높일 수 있는 기회를!

 
ai어플라이언스-씨이랩-astrago
▲  이미지 클릭 시 AI 어플라이언스 상세 페이지로 이동 ▲

 

astrago 솔루션에서도 위 프레임워크를 통해, 모델이 풍부한 리포지토리와 개발 프로세스를 간소화할 수 있도록 지원하고 있는데요.레임워크 및 라이브러리 제공 외에도 아스트라고가 필요한 이유는 무엇일까요? 우선 파이토치는 사용 시 모든 GPU의 메모리를 할당하도록 디폴트 되어 있습니다.

 

그렇기에 사용자의 GPU 공간이 충분히 확보되어 있지 않다면 인프라를 효율적으로 활용하는 데 어려움이 따르는데요. 이 때문에 AI 개발 시, 리소스 할당을 확인하기 위해 개발자는 명령어를 입력해서 할당량을 더블 체크해야 하는 불편함이 있습니다.

 

하지만 astrago가 제공하는 빌트인 이미지 기능(Pytorch, TensorFlow)을 사용하여 워크로드 생성 시 잡스케줄러가 효율적으로 GPU에 리소스를 자동 할당해 줍니다. , astrago로 인프라 효율과 업무 효율 두 마리 토끼를 모두 잡을 수 있는 것이죠.

 

씨이랩 AI 어플라이언스에서는 AI 인프라를 극대화할 수 있는 HW와 SW를 패키지로 제공하여 여러분들의 비즈니스 생산성을 높일 수 있습니다.