News Feed

ARM 코파일럿+ PC에서 파이토치 실행하기

컨텐츠 정보

  • 조회 867

본문

마이크로소프트는 약 1년 전 코파일럿+ PC 제품군을 출시하면서 NPU(Neural Processing Units) 형태의 디바이스의 내장 AI 가속기를 활용할 수 있게 해주는 툴 모음인 코파일럿 런타임(Copilot Runtime)을 제공할 것이라고 발표한 바 있다. 대규모 클라우드 호스팅 모델 대신 사용할 수 있는 이 새로운 종류의 하드웨어는 더 작은 용량의 로컬 AI 사용을 촉진해서 사용자의 개인 정보가 원래 있어야 할 곳, 즉 사용자 자신에게 머물도록 한다.

이를 실현하기 위한 핵심은 초당 40조 회 이상의 연산을 수행할 수 있는 NPU다. NPU는 최신 ML(Machine Learning) 모델을 지원하도록 설계되며, 현재 대부분 AI를 뒷받침하는 신경망을 위한 전용 컴퓨팅을 제공한다. 대규모 병렬 디바이스인 NPU는 GPU와 유사한 아키텍처를 사용하지만 순수하게 AI 요구사항에 집중한 명령어 집합을 제공하고 딥 러닝 신경망에서 필요한 피드백 루프를 지원한다.

늦게 도착한 코파일럿 런타임

첫 툴이 출시되기까지 거의 1년이 걸렸고, 지금 나온 툴도 대부분은 여전히 프리뷰 단계다. 사실 코파일럿 런타임에서 계획하고 있는 범위와 안정적인 툴 및 서비스 모음을 제공해야 할 필요성을 감안하면 납득할 수 있는 지연이지만 어쨌든 마이크로소프트가 처음 약속했던 시간보다는 더 오래 걸렸다.

이 같은 지연의 원인 중에는 퀄컴 헥사곤(Hexagon) NPU를 위한 런타임 관련 문제도 있었지만 가장 큰 원인은 새로운 기술을 도입할 때 개발자에게 적절한 수준의 추상화를 제공하는 데 따르는 복잡성에 있다.

코파일럿 런타임의 마지막 조각 중 하나인 ARM 네이티브 버전의 파이토치 ML 프레임워크가 몇 주 전에 파이토치 2.7 릴리스에 포함돼 출시됐다. 지난 몇 년 동안 AI에 대한 공개적인 논의는 대부분은 트랜스포머 기반 대규모 언어 모델에 집중됐지만, 이미지 처리부터 소규모 언어 모델에 이르기까지 더 작고 타겟팅된 신경망을 사용해서도 많은 작업을 수행할 수 있다.

왜 파이토치인가?

파이토치는 텐서와 신경망을 지원하며, 더 복잡한 모델 구축에 도움이 되는 추상화와 기능 모음을 제공한다. 텐서는 신경망 기반 ML을 위한 핵심적인 도구인 대규모 다차원 배열을 쉽게 다룰 수 있게 해준다. 또한 파이토치는 ML 모델을 정의하고 학습시킬 수 있는 기본 신경망 모델을 제공하며 신경망을 통해 순전파(forward pass)를 관리하는 기능도 있다.

파이토치는 허깅 페이스(Hugging Face) 커뮤니티와 같은 오픈소스 AI 모델 서비스에 사용되는 유용한 툴이다. 파이토치를 사용하면 모델로 실험할 수 있는 코드를 빠르게 작성하고, 매개변수와 튜닝, 학습 데이터의 변경이 출력에 어떻게 영향을 미치는지 신속하게 확인할 수 있다.

먼저 핵심 프리미티브를 사용해서 신경망의 계층을 정의하고 신경망에서 데이터가 어떻게 흐르는지 확인하는 것부터 시작할 수 있다. 이렇게 해서 ML 모델을 구축하고, 역전파를 사용해 학습 루프를 추가해서 모델 매개변수를 조정하고, 출력 예측을 테스트 데이터 집합과 비교해 모델의 학습 상황을 추적할 수 있다. 텐서를 사용해 신경망에서 사용할 데이터 집합을 처리할 수 있다(예를 들어 이미지를 구성하는 데 사용된 데이터를 처리). 학습이 완료되면 모델을 저장, 로드할 수 있으며 추론을 테스트하는 데 사용할 수도 있다.

