본문 바로가기

AI Feed
Tech & Product/AI, 더 쉽게

인공지능 프레임워크, 좀 더 알아보자 : 텐서플로우 (Tensorflow) 편

여러분은 AI 개발 또는 학습이라는 말을 들으면, 어떤 프레임워크를 먼저 떠올리시나요? 머신러닝, 딥러닝 프레임워크는 아주 다양하고, 개발 목적, 개발 환경, 또는 개발자의 습관이나 취향에 따라 각기 다양한 프레임워크들이 쓰이고 있습니다. 그래서 어떤 프레임워크가 정답이라고 이야기하기에는 좀 어려운 부분이 있는데요. 그래서 자주 언급되는 프레임워크 5종에 대해 간략히 소개해 드린 적도 있었지요.

👉머신러닝, 딥러닝의 프레임워크, 이렇게 많았어?

 

출처 : Tensorflow Blog - What’s new in TensorFlow 2.12 and Keras 2.12?


그중 가장 많은 언급량, 높은 인기를 자랑하는 프레임워크는 단연 텐서플로우(Tensorflow)입니다. Python을 기본으로 하고 있지만, C++, Java, Julia 및 JavaScript 등 다른 언어로도 접근할 수 있는 프레임워크이기에, 각자 다른 언어를 활용하고 있는 개발자들 간의 협업까지 가능한, 유연한 프레임워크인데요. ‘즉시 실행’ 모드를 담은 2.0 이후 버전에 대한 호응도가 높아, 점유율 1위를 유지하고 있습니다.

이전에 프레임워크들을 짧게 소개하면서, 자주 언급되는 프레임워크 몇몇에 대해 좀 더 알아보고 싶다는 이야기를 한 적이 있었는데요. 오늘은 이 텐서플로우에 대해 이야기해 볼까 합니다. 텐서플로우를 시작으로, 케라스, 파이토치 등 이름은 많이 들었지만, 어떤 프레임워크인지 정확히 파악이 어려웠던 'AI알못’이 계시다면 이번 콘텐츠를 계기로 좀 더 넓은 이해가 가능하시지 않을까 싶네요.

 

 


[텐서플로우가 뭔가요? 다시 설명해 주세요! ]

텐서플로우는 구글 브레인(Brain) 팀이 개발하여 2015년에 처음 세상에 공개되었습니다. 수치 계산과 대규모 머신러닝을 위한 오픈소스 라이브러리인데요.파이썬 또는 자바스크립트를 사용해 애플리케이션을 구축하기 편리한 프론트엔드 API를 제공하고 있습니다. 참고로 애플리케이션을 실행하는 데는 고성능 C++를 사용합니다. 또한 학습에 사용한 모델로 대규모 프로덕션을 할 경우를 예측할 수 있도록 지원하고 있답니다.

텐서플로우 애플리케이션은 클라우드 클러스터, iOS, 안드로이드 기기, CPU, GPU 등 거의 모든 형식의 데이터센터에서 실행이 가능하기 때문에 사용성뿐만 아니라 편의성 부분에서도 높은 점수를 줄 수 있는 프레임워크입니다. 만약 구글 클라우드를 사용한다면 구글의 맞춤형 텐서플로우 프로세싱 유닛(TPU) 실리콘에서 텐서플로우를를 실행해 더 빠른 속도로 개발, 학습을 할 수 있어요. 텐서플로우에 의해 생성된 결과 모델은 대부분 기기에 배포되어 예측 작업을 처리할 수 있게 됩니다.😊

 

 

