news

Featured

반도체 제조에서 AI활용을 위한 플랫폼 탐구

2021.11.22

|

 

Series 1. 머신러닝을 위한 플랫폼

 

아이브이웍스는 에피텍시 기술에 인공지능(AI)을 접목시켜 차별화된 고품질 에피웨이퍼 파운드리 서비스를 제공합니다. 본 연재에서는 반도체 제조와 AI 시리즈를 데이터, 모델, 플랫폼으로 나눠 각 세편에 걸쳐 발행합니다. DOMM AI Epitaxy System 연구에 직접 참여 중인 연구원 시각에서 전하는 화합물 반도체 제조는 어떤 모습일까요.

 


 

메신저 앱 ‘카카오톡’이 어떤 원리로 작동되는지 궁금한 적 있나요? 살며시 살펴보면 내 스마트폰에 설치된 카카오톡 앱과 친구의 카카오톡 앱을 연결해 주는 수많은 컴퓨터들이 카카오 회사의 데이터 센터(서버 컴퓨터와 네트워크 회선 등을 제공하는 건물이나 시설)에서 열심히 일을 하고 있답니다. 이 컴퓨터들에서는 메시지를 받아서 처리하고, 상대방을 찾아서 전달해 주는 일을 하는 ‘응용 소프트웨어(applications software)’가 돌아가고 있습니다. 응용 소프트웨어가 돌아갈 수 있도록 기반을 제공하는 컴퓨터와 소프트웨어의 결합을 보통 ‘플랫폼’이라고 합니다. 기차가 왔다 갔다 하는 승강장을 영어로는 플랫폼(platform)이라고 하는데 KTX, 새마을, 무궁화 등등의 다양한 기차로 생각할 수 있는 응용 소프트웨어가 원활하게 오갈 수 있도록 돕는 것이 플랫폼의 역할입니다.

 

AI를 개발하기 위해서는 데이터를 수집하고, 사전 처리하고, 분석하고, 학습하여 모델을 만들고 튜닝 하는 작업을 계속적으로 반복하게 됩니다. 따라서 업무 효율성을 높이기 위해서는 자동화가 필수적이며, 자동화된 응용 소프트웨어가 돌아갈 수 있도록기반을 제공해 주는 플랫폼의 역할은 매우 중요합니다. 이번 글에서는 머신러닝 플랫폼으로 많이 쓰이는 ‘쿠버네티스(kubernetes)’에 대해서 살펴보려고 합니다.

 

ⓒ Kubernates

전 세계가 열광하는 강력한 플랫폼 쿠버네티스 (Kubernetes)

네이버나 카카오 같은 회사의 데이터 센터에도 수만 대의 컴퓨터가 돌아가고 있지만, 세계적으로 수십만 대의 컴퓨터를 운영하는 극소수 기업 중 하나인 구글은 응용 소프트웨어와 컴퓨터를 더 잘 배치하고 관리하는 방법이 필요하다고 생각했습니다. 그래서 ‘보그’나 ‘오메가’와 같은 내부 시스템을 개발해서 사용하다가 2014년에 쿠버네티스를 공개(open source) 했습니다. 쿠버네티스는 조종사, 조타수를 뜻하는 그리스어로 응용 소프트웨어를 쉽게 배포하고 관리할 수 있게 해주는 소프트웨어 시스템입니다.

 

우리는 왜 쿠버네티스가 필요한가

첫째로, 예전에는 거대한 하나의 응용 소프트웨어로 시스템이 개발되었는데, 최근에는 거대한 하나의 응용 소프트웨어를 쪼개서 작은 응용 소프트웨어 단위로 시스템이 개발되고 있습니다. 여기서 전자를 ‘모놀리스 응용 소프트웨어’라고 하며, 후자를 ‘마이크로 서비스’라고 부릅니다. 모놀리스 응용 소프트웨어의 경우에는 작은 부분의 수정이 있어도 전체 응용 소프트웨어를 새로 만들어서 컴퓨터에 올려야 하고(deploy), 세월이 지남에 따라 구성 요소간의 경계가 불명확해지고 상호의존성의 제약이 생기면서 시스템의 복잡성이 증가되는 문제가 있었습니다. 또한, 사용자가 늘어났을 때 전체 시스템을 확장하는 데 한계가 있습니다. 그래서 마이크로 서비스라는 독립적으로 컴퓨터에 올릴 수 있는 작은 구성 요소로 개발하는 것이 유행이 되었습니다.

 