ARM으로 가져온 파이토치

코파일럿+ PC는 마이크로소프트 엔드포인트 AI 개발 전략의 중심인 만큼 최종 사용자 디바이스인 동시에 개발자 플랫폼이기도 하다. 결과적으로 마이크로소프트도 ARM 기반 개발자 툴을 꾸준히 늘리고 있다. 최근에는 파이토치와 리브토치(LibTorch) 라이브러리의 ARM 네이티브 빌드가 나왔다. 아쉽게도 이런 빌드는 아직 퀄컴의 헥사곤 NPU를 지원하지 않지만 ARM 기반 코파일럿+ PC의 스냅드래곤 X 프로세서도 충분히 강력해서 꽤 복잡한 생성형 AI 모델도 감당할 수 있다.

로컬 AI 모델을 사용하기 위한 툴로는 윈도우 앱 SDK의 API, 헥사곤 NPU를 위한 ONNX 모델 런타임, 다이렉트 ML 지원 등이 있다. ARM 버전의 파이토치가 추가되면 ARM 윈도우 AI 개발의 큰 공백이 채워진다. 이제 PC 또는 비주얼 스튜디오(또는 비주얼 스튜디오 코드) 환경을 벗어나지 않고도 모델에서 학습, 튜닝, 추론, 애플리케이션까지 넘어갈 수 있다. 엔드포인트 AI 애플리케이션을 빌드, 테스트, 패키징하는 데 필요한 모든 툴이 이제 ARM 네이티브 툴이므로 윈도우의 프리즘(Prism) x64 에뮬레이션에 따르는 오버헤드에 대해 걱정할 필요가 없다.

ARM 기반 PC에서 파이토치를 시작하려면 어떻게 해야 할까?

ARM에서 윈도우에 파이토치 설치하기

필자는 12코어 퀄컴 X 엘리트 프로세서와 16GB RAM이 탑재된 7세대 서피스 랩톱(Surface Laptop)에서 사용해 봤다. (작동은 했지만 마이크로소프트가 테스트에서 놓친 흥미로운 빈 틈을 볼 수 있었다. 파이토치를 컴파일하는 데 사용된 코드의 헤더에 필자의 칩셋이 없었다.) 대부분 개발 플랫폼과 마찬가지로 코딩을 시작하기 전에 툴체인을 제대로 갖춰야 하므로 발표 블로그 게시물의 지침을 반드시 따라야 한다.

파이토치는 설치 과정에서 많은 모듈을 컴파일한다. 따라서 파이썬을 설치하기 전에 C++를 지원하는 비주얼 스튜디오 빌드 툴(Visual Studio Build Tools)을 설치해야 한다. 비주얼 스튜디오를 사용하는 경우 ‘C++를 사용한 데스크톱 개발’이 활성화되고 최신 Arm64 빌드 툴이 설치돼 있어야 한다. 그 다음으로 표준 러스트 설치 프로그램을 사용해 러스트를 설치한다. 이렇게 하면 ARM 프로세서가 자동으로 감지돼 올바른 버전이 설치된다.

모든 필수 구성 요소가 준비됐으므로 이제 Python.org에서 파이썬 Arm64 릴리스를 설치한 다음, pip 설치 프로그램을 사용해 파이토치의 최신 버전을 설치할 수 있다. ARM 버전의 바이너리가 다운로드되고 필요한 모든 구성요소가 컴파일 및 설치된다. 이 과정에 시간이 꽤 걸릴 수 있다. C++ 파이토치 툴을 선호한다면 리브토치의 ARM 지원 버전을 다운로드하면 된다.