2019년에 2.0 버전이 출시되면서, 텐서플로우는 파이토치 등 다른 프레임워크와의 경쟁에서 압도적으로 우위를 점하게 되었는데요. 모델 학습에 케라스(Keras) API를 사용하였는데, 케라스 API는 다른 프레임워크에 비해 비교적 단순하여 작업을 더 쉽게 할 수 있도록 돕습니다. 새로운 API 덕분에 분산 학습이 쉬워진 데다, 텐서플로우 라이트(TensorFlow Lite)를 통해 이전보다 더 다양한 플랫폼에 모델을 배포할 수 있게 되었어요. 학습된 모델은 REST 또는 gRPC API를 사용해 도커 컨테이너를 통해 서비스 형태로 예측을 수행하는 데 사용할 수 있는데요. 더 고급 예측 시나리오에서는 쿠버네티스를 사용할 수 있습니다.

구글은 텐서플로우를 사용해 프로덕션 배포의 100%를 실행하고 있다고 해요. 그렇다면, 텐서플로우가 감당할 수 있는 사용자 규모가 적어도 구글이 다루는 빅데이터, 전 세계를 커버한다는 추측이 가능한데요. 텐서플로우의 안정성을 확인해 볼 수 있는 거죠.😮

 

 

 

[ 텐서플로우는 거의 모든 프로젝트에 활용할 수 있다, 단, 초보자 빼고(!) ]

 

앞서 텐서플로우에 대해 다시 설명드릴 때, 대부분의 데이터센터에서 사용할 수 있다는 점을 말씀드렸어요. 그 말은, 사용의 편의성이 뛰어나다는 이야기가 될 수 있지만, 그 모든 기기에 대한 이해와 지식이 있어야 하는, 어느 정도 숙련된 개발자여야 한다는 의미가 되기도 하는데요.

텐서플로우를 사용해본 경험이 있더라도, 만약 2015년 출시된 텐서플로우용으로 작성된 코드에서 텐서플로우 2.0의 새로운 기능을 최대한 활용하려면 코드를 수정해야 합니다. 간단한 경우도 있지만 상당한 재작업이 필요한 경우도 있어요. 이외에도 여러 가지 측면에 있어, 텐서플로우는 “초보자가 접근하기에 어렵다!”라는 평을 들어온 바가 있습니다. ‘텐서플로우 초보자’는 있을 수 있으나, ‘인공지능 초보자’🐣는 텐서플로우를 사용하기 어렵다는 것이죠.

 

출처 : Sementic Scholar - Time-Sensitive Multi-Dimensional Recommender in database system

 

그도 그럴 것이, 텐서플로우는 딥러닝 모델을 만드는 데 기초 레벨부터 직접 작업해야 하는 프레임워크입니다. 텐서플로우에 대해 좀 더 이해해보면 이를 더 잘 이해할 수 있게 되는데요. 텐서플로우의 ‘텐서(tensor)’는 다차원 데이터 배열을 의미합니다. 텐서플로우에서 개발자는 데이터 플로우 그래프를 만들 수 있는데, 이 그래프는 데이터가 그래프상에서 또는 일련의 처리 노드 상에서 어떻게 이동하게 될지를 설명합니다. 이때 그래프에서 각 노드는 수학 연산을 나타내게 되는데요. 노드 간의 각 연결 또는 가장자리가 바로 이 ‘텐서’, 다차원 데이터 배열입니다. 📈

이 데이터플로우 그래프를 직접 만들어서 학습시키는 과정을 능숙하게 할 수 있으려면, 아무래도 인공지능 개발 경험이 있어야 할 거예요. 텐서플로우의 단순 사용법만 알아서는 많은 예제를 참고하더라도 판단이 어려운 지점에 도달할 수 있겠지요. 그 때문에 초보자가 사용하기 어려울 수 있다는 이야기가 종종 나오게 되었습니다.

 

 

구글도 이 점을 인지하고 있는 것 같습니다. 2015년 첫 출시 이후 2019년에 2.0 버전을 내놓는 동안, 초보자도 쉽게 활용할 수 있도록 만들기 위한 노력을 끊임없이 기울여 왔거든요. 사용성 개선은 물론이고, 케라스와의 결합을 대안으로 내놓은 것도 그 일환이라 할 수 있겠습니다. 향후 텐서플로우의 다음 버전이 나오게 되면, 초보자도 더 쉽게 접근할 수 있는 프레임워크가 될지 기대되는 부분이네요. 🤔

 

 

 

