머신러닝 초보자 및 전문가에게 모두 유용한 STM32 에코시스템

머신러닝, 특히 TinyML은 내장형 시스템이 설계되고 구축되는 방법을 혁신할 수 있는 잠재력을 지닙니다. 원래 이러한 시스템에는 해당 시스템에 대한 개발자의 경험을 바탕으로 하는 절차적인 알고리즘이 있습니다. 머신러닝은 다른 접근 방식을 제공하여, 시스템의 알고리즘이 실제 환경에서의 관찰 및 데이터에 기반하게 됩니다. 해당 환경의 데이터가 진화하는 경우, 머신러닝 모델은 그 데이터로부터 신속하게 재학습할 수 있습니다. 핸드 코딩된 솔루션은 다시 작성되어야 합니다.

이 기사에서는 STMicroelectronics STM32 마이크로 컨트롤러 제품군에서 지원되는 내장형 시스템을 위한 플랫폼 및 도구에 대해 알아봅니다.

STM32 마이크로 컨트롤러 제품군 내에서의 머신러닝 지원

머신러닝은 내장형 시스템 개발자들을 위한 강력한 도구가 될 수 있습니다. 그러나 종종 개발자들은 머신러닝 알고리즘이 너무 큰 처리 성능을 요구한다거나, 알고리즘이 너무 커서 일반적인 마이크로 컨트롤러에 맞지 않는다고 생각합니다. 실제로는, 사용을 위해 선택한 마이크로 컨트롤러는 특정 마이크로 컨트롤러가 지원하는 방식보다 머신러닝으로 수행하려는 작업에 더 많이 의존합니다.

예를 들어 그림 1에는 머신러닝을 지원하는 STM32 마이크로 컨트롤러 제품군의 범위가 표시됩니다. 이 부품은 48MHz에서 실행되고 최대 256KB의 플래시와 32KB의 RAM이 있는 STM32F0에서부터, 216MHz에서 실행되고 최대 2MB의 플래시와 512KB의 RAM이 있는 STM32F7에 이릅니다.

그림 1: STM32Cube.AI 및 NanoEdge 개발 도구를 사용하여 머신러닝을 지원하는 STM32 마이크로 컨트롤러 (이미지 출처: STMicroelectronics)

이렇듯, 꽤 많은 마이크로 컨트롤러가 머신러닝을 지원할 수 있습니다. 실제적인 문제는 머신러닝 플랫폼이 넓은 범위의 개발자를 성공적으로 지원할 수 있어야 한다는 점입니다. 예를 들어 내장형 소프트웨어 팀에 머신러닝 전문가가 있을 가능성은 희박합니다. 그 대신, 내장형 소프트웨어 개발자가 자신의 기존 기술 범위의 한계 밖에 있는 머신러닝을 공부해야 하는 경우가 많습니다. 따라서 팀 내에 머신러닝 전문가가 있는지 여부에 상관없이 팀을 지원할 수 있는 플랫폼이 필요합니다. STM32 머신러닝 에코시스템의 도구 모음은 이러한 문제를 해결할 수 있습니다.

머신러닝 전문가가 없는 내장형 업무 팀 지원

머신러닝 알고리즘을 설계하고 훈련하는 일이 어려운 작업처럼 보일 수 있는 것은 당연합니다. 개발자는 데이터를 수집하고, 모델을 설계하며, 모델을 교육한 다음, 해당 모델이 특정 내장형 시스템에 최적화되고 배포될 수 있을 정도로 잘 맞는지 확인할 수 있어야 합니다.

전통적으로 머신러닝 모델은 TensorFlow Lite, PyTorch, Matlab 또는 기타 도구를 사용하여 생성됩니다. 이러한 도구는 보통 내장형 소프트웨어 개발자에게는 생소합니다. 이러한 도구에 대한 속도를 높이고 정확한 결과를 얻는 일은 시간이 많이 걸릴 뿐만 아니라 비용도 많이 듭니다.

STM32 머신러닝 에코시스템에는 머신러닝 전문 지식이나 경험 트레이닝이 없는 개발자가 머신러닝 응용 제품을 장치에 배포하는 데 도움이 되는 NanoEdge(그림 2)라는 도구가 포함되어 있습니다.

예를 들어 개발자는 비정상 감지, 이상값 감지, 분류 및 회귀와 같은 응용 제품을 위한 머신러닝 라이브러리를 간편하게 만들 수 있습니다. 그런 다음 이러한 라이브러리를 STM32 마이크로 컨트롤러에 배포할 수 있습니다.