시스템이 분할된 구성요소로 이루어져 있기 때문에 일부분의 수정이 있다면 해당되는 마이크로 서비스만 배포(deploy) 하면 됩니다. 또한 특정 구성요소의 사용량이 증가하면 해당하는 구성요소만 지정하여 확장할 수 있습니다. 다만, 마이크로서비스의 경우에는 각각의 구성 요소를 어디에 배포할지 결정하는 문제가 점점 어려워질 수 있습니다.

 

ⓒ 아이브이웍스 (IVWorks)

둘째로, 응용 소프트웨어에 일관성 있는 환경을 제공하기 위해서입니다. 응용 소프트웨어를 개발하는 프로그래머는 먼저 자신의 컴퓨터에서 개발을 하고, 일련의 과정을 거쳐 실제 서비스를 하는 컴퓨터에 응용 소프트웨어를 배포하게 됩니다. 그런데 실제 서비스를 하는 컴퓨터의 환경이 개발자 컴퓨터의 환경과 다르다면 문제가 발생할 수 있습니다. 또한 실제 서비스를 하는 컴퓨터의 환경이 운영을 하면서 변하기도 합니다.

 

하지만 컴퓨터의 운영체제, 라이브러리, 시스템 구성, 네트워킹 환경, 기타 모든 것이 동일한 환경을 제공하면 문제의 소지가 적을 것입니다. 또한 운영을 하면서도 컴퓨터 환경이 크게 변하지 않는다면 문제의 소지는 줄어들 것입니다.

 

셋째로, 지속적인 배포로 업무방식이 바뀌었습니다. 과거에는 개발팀이 응용 소프트웨어를 만들면, 운영팀이 이를 받아서 컴퓨터에 배포하고 관리하였습니다. 그런데 최근에는 개발팀이 응용 소프트웨어를 컴퓨터에 배포하고 관리하는 것까지 담당하는 것이 더 효율적이라고 생각하게 되었습니다. 하지만 개발팀은 실제 서비스가 이뤄지는 컴퓨터와 인프라의 이해가 부족한 경우가 있습니다. 따라서 컴퓨터와 인프라를 잘 알지 못하더라고 운영팀을 거치지 않고 개발자가 응용 소프트웨어를 배포할 수 있는 방법을 찾게 되었습니다.

 

쿠버네티스와 같은 시스템을 통해 이 모든 변화와 문제를 해결할 수 있습니다. 쿠버네티스는 마이크로 서비스를 어디에 배포할지 결정하고 관리해 줍니다. 또한 응용 소프트웨어에 일관된 환경을 제공합니다. 마지막으로 물리적인 리소스를 가상화하여 이를 응용 소프트웨어를 배포, 실행을 위한 플랫폼으로 제공하여 개발팀이 응용 소프트웨어를 지속적으로 배포하고 관리할 수 있게 도와줍니다.

 

응용 소프트웨어를 효율적으로 배포하는 방법, 컨테이너(Container)

 

컨테이너라고 하면 어떤 것이 생각나나요? 배 위에 가득 실린 선박 운송용 컨테이너를 떠올릴지도 모르겠습니다. 마이크로 서비스가 유행이 되면서, 수출 기업들이 제품을 운송용 컨테이너에 담아 보내는 것처럼 IT 개발자들도 응용 소프트웨어를 컨테이너에 담아 서비스하기 시작했습니다. 마이크로 서비스를 위해 개발자는 먼저 응용 소프트웨어를 컨테이너에 담습니다. 한 개 이상의 컨테이너를 묶어서 컴퓨터에 배포하여 실제 서비스를 하게 됩니다.

 

ⓒ Google Cloud

컨테이너는 응용 소프트웨어과 응용 소프트웨어가 필요로 하는 라이브러리 및 종속 항목을 함께 패키지로 묶어서 격리된 상태로 실행될 수 있게 해줍니다. 이러한 격리를 통해 리눅스, 윈도우즈, 가상머신, 데이터 센터, 클라우드에서부터 개발자의 맥북까지 어떤 환경에서든 컨테이너 기반 응용 소프트웨어를 쉽게 지속적으로 배포할 수 있습니다. 또한 컨테이너화를 통해 업무 영역을 확실하게 구분시킬 수 있습니다. 즉 각각의 개발자는 다른 응용 소프트웨어를 신경 쓰지 않고, 담당하는 응용 소프트웨어의 로직과 종속 항목에 초점을 맞춰 개발할 수 있습니다. 운영팀은 세부적인 사항은 생략하고 전체적인 배포 및 관리만 담당하면 됩니다. 앞서 설명한 쿠버네티스는 바로 컨테이너화된 응용 소프트웨어를 쉽게 배포하고 관리할 수 있게 해주는 소프트웨어 시스템입니다.

 

컨테이너가 왜 필요할까요?

 