올바른 리브토치 버전을 받는 방법이 헷갈릴 수 있다. 가장 쉬운 방법은 마이크로소프트 블로그 게시물의 링크를 통해 nightly 빌드를 다운로드하는 것이다. 이렇게 하면 ARM 버전으로 바로 이동이 가능하다. 라이브러리는 ZIP 아카이브 형태로 제공되므로 C++ 파이토치 프로젝트와 함께 설치해야 한다. 필자는 파이썬을 사용하기 때문에 리브토치를 설치하지 않았다.

윈도우에서 파이토치로 AI 모델 실행

이제 파이토치를 사용해서 모델 빌드, 학습 또는 테스트 실험을 시작할 준비가 됐다. 마이크로소프트는 발표하면서 몇 가지 샘플 코드를 제공했지만 필자의 경우 샘플 코드의 서식이 비주얼 스튜디오 코드에 복사되지 않는 문제로 링크된 깃허브 리포지토리에서 파일을 다운로드했다. 결과적으로 이 방법이 맞았다. 마이크로소프트 게시물에는 필수 구성요소를 설치하기 위해 필요한 requirements.txt 파일이 포함돼 있지 않았기 때문이다.

샘플 코드는 허깅 페이스에서 사전 학습된 스테이블 디퓨전(Stable Diffusion) 모델을 다운로드한 다음 파이토치를 중심으로 추론 파이프라인을 설정하고, 간단한 웹 서버와 프롬프트를 받는 UI를 구현하고, 사용되는 패스의 수를 조절하기 위한 옵션을 제공하고, 사용되는 시드를 설정한다. 12코어 스냅드래곤 X 엘리트에서 이미지를 생성하는 데 걸리는 시간은 약 30초이며, 성능을 제약하는 요소는 사실상 가용 메모리가 유일하다. 비주얼 스튜디오 코드 터미널에서 작업의 세부 사항을 보고 애플리케이션을 시작할 수 있다.

마이크로소프트가 파이토치 파이썬 라이브러리를 컴파일하는 데 사용되는 헤더 파일에 서피스 랩톱의 프로세서를 추가한다면 성능이 더 향상될 가능성이 있다. 시작할 때 SOC 사양을 알 수 없다는 오류 메시지가 표시되지만 애플리케이션은 계속 실행되며 작업 관리자에는 64비트 ARM 구현이라고 표시된다.

파이토치 추론 실행은 비교적 간단해서, 모델을 다운로드하고 파이토치에 로드한 다음 실행하는 데 35줄의 코드로 충분했다. 이 같은 프레임워크는 새로운 모델을 테스트할 때 유용한데, 특히 이 프레임워크처럼 쉽게 시작하고 실행할 수 있다면 더욱 유용할 것이다.

NPU가 지원되면 좋겠지만 이를 위해서는 상위 파이토치 프로젝트에서 더 많은 작업이 필요하다. 파이토치가 지금까지 엔비디아 GPU에서 CUDA를 사용하는 데 집중해오면서 AI 가속기는 별다른 주목을 받지 못했다. 그러나 퀄컴 헥사곤과 같은 칩과 최신 인텔 및 AMD 칩셋의 NPU에 대한 인기가 점점 더 커지고 있는 상황에서 마이크로소프트도 자사와 파트너의 코파일럿+ PC 하드웨어의 모든 기능을 완전히 지원하는 것이 바람직할 것이다.

개발자가 원하는 것이 많다는 것은 좋은 신호다. ARM 버전의 파이토치는 유용한 AI 애플리케이션을 구축하기 위해 필요한 엔드포인트 AI 개발 툴체인에서 중요한 부분이다. 허깅 페이스와 같은 서비스에 사용되는 툴을 통해 수많은 오픈소스 AI 모델을 자유롭게 실험해보고 각자 자신의 데이터와 PC를 사용해서 테스트하고 튜닝하면서 일반적인 챗봇을 훨씬 더 뛰어넘는 솔루션을 제공할 수 있을 것이다.
dl-itworldkorea@foundryco.com

관련자료

댓글 0
등록된 댓글이 없습니다.
Member Rank