그림 2: NanoEdge는 개발자에게 머신러닝 개발 프로세스 전체를 안내할 수 있습니다. (이미지 출처: STMicroelectronics)

머신러닝 전문가가 있는 내장형 업무 팀의 경우는 어떨까요?

개발 팀이 머신러닝 전문가에게 액세스할 수 있다면, STM32 마이크로 컨트롤러를 위한 머신러닝 모델을 개발하기 위해 훨씬 더 다양한 도구에 액세스할 수 있습니다. 예를 들어, 전문 지식이 있는 경우 팀은 TensorFlow Lite, PyTorch, Matlab 또는 기타 도구를 사용하여 모델을 생성할 수 있습니다. 자주 발생하는 문제는 이러한 도구가 마이크로 컨트롤러에서 매우 효율적으로 실행되지 않는, 최적화되지 않은 라이브러리를 생성한다는 점입니다.

STM32 제품군 내에서 개발자는 STM32Cube.AI 플러그인을 활용하여 머신러닝 모델을 가져옴으로써 STM32 마이크로 컨트롤러에서 효율적으로 실행되도록 최적화할 수 있습니다. 이 도구를 사용하면 개발자가 대상 마이크로 컨트롤러에서 머신러닝 모델을 실행하고 조정할 수 있습니다. 먼저 개발자는 그림 3과 같이 자신의 모델을 도구 모음으로 가져올 수 있습니다. 그런 다음 모델을 변환하고 네트워크를 분석하며 검증할 수 있습니다. 이 작업이 완료되고 나면, 개발자는 STM32CubeIDE 내에서 코드를 생성하여 해당 모델을 중심으로 머신러닝 프레임워크를 만듦으로써 내장형 소프트웨어 개발을 단순화할 수 있습니다.

그림 3: 사인파 생성기 머신러닝 모델이 STM32CubeIDE.AI 안으로 들어갑니다. (이미지 출처: Beningo Embedded Group)

내장형 소프트웨어 개발자는 머신러닝 모델에 적절한 입력과 함께, 결과를 확인할 수 있는 코드를 제공해야 합니다. 결과에 대해 작업을 수행할 수도 있고, 응용 제품에 적합하도록 해당 결과를 평균화하거나 조작할 수도 있습니다. 그림 4는 모델의 결과를 실행하고 확인하기 위한 간단한 응용 프로그램 루프를 보여줍니다.

그림 4: 메인 루프가 머신러닝 모델을 둘러싸고 있습니다. (이미지 출처: Beningo Embedded Group)

결론

TinyML에 대한 노력으로 인해, 머신러닝은 내장형 응용 제품에 신속하게 적용되고 있으며, 개발자는 성공을 위해 플랫폼을 활용해야 합니다. 플랫폼 옵션이 급속하게 성장하고 있는 것 같지만, STM32 에코시스템은 개발자에게 간단하고 확장 가능한 솔루션을 제공합니다.

에코시스템 내에서, 머신러닝에 대한 경험이 있는 개발자는 기존 도구를 활용하고 STM32CubeIDE.AI 플러그인을 사용하여 솔루션을 최적화하고 조정할 수 있습니다. 머신러닝에 대한 전문 지식이 없는 팀의 경우, NanoEdge를 활용하면 머신러닝 라이브러리 개발을 단순화하고, 솔루션을 빠르고 비용 효율적으로 시작하고 실행할 수 있습니다.

작성자 정보

Image of Jacob Beningo

Jacob Beningo는 임베디드 소프트웨어 컨설턴트로서 현재 십여 개국 이상의 국가에 있는 고객들과 협력하여 제품 품질, 비용, 출시 기간을 향상시켜 고객의 비즈니스를 극적으로 변화시키고 있습니다. 그는 인기 있는 강연자이자 기술 교육자이며 임베디드 소프트웨어 개발 기술에 대해 200개 이상의 기사를 발표했습니다. 그는 미시간 대학교 공학 석사 학위를 비롯하여 세 개의 학위를 소지하고 있습니다. 월간 Embedded Bytes 뉴스레터를 수신하려면 jacob@beningo.com 및 Jacob Beningo의 웹 사이트인 www.beningo.com으로 언제든지 문의해 주세요.

More posts by Jacob Beningo
 TechForum

Have questions or comments? Continue the conversation on TechForum, Digi-Key's online community and technical resource.

Visit TechForum