컨테이너(Container)를 통해서 동일한 컴퓨터에서 다수의 응용 소프트웨어를 실행할 수 있으며, 동시에 각각의 응용 소프트웨어에 최적화된 개별적인 환경을 만들어주기 위해서입니다. 즉 개발자에게 다른 응용 소프트웨어로부터 논리적으로 격리된 환경을 제공하기 위해서입니다. 같은 역할을 하는 것으로 가상머신(Virtual Machine)이 있으나 컨테이너가 훨씬 가볍게 구동이 됩니다. 혹시 단종된 게임기에서 돌아가는 게임을 해보기 위해서 에뮬레이터(고전 게임을 컴퓨터에서 즐길 수 있도록 가상으로 구현해 내는 프로그램)를 사용해 본 적이 있다면 가상머신이 얼마나 느린지 알고 있을 것입니다.

 

컨테이너는 하드웨어 스택을 가상화시키는 가상머신과 달리, 운영체제 수준에서 가상화를 하면서 다수의 컨테이너를 OS 커널에서 직접 구동한다. 때문에 컨테이너가 훨씬 가볍고, 시작이 빠르며 OS 전체 부팅보다 메모리 차지가 적다. ⓒ Google Cloud

 

쿠버네티스를 사용하는 두번째 이유처럼 일관된 환경을 제공하기 위함도 있습니다. 일관된 환경을 통해서 환경 차이에서 발생하던 버그를 줄일 수 있고, 신규 기능을 개발하는 데 시간을 쓸 수 있습니다.

 

구글에서 카카오, 그리고 아이브이웍스까지…

 

구글에 따르면, ‘Gmail’에서 ‘YouTube’, ‘구글 검색’에 이르기까지 구글의 모든 제품은 컨테이너에서 실행됩니다. 구글은 매주 수십억 개가 넘는 컨테이너를 생성합니다. 내부 도구의 설계 소스를 쿠버네티스 프로젝트로 공개한 것까지 공유의 사례는 다양합니다. 구글은 모든 응용 소프트웨어가 컨테이너로 만들어지며, 쿠버네티스 프로젝트의 시초라고 볼 수 있습니다.

 

카카오톡으로 유명한 카카오도 많은 서비스가 컨테이너에서 실행되고 있습니다. LG전자 머신러닝 플랫폼도 컨테이너 기반으로 쿠버네티스로 관리되고 있습니다. 이 밖에도 수많은 회사가 컨테이너와 쿠버네티스를 도입해서 응용 소프트웨어를 위한 플랫폼으로 사용하고 있습니다.

 

IVWorks AI 에피텍시 플랫폼 DOMM™의 쿠버네티스 플랫폼 구축 화면 ⓒ IVWorks(아이브이웍스)

아이브이웍스에서도 반도체 분야의 플랫폼(DOMM™)을 만드는데 컨테이너와 쿠버네티스를 적극적으로 활용하고 있습니다. 응용 소프트웨어를 컨테이너화하여 운영하고 있고, 위의 그림처럼 클라우드 서비스인 아마존 Amazon Web Services(AWS)에 쿠버네티스 플랫폼을 구축하여 컨테이너를 관리하고 있습니다. AWS의 완전 관리형 쿠버네티스 서비스인 Elastic Kubernetes Service(EKS)를 도입하여 관리 부담은 줄이면서 다중 Availability Zone을 통해서 고가용성(high availability)을 확보했습니다. 또한, AWS 자동 스케일링(Auto Scailing)을 적용하여 급증하는 워크 로드(workload)에도 대응할 수 있게 확장성을 확보했습니다. 마지막으로 EKS 로그 수집에는 Amazon CloudWatch를 적극적으로 활용하고 있으며, EKS 모니터링에는 사실상 표준으로 자리잡은 Grafana와 Prometheus를 사용하고 있습니다.

 

쿠버네티스에서 머신 러닝 작업들을 쉽게 처리할 수 있도록 만들어진 도구도 있습니다. 다음 글에서는 쿠버네티스 환경에서 쉽고 직관적이게 머신러닝 워크플로우를 배포할 수 있는 ‘쿠베플로우(Kubeflow)’에 대해 알아보겠습니다.

 


 

Jun-Suk Chang l Artificial Intelligence team

 

참고문헌

  1. 마르코 룩샤(2020), 쿠버네티스 인 액션
  2. 쿠버네티스란 무엇인가?[웹사이트]. (2020.7.14).
  3. Google의 컨테이너[웹사이트]. (2020.7.14).
  4. if (kakao) dev 2019 (2) – 카카오에서 컨테이너를 사용하는 방법[웹사이트]. (2020.7.14).
  5. 문효준, LG전자의 컨테이너 기반 기계 학습 활용 사례[Youtube]. (2019.10.13).