NXP 디바이스를 활용한 머신러닝 구현
글: 다우닝(Joseph Downing)
기술이 빠르게 발전하는 현대 사회에서 엣지 기반 머신러닝(Edge ML)은 실시간 데이터 처리 및 분석 분야에 혁신을 가져올 것으로 기대를 모으고 있다.
[사진=putilov_denis/Stock.adobe.com]
이는 엣지 디바이스 상에서 머신 러닝 모델을 구축하는 새로운 접근 방식으로, 지능적이고 신속한 응답을 제공하는 애플리케이션을 가능하게 한다. 이 글에서는 엣지 ML의 개념과 의의, 다양한 애플리케이션, 그리고 여러 산업 분야에서의 이점에 대해 알아보고자 한다.
기존의 머신러닝 모델은 중앙 집중식 클라우드 서버에 크게 의존해 대량의 데이터를 처리했다. 그러나 엣지 ML은 이러한 처리 작업을 엣지 디바이스로 직접 전송함으로써 중앙 집중식 클라우드 서버에 대한 의존성을 줄인다.
이렇게 하면 외부 서버에 지속적으로 의존하지 않고도 실시간으로 의사 결정을 내릴 수 있게 된다. 이는 기존의 접근 방식에서 발생하는 지연 시간, 개인 정보 보호, 대역폭 문제와 같은 문제를 해결하는 데 도움이 된다.
엣지 ML의 가장 큰 장점은 실시간 인사이트를 제공할 수 있다는 것이다. 엣지 디바이스에서 직접 추론을 수행함으로써 애플리케이션은 변화하는 조건에 신속하게 대응할 수 있으며 시간에 민감한 애플리케이션에 있어 이상적이다.
예를 들어 자율주행 자동차에서 순간적인 의사 결정을 내리는 경우와 스마트 감시 카메라에서 잠재적인 위협을 감지하는 경우, 의료 디바이스에서 조기 진단을 제공하는 경우 등에서 엣지 ML을 통해 지연 시간을 단축하는 것은 큰 변화를 가져올 수 있다.
이 글에서는 NXP 반도체의 FRDM-MCX-N947 FRDM 개발 보드를 엣지 ML의 실용적인 애플리케이션에 사용하는 데 필요한 단계에 대해 설명하고 ML 모델 생성을 위한 NXP eIQ 포털에 대해 소개한다.
보드에 있는 MCXN947 장치는 추론 시간을 줄이기 위한 eIQ Neutron 신경처리장치(NPU)를 포함하고 있으며 이는 엣지 ML 제품의 배터리 수명을 향상시킬 수 있다. 스마트 시티와 산업용 사물인터넷(IoT)부터 의료 및 소비자 가전에 이르기까지 엣지 ML의 잠재적 응용 분야는 다양하며 큰 영향력을 갖고 있다.
▶ 프로젝트 자재 및 자원
▲ 프로젝트 BOM(bill of materials)
• NXP FRDM-MCXN947
▲ 프로젝트 코드/소프트웨어
• NXP MCU 용 MCUXpresso IDE
• MCUXpresso SDK Builder
• eIQ Toolkit
▲ 추가 자원
• MCUXpresso IDE 단말 창, Tera Term, 기타 단말 에뮬레이터 소프트웨어
▲ 추가 하드웨어
• 윈도우 PC
• USB Type-C 대 USB Type-A 또는 Type-C 케이블 (지원되는 PC USB 포트에 따라 다름)
▲ 계정
• NXP 계정 (무료로 생성 가능)
▶ 프로젝트 기술 개요
FRDM-MCXN947 보드(그림 1)는 듀얼 고성능 Arm Cortex-M33 코어를 이용해 최대 150MHz 속도로 실행되는 MCX N947 마이크로컨트롤러를 탑재하고 있다. 또한 2MB 플래시, 선택적인 풀 ECC RAM, DSP 코프로세서, eIQ Neutron NPU를 갖추고 있다. NPU는 ML 처리량을 크게 향상시켜 독립형 CPU 코어 대비 최대 30배 빠른 성능을 제공한다. 이를 통해 디바이스의 활성 시간을 최소화하고 전체적인 전력 소비를 줄일 수 있다.
그림 1. MCX N947 마이크로컨트롤러를 탑재한 NXP FRDM-MCXN947 개발 보드의 모습.
멀티코어 아키텍처는 아날로그 및 디지털 주변장치 간에 작업량을 지능적으로 분산시켜 시스템 성능과 효율성을 향상시킨다. MCUXpresso Developer Experience를 지원하는 이 보드는 임베디드 시스템 개발을 위한 최적화, 사용 편의성, 가속화를 제공한다. 산업용 애플리케이션을 위해 설계된 MCX N94x 제품군은 보다 광범위한 아날로그 및 모터 제어 주변장치를 특징으로 한다.
▶프로젝트 개발
이 프로젝트는 MCX N94x 디바이스에 대한 소개며 특히 FRDM-MCXN947 보드를 사용해 독자들이 제품을 쉽게 이해하고 실행할 수 있도록 안내하는 것을 목적으로 한다.
▲소프트웨어 설치
아래에서는 예제를 실행하기 위해서 필요한 소프트웨어를 열거하고 있으나 실제로는 MCUXpresso 통합 개발 환경(IDE)만 있으면 된다.
▲MCUXpresso IDE
MCUXpresso IDE는 Arm Cortex-M 코어를 사용하는 NXP MCU를 위한 사용자 친화적인 Eclipse 기반 개발 환경을 제공한다. 이 IDE는 범용 크로스오버 MCU와 무선 기능이 있는 MCU를 모두 지원하며 MCU 전용 디버깅 뷰, 코드 추적 및 프로파일링, 멀티코어 디버깅, 통합 구성 도구 등의 고급 편집, 컴파일, 디버깅 기능을 제공한다(그림 2).
그림 2. NXP MCUXpresso IDE
설치는 간단하다. 먼저 NXP의 MCUXpresso IDE 다운로드 사이트로 이동한다. 이 사이트에서 오른쪽 상단의 Download 아이콘을 클릭하고 MCUXpresso Integrated Development Environment(IDE)를 선택한 후 Download를 클릭한다. 계정 생성이 필요한 경우 화면의 안내에 따라 진행하면 된다.
다음 화면에서는 다운로드할 버전과 사용하고자 하는 운영체제(OS)를 선택할 수 있다. 이 프로젝트는 MCUXpresso 버전 11.8.1(가장 최신 버전을 다운로드할 것)과 윈도우 OS를 사용한다.
▲SDK Builder
MCUXpresso SDK Builder(그림 3)는 오픈 소스 드라이버, 미들웨어, 참조 예제 애플리케이션을 제공해 소프트웨어를 빠르게 개발할 수 있도록 한다. SDK 빌더를 사용하면 선택한 프로세서나 평가 보드에 맞는 소프트웨어 개발 키트(SDK)를 맞춤 설정하고 다운로드할 수 있어 개발 프로세스를 간소화할 수 있다. SDK를 빌드하고 설치하는 방법은 추후 섹션에서 설명하고자 한다.
그림 3. NXP MCUXpresso SDK Builder 웹사이트
▲eIQ Portal
eIQ Toolkit(그림 4)은 직관적인 GUI(예: eIQ Portal)과 워크플로우 도구를 통해 수월하게 ML 개발을 할 수 있도록 지원하며 eIQ ML 소프트웨어 개발 환경 내의 명령 라인 호스트 도구 옵션도 제공한다. Au-Zone Technologies와의 독점적인 파트너십을 통해 개발된 NXP의 eIQ Toolkit은 그래프 수준의 프로파일링 기능을 제공해 엣지버스(EdgeVerseTM) 프로세서에서 신경망 아키텍처를 최적화하는 데 필요한 인사이트를 제공한다. 또 eIQ Neutron NPU를 활용할 수 있도록 모델을 변환하는 데 필요한 도구도 제공한다.
그림 4. eIQ Portal
eIQ 소프트웨어는 이 예제 프로젝트를 실행하는 데 필수적이지는 않지만 새로운 모델을 빌드하고 구현해 추가적인 개발을 할 수 있다. 필요한 파일은 eIQ Toolkit for End-to-End Model Development and Deployment 페이지에서 찾을 수 있다. 해당 페이지의 오른쪽 상단에 있는 Download 버튼을 클릭하고 운영체제에 맞는 최신 버전의 eIQ Toolkit Installer를 다운로드하면 된다.
▲ 하드웨어 셋업
이 프로젝트의 하드웨어 설정은 간단하다. 호스트 머신과 보드의 J17 USB Type-C 포트(SW1 옆)를 USB Type-C 케이블로 연결하면 된다(그림 5). 이렇게 하면 코드를 프로그래밍하고 디버깅할 수 있다.
그림 5. USB Type-C 케이블이 연결된 FRDM-MCX-N947 모습
▶시스템 실행
▲ SDK 빌드 및 설치
우선 이 장치에 필요한 SDK를 찾아서 설치해야 한다: 1. https://mcuxpresso.nxp.com/en/welcome
2. Select Development Board를 클릭한다.
3. Boards 드롭다운 메뉴에서 MCX를 선택하고 FRDM-MCXN947 (MCXN947)을 선택한다(그림 6).
그림 6. NXP MCUXpresso SDK Builder에서 개발 보드 선택
4. 창 오른쪽에 있는 Selection Details에서 Build MCUXpresso SDK를 클릭한다.
5. Developer Environment Settings 아래에 있는 모든 라이브러리를 선택한다. 그러면 eIQ Middleware가 포함된다.
6. 창 하단의 Download SDK를 클릭한다.
7. MCUXpresso SDK Dashboard에서 새로 생성한 SDK를 찾고 이 SDK 창의 오른쪽에 있는 Download SDK를 클릭한다. (이 섹션에는 생성된 모든 SDK가 표시된다.)
8. MCUXpresso IDE가 열려 있지 않으면 이 IDE를 연다.
9. 다운로드된 SDK 파일을 찾는다.
10. zip 파일로 된 SDK 파일을 Installed SDKs 창으로 드래그하고 화면의 안내에 따라서 설치를 시작한다. (주의: 이 창의 위치는 IDE 구성에 따라서 다를 수 있다.)
▲ 예제 프로젝트 로드
SDK를 설치했으면 다음 단계에 따라서 이 디바이스를 테스트하고 개발하기 위한 예제 프로젝트에 액세스한다:
그림 10. MCUXpresso IDE의 Quickstart Panel
1. MCUXpresso IDE를 열고 Welcome 창을 닫는다.
2. MCUXpresso IDE의 왼쪽 하단에 있는 Quickstart Panel(그림 10)을 찾는다.
3. Create or import a project 아래에서 Import SDK example(s)…를 선택한다. 그러면 SDK Import Wizard가 열린다.
4. 이 목록에서 FRDM-MCXN947을 선택하고 Next를 클릭한다.
5. eiq_eamples 아래에서 tflm_label_image 데모를 선택한다. 추가적인 예제들도 선택할 수 있다.
6. Finish를 클릭하면 샘플들을 작업공간으로 불러온다.
Project Explorer 창에서 설치되고 이용할 수 있는 모든 프로젝트들의 목록을 볼 수 있다.
▲ FRDM-MCXN947 프로그래밍 및 디버깅
설치된 SDK의 예제 프로그램들을 사용해서 어떤 eIQ 프로젝트든 평가해볼 수 있다. 이 프로젝트를 위해서는 Label Image 예제를 사용해 보도록 하겠다.
1. Project Explorer의 이용 가능한 프로젝트 목록 중에서 frdmmcxn947_tflm_label_image를 선택한다.
2. IDE 상단의 툴바에서 Build 아이콘을 클릭한다.
3. 콘솔 상에서 빌드가 오류 없이 완료되었는지 확인한다(그림 13).
그림 13. MCUXpresso IDE의 콘솔 창
4. 이 예제 프로그램을 우클릭하고 Debug As를 선택한 후 MCUXpresso IDE LinkServer를 선택한다.
5. SWD Configuration 창에서 Device 0을 선택하고 OK를 클릭한다.
6. Label Image 파일을 빌드하고 컴파일했으면, F8을 누르거나 아니면 툴바에 있는 Resume 아이콘을 클릭해서 디버그 세션을 계속한다.
7. 단말 창(그림 15)이나 여타 단말 에뮬레이터 소프트웨어를 연다.
8. 이 디바이스에 부여된 COM 포트를 선택한다.
9. 다음과 같은 설정으로 COM 포트를 설정한다:
1. 115200 보 레이트
2. 8개 데이터 비트
3. 패리티 사용 안함
4. 1개 정지 비트
5. 플로우 제어 안함
그림 15. MCUXpresso IDE의 단말 창
이 예제의 출력이 단말 창에 표시된다. 외부 카메라가 연결되지 않았으므로 정적 이미지만 표시된다.
▶ 추가적인 개발
이 밖에 추가적인 개발도 가능하다. eIQ Portal에서 파일들을 끌어다 놓는 것만으로 커스텀 이미지 셋을 사용해서 모델을 생성할 수 있다(그림 16). 지원되는 예제들과 추가적인 하드웨어를 사용해 이미지 분류나 실시간 모니터링을 훨씬 더 쉽게 할 수 있다. eIQ Toolkit를 사용해서 기존 모델을 변환하고 EIQ Neutron NPU의 이점을 활용할 수도 있다. MCX N 제품군에 탑재된 eIQ Neutron NPU는 모델 실행 시 추론 시간을 크게 단축할 수 있다.
그림 16. eIQ Portal의 Data Set Curator
▶ 맺음말
엣지 ML의 혁신적인 힘은 실시간 인사이트를 제공할 수 있는 능력에 있다. 엣지 디바이스에서 직접 추론을 수행하면 애플리케이션이 동적인 상황에 신속하게 대응할 수 있어 시간에 민감한 애플리케이션에서 특히 유리하다. 자율주행 차량의 즉각적인 의사 결정 지원, 스마트 감시 카메라를 통한 잠재적 위협 식별, 의료 기기를 통한 시기적절한 진단 제공 등 엣지 ML을 통한 지연 시간 단축은 중요한 혁신으로 부상하고 있다.
이 글에서는 엣지 ML에 관한 실제적인 지침을 제공하고자 NXP FRDM-MCXN947 FRDM 개발 보드를 가지고 엣지 ML 애플리케이션에 구현하는 데 필요한 과정을 단계적으로 설명했다. 이와 함께 ML 모델 생성 도구인 eIQ Portal도 함께 소개했다. 이 글에서 소개된 애플리케이션은 스마트 시티, IIoT, 의료, 컨슈머 전자기기를 비롯한 다양한 분야에 적용될 수 있으며 엣지 ML이 다양한 영역에 걸쳐서 근본적인 변화를 가져올 수 있다는 것을 보여준다.
저자 소개
조셉 다우닝(Joseph Downing)은 2011년에 기술 지원 스페셜리스트로 마우저 일렉트로닉스에 입사했으며 나중에 기술 콘텐츠 스페셜리스트로 직책을 옮겼다. 20년 넘게 전자 산업에 종사하면서 Intel, Radisys, Planar 같은 회사들을 거쳤다. 그 자신이 열렬한 메이커로서 Mouser.com의 Application and Technology 사이트에 올라오는 기술 프로젝트 및 자료와 더불어 Trade Shows 사이트도 담당하고 있다.