마이크로소프트의 올리브는 AI 애플리케이션 개발 툴 체인 분야에서 아주 유용한 존재로 부상할 가능성이 크다. 올리브의 정체와 활용 방법, 의의에 대해 알아본다.
마이크로소프트의 AI 행보가 클라우드를 넘어서고 있다. AI 가속기를 내장하는 데스크톱 하드웨어에 대한 준비 태세가 이를 보여준다. 마이크로소프트가 Arm 프로세서 SQ 시리즈를 생산한 퀄컴과 협력한 것만 봐도 명확하게 드러나는 부분이다. SQ 프로세서 라인업은 모두 윈도우에 컴퓨터 비전 기능을 구현하는 AI 가속기를 내장하고 있다.
AI 가속기가 새로운 것이 아니다. 본질적으로 그것들은 기존 GPU의 확장에 해당된다. 하지만 신경망을 가속화하도록 설계된다. 그것이 마이크로소프트가 채택한 명칭인 신경망 처리 장치(NPU)에 대한 설명이다.
NPU는 한 가지 중요한 요구에 대응한다. 오늘날 여러 최종 사용자는 보안 및 규정상의 이유로 클라우드 컴퓨팅을 이용하는 대신, 데이터를 자체 하드웨어에 보관하면서 로컬에서 AI 워크로드를 실행할 수 있기를 원한다. NPU 지원 하드웨어는 아직 드물지만, 이러한 가속기가 향후 프로세서 세대의 핵심 기능이 될 것으로 관측되고 있다.
하드웨어 아키텍처 전반에서 AI 애플리케이션 지원
ONNX(Open Neural Network Exchange)와 같은 여러 기술은 윈도우용 ONNX 런타임과 .NET을 비롯한 대부분의 윈도우 개발 플랫폼에서 ONNX를 지원함으로써 훈련된 모델을 이동할 수 있도록 도와준다. 그러나 대개 로컬 AI 애플리케이션에 대한 광범위한 지원, 즉 다양한 하드웨어 구현을 위한 다양한 툴 체인이 부족하다는 장애물이 여전히 존재한다.
SQ 시리즈 Arm NPU에서 추론하는 머신러닝 애플리케이션을 작성하려면 퀄컴의 개발자 프로그램에 등록해야 한다. 그래야 SDK 및 라이브러리에 액세스할 수 있다. 표준 .NET 배포나 윈도우 C++ SDK의 일부가 아니며 깃허브에서도 사용할 수 없다.
이러한 한계가 범용 AI 애플리케이션을 작성하는 것을 어렵게 만든다. 또한 마이크로소프트의 실시간 카메라 이미지 처리와 같은 기능의 경우 NPU가 있는 윈도우 온 Arm 장치로 제한된다. 인텔 ML 가속기 카드나 고급 엔비디아 GPU가 있는 경우에 크게 와닿는 한계다.
또 코드가 특수해야 하기 때문에 마이크로소프트 스토어와 같은 메커니즘이나 마이크로소프트 인튠과 같은 엔터프라이즈 애플리케이션 관리 툴을 통해 배포하기가 어렵다.
올리브를 통한 ONNX 모델 최적화
빌드 2023에서 마이크로소프트는 ONNX와 올리브라는 두 개의 새로운 파이선 툴을 기반으로 하는 ‘하이브리드 루프’라고 기술하는 것을 구체화했다. 이를 통해 하드웨어 격차를 허물려 하는 행보를 시작했다.
하이브리드 루프는 마이크로소프트의 자체 윈도우 팀과 동일한 수준의 AI 툴 접근성을 제공하기 위한 시도였다. 올리브를 사용하면 모델을 압축, 최적화 및 컴파일하여 로컬 장치(즉, 에지) 또는 클라우드에서 실행할 수 있다. 따라서 필요할 때 온프레미스 운영을 허용하고 데이터 거버넌스 고려사항 및 대역폭이 허용될 때 애저로 버스팅(bursting) 할 수 있다.
그럼, 정확히 올리브란 뭘까? 패키지 프로세스를 간소화하여 특정 하드웨어에 대한 추론을 최적화하고 필요에 따라 추론 엔진을 전환할 수 있는 코드를 구축할 수 있도록 하는 존재다. 다른 하드웨어 조합에 대해 여전히 다른 추론 패키지를 만드는 동안 코드는 실행 시 적절한 패키지를 로드 할 수 있다. 윈도우 온 Arm 플랫폼에서의 경우 x86에 상응하는 제품과 동시에 구축된 퀄컴 NPU 패키지로 코드를 컴파일할 수 있다.
마이크로소프트의 최근 개발자 툴링과 마찬가지로 올리브는 오픈소스이면서 깃허브에서 사용할 수 있다. 일단 개발 환경에 올리브가 설치되면 이를 사용하여 대상 하드웨어에 대한 모델을 조정하고 최적화하는 프로세스를 자동화할 수 있다.
올리브는 서로 다른 모델 유형을 대상으로 다양한 튜닝 옵션을 제공한다. 예를 들어, 트랜스포머를 사용하는 경우 올리브는 적절한 최적화를 적용할 수 있을 뿐만 아니라 모델의 제약을 균형 있게 조정하여 지연 시간과 정확도를 모두 관리할 수 있다.
올리브 내의 최적화는 파이토치 모델 또는 다른 교육 플랫폼에서 ONNX 내보내기로 시작하는 멀티패스 프로세스이다. 개발자가 특정 최적화를 수행하는 모델 및 각 패스에 대한 자신의 요구 사항을 정의한다. 애저 VM, 로컬 개발 하드웨어 또는 충분한 컴퓨팅 리소스가 있는 곳에서 실행할 수 있는 컨테이너 등을 사용하여 패스(최적화)를 실행할 수 있다. 올리브는 가능한 다양한 튜닝에 대해 검색을 실행하여 애플리케이션에서 테스트하기 위해 패키징 전에 모델을 최상으로 구현하고자 한다.
올리브를 AI 개발 프로세스의 일부로 만들기
올리브의 운영은 대부분 자동화되어 있다. 따라서 기존 툴 체인으로 짜 넣고 프로세스를 구축하는 것이 비교적 쉬울 것이다. 올리브의 촉발은 구성 파일에서 설정한 매개 변수를 기반으로 작업하는 단순한 CLI에 의해 이뤄진다. 따라서 깃허브 액션 또는 애저 파이프라인의 일부로 CI/CD 워크플로우에 포함될 수 있다.
또 샘플 코드와 더불어 출력이 사전 패키지화 된 모델 및 런타임이므로 올리브를 사용하고 나면 배포 패키지, 분산 애플리케이션용 컨테이너 또는 데스크톱 앱용 설치 관리자에 포함될 수 있는 빌드 아티팩트를 생성할 수 있다.
올리브를 시작하는 작업은 매우 간단하다. 파이선 패키지인 올리브는 pip을 사용하여 설치되며 특정 대상 환경에 대한 일부 종속성을 갖고 있다.
최적화를 실행하기 전에 올리브 제이슨 구성 파일을 작성해야 한다. 올리브 문서에는 시작하는 데 도움이 되는 샘플 구성이 있지만 초보자용이 아니다. 원하는 성능과 정확도를 정의하기 전에 먼저 모델 유형과 입력 및 출력을 선택한다. 마지막으로 구성에 따라 파이토치 모델을 ONNX로 변환하고 동적 양자화를 적용하는 등 올리브가 모델을 최적화하는 방법이 결정된다.
결과는 꽤 인상적이다. 대기 시간과 모델 크기 모두에서 상당한 감소를 보여준다. 안전에 중요한 컴퓨터 비전 애플리케이션을 에지 하드웨어에 배포하는 등의 시나리오와 같이, 컴퓨팅 기능이 제한되고 스토리지가 한정된 제한적인 환경을 최대한 활용할 수 있기 때문에 올리브는 로컬 추론에 유용한 툴이 된다.
차세대 AI 실리콘에 대비하기
올리브는 상당한 수준으로 미래를 대비하고 있다. 이 툴은 실리콘 공급업체가 자체 최적화 세트를 정의하고 올리브 사용자에게 제공할 수 있는 최적화 플러그인 모델을 기반으로 구축됐다. 인텔과 AMD는 이미 자체 하드웨어와 소프트웨어로 작동하는 툴링을 제공하고 있으므로 모델 성능을 향상하는 동시에 필요한 최적화 작업을 수행하는 데 필요한 컴퓨팅을 줄일 수 있다. 이 접근 방식을 통해 올리브는 통합 칩셋과 외부 가속기 모두에서 새로운 AI 하드웨어에 대한 지원을 신속하게 구현할 수 있다.
올리브는 코드의 논리에 따라 로컬 추론과 클라우드 엔드포인트 사이에서 전환이 가능한 새로운 윈도우 ONNX 런타임과 결합된다. 민감한 운영의 경우 로컬에서 실행할 수 있는 한편, 제한이 적은 운영의 경우 경제적인 장소에서 실행할 수 있다.
올리브의 한 가지 더 유용한 기능은 애저 머신러닝 계정에 직접 연결할 수 있는 기능이다. 사용자 지정 모델에서 ONNX 패키지로 바로 이동할 수 있다. 하이브리드 또는 클라우드 전용 추론을 사용할 계획이라면 애저에서 실행할 수 있도록 올리브가 모델을 최적화할 것이다.
특정 하드웨어에 대해 ONNX 형식 모델을 최적화하면 여러 가지 이점이 있으며, 여러가지 대상 환경을 지원하는 올리브와 같은 툴을 갖추면 사용자가 사용하는 하드웨어에서 기대하는 성능과 필요한 성능을 갖춘 애플리케이션을 제공하는 데 도움이 될 것이다.
하지만 그것이 전부는 아니다. 올리브는 여러 하드웨어 플랫폼에 최적화된 머신러닝 애플리케이션을 구축하는 책임을 맡은 개발자들에게 처음 몇 가지 장애물을 극복할 수 있는 방법도 제공한다.
* Simon Bisson는 인포월드 마이크로소프트 블로그를 담당하는 필자다. 학계 및 통신 업계에 종사했으며, 한 스타트업의 CTO를 역임했다. dl-ciokorea@foundryco.com