[ 세상을 'AI롭게' 만든 구글의 선택 ]

 

구글에서 나온 프레임워크, 라이브러리, API 등이 오픈소스로 공개되는 일은 자주 있었습니다. 구글에서 처음으로 오픈소스 전략을 취했을 때는 전 세계 여론이 시끌시끌했었는데요. 이제는 제법 익숙해져서, “이번에도 오픈하나?” 하는 짐작도 해볼 수 있게 됐죠. 🥸

텐서플로우도 오픈소스로 공개된 프레임워크입니다. 무려 머신러닝에 핵심이 되는 프레임워크이기에, 2015년 공개 당시에도 ‘오픈소스’라는 사실에 대해 여러 가지 이야기들이 있어 왔는데요. 외부 개발자들도 텐서플로우를 공짜로 쓸 수 있을 뿐 아니라 프로젝트에 참여해 수정 작업까지 할 수 있게 됐다는 점에서 구글의 결정을 반기는 사람들이 참 많았어요.

구글이 오픈소스 전략을 취할 수 있는 데에는 ‘자신감’도 작용했을 거예요. 텐서플로우를 개방하더라도 데이터와 분석 능력 등 기술 경쟁 면에서 전혀 문제가 되지 않는다고 판단하는, 그런 자신감이 있었던 거죠. 텐서플로우를 통해 구글 알고리즘을 알게 되었어도, 금방 머신러닝 작업을 잘할 수 있는 건 아닐 테니까요. 🤔

 

 

마치 예전 스마트폰 시장에서 안드로이드가 그러했듯이, 텐서플로우의 오픈소스 전략은 제대로 작동했습니다. 전 세계에 흩어져 있는 머신러닝 개발자들이 구글 생태계로 유입된 것이지요. 그 결과가 구글에게만 이로웠던 것은 아닙니다. 텐서플로우라는 유용한 도구를 활용해서, AI 기술은 급속도로 발전하기 시작했고, 최근에는 AI를 잘 모르는 사람도 ‘챗GPT’는 알 정도의 성과와 명성을 얻어 낼 수 있었지요. 미용, 의료, 제약 등 일상에서 수많은 데이터와 테스트가 필요한 분야에서도 AI를 활용하기 위한 준비를 하고 있으며, 그 기반에는 텐서플로우라는 프레임워크도 기여하고 있고요. 👏

머신러닝, 딥러닝에는 수많은 테스트, 학습, 적용 등의 과정이 수반되니 그에 관한 데이터 수집에서도 이점이 있습니다. 당연히 구글에게 가장 크게 도움이 될 부분이겠지만, 텐서플로우에 대한 수많은 예제, 정보들을 공유하고 있는 개발자들의 네트워크를 생각하면, AI 개발자들에게도 이로운 부분일 거예요. 그뿐만 아니라, 저처럼 이제 막 AI를 알아가고 있는 사람들에게도 충분한 정보가 제공되고 있지요. 

 

 

 

 

2015년, 텐서플로우를 공개할 당시, 구글은 좀 더 많은 연구자가 텐서플로우를 개선하고 새로운 방식으로 적용하는 아이디어를 내놓길 기대하고 있다는 이야기가 나오기도 했습니다. 구글은 기술을 모두에게 열어둠으로써, 그 기술이 세상을 이롭게 변화시키고, 그 변화가 구글에게 이롭게 돌아오는 선순환을 잘 알고 있겠지요. 그것이 AI에도 똑같이 적용되어, 더 AI로운 세상을 만드는 것이 구글을 포함한 모두에게 이로울 것이라는 판단을 내렸을 것입니다. TEN 역시 AI로운 세상을 만드는 선순환 구조에 기여할 수 있도록, 다양한 기회를 만들어 가겠습니다. 😉