번역가 | Zhu Xianzhong
리뷰어 | Liang Ce Sun Shujuan
딥 러닝 모델의 초기 성공은 대용량 메모리와 GPU 클러스터를 갖춘 대규모 서버에 기인합니다. 딥 러닝의 가능성은 심층 신경망을 위한 클라우드 컴퓨팅 서비스를 제공하는 산업을 탄생시켰습니다. 결과적으로 사실상 무제한의 클라우드 리소스에서 실행되는 대규모 신경망은 특히 예산이 넉넉한 기술 회사에서 매우 인기가 높아졌습니다.
그러나 동시에 최근 몇 년 동안 또 다른 반대 추세, 즉 엣지 장치를 위한 기계 학습 모델의 생성이 나타났습니다. TinyML(Tiny Machine Learning)로 알려진 이러한 모델은 메모리와 처리 능력이 제한되어 있고 인터넷 연결이 없거나 제한되어 있는 장치에 적합합니다.
IBM과 MIT(Massachusetts Institute of Technology)가 공동으로 수행한 최신 연구 노력으로 CNN(컨볼루션 신경망)의 최대 메모리 병목 현상 문제를 해결했습니다. 이는 컴퓨터 비전 애플리케이션에 특히 중요한 딥 러닝 아키텍처입니다. 저메모리 및 저전력 마이크로컨트롤러에서 CNN(컨볼루션 신경망)을 실행할 수 있는 McUnETV2라는 모델은 NeurIPS 2021 컨퍼런스에서 발표된 논문에 자세히 설명되어 있습니다.
클라우드 딥 러닝은 매우 성공적이지만 모든 상황에 적합하지는 않습니다. 실제로 많은 애플리케이션에서는 추론 작업을 하드웨어 장치에서 직접 완료해야 하는 경우가 많습니다. 예를 들어 드론 구조 등 일부 임무 환경에서는 인터넷 연결이 보장되지 않습니다. 의료, 개인 정보 보호 요구 사항 및 규제 제약과 같은 다른 영역에서도 처리를 위해 데이터를 클라우드로 보내는 것이 어렵습니다. 실시간 기계어 추론이 필요한 애플리케이션의 경우 왕복 클라우드 컴퓨팅으로 인해 발생하는 대기 시간은 훨씬 더 엄청납니다.
머신러닝 기기를 과학적, 상업적으로 매력적으로 만들기 위해서는 위의 모든 조건이 충족되어야 합니다. 예를 들어, 이제 iPhone 휴대폰에는 얼굴 인식과 음성 인식을 실행하는 많은 애플리케이션이 있으며, Android 휴대폰에서는 번역 소프트웨어를 직접 실행할 수도 있습니다. 또한 Apple Watch는 이미 기계 학습 알고리즘을 사용하여 움직임과 ECG 패턴을 감지할 수 있습니다(참고: ECG는 EKG라고도 알려진 심전도의 약어입니다. 심전도 영상을 분석함으로써 의사는 심박수가 정상인지, 심장 기능에 문제가 있는지를 더 잘 진단할 수 있습니다.
이러한 장치의 ML 모델은 부분적으로 신경망을 소형화하고 계산 및 저장 효율성을 높이는 기술 발전에 힘입어 가능해졌습니다. 동시에 하드웨어 기술의 발전으로 인해 이러한 ML 모델을 모바일 환경에서 구현하는 것도 가능해졌습니다. 우리의 스마트폰과 웨어러블은 이제 30년 전의 고성능 서버보다 더 많은 컴퓨팅 성능을 갖추고 있으며 일부는 기계어 추론을 위한 특수 보조 프로세서도 갖추고 있습니다.
TinyML은 엣지 AI를 한 단계 더 발전시켜 마이크로컨트롤러(MCU)에서 딥 러닝 모델을 실행할 수 있게 해줍니다. 비록 마이크로컨트롤러는 우리가 주머니나 손목에 들고 다니는 소형 컴퓨터보다 리소스가 더 제한되어 있지만 말입니다.
반면에 마이크로컨트롤러는 평균 0.50달러 미만으로 판매될 정도로 저렴하고 거의 모든 곳에 있으며 소비자 산업부터 산업용 장비에 이르기까지 모든 곳에 내장될 수 있습니다. 동시에 범용 컴퓨팅 장치에서 볼 수 있는 리소스도 없고 대부분 운영 체제도 없습니다. 마이크로컨트롤러의 CPU는 수백 킬로바이트에 불과한 저전력 메모리(SRAM)와 몇 메가바이트의 저장 공간으로 작으며 네트워킹 장비도 없습니다. 대부분은 주 전원 공급 장치가 없으며 수년 동안 버튼 배터리를 사용해야 했습니다. 따라서 MCU에 딥 러닝 모델을 설치하면 많은 애플리케이션에 새로운 길을 열 수 있습니다.
Architecture of Convolutional Neural Networks (CNN)
심층 신경망을 소형 메모리 컴퓨팅 장치에 적합한 크기로 줄이기 위해 여러 가지 노력이 이루어졌습니다. 그러나 이러한 노력의 대부분은 딥러닝 모델의 매개변수 수를 줄이는 데 중점을 두고 있습니다. 예를 들어, "프루닝(pruning)"은 모델 출력에서 중요하지 않은 매개변수를 제거하여 신경망을 축소하는 널리 사용되는 최적화 알고리즘입니다.
가지치기 방법의 문제점은 신경망의 메모리 병목 현상을 해결할 수 없다는 것입니다. 딥 러닝 라이브러리의 표준 구현을 위해서는 전체 네트워크 계층과 활성화 계층 매핑을 메모리에 로드해야 합니다. 불행하게도 고전적인 최적화 방법은 신경망의 초기 계산 계층, 특히 컨볼루션 신경망에서 큰 변화를 주지 않습니다.
이로 인해 네트워크의 다양한 계층 크기에 불균형이 발생하고 "메모리 스파이크" 문제가 발생합니다. 정리 후 네트워크가 더 가벼워지더라도 이를 실행하는 장치는 가장 큰 계층과 동일한 메모리를 가져야 합니다. 예를 들어 인기 있는 TinyML 모델인 MobileNetV2에서 초기 레이어 계산은 약 1.4MB의 메모리 피크에 도달하는 반면, 이후 레이어의 메모리 공간은 매우 작습니다. 모델을 실행하려면 장치에 모델 최고치와 동일한 양의 메모리가 필요합니다. 대부분의 MCU에는 수백 KB 이하의 메모리가 있으므로 MobileNetV2의 상용 버전을 실행할 수 없습니다.
MobileNetV2는 에지 장치에 최적화된 신경망이지만 최대 메모리가 약 1.4MB이므로 많은 마이크로컨트롤러에서 액세스할 수 없습니다.
신경망을 최적화하는 또 다른 방법은 모델의 입력 크기를 줄이는 것입니다. 입력 이미지가 작을수록 예측 작업을 수행하기 위해 더 작은 CNN이 필요합니다. 그러나 입력 크기를 줄이는 것은 그 자체로 어려운 일이며 모든 컴퓨터 비전 작업에 효과적이지는 않습니다. 예를 들어 객체 감지 딥러닝 모델은 이미지 크기에 매우 민감하며 입력 해상도가 감소하면 성능이 급격히 저하됩니다.
위 그림에서 이미지 분류 ML 모델(주황색 선)이 타겟 감지 모델(파란색 선)보다 해상도를 낮추기가 더 쉽다는 것을 쉽게 알 수 있습니다.
연구원들은 컨벌루션 신경망의 메모리 병목 현상 문제를 해결하기 위해 메모리 대역폭을 마이크로컨트롤러의 한계까지 조정할 수 있는 MCUNetV2라는 딥 러닝 아키텍처를 만들었습니다. MCUNetV2는 동일한 과학 연구 그룹의 이전 결과를 기반으로 개발되었으며, 이는 NeurIPS 2020 컨퍼런스에 승인되어 성공적으로 제출되었습니다.
MCUNetV2의 주요 아이디어는 정확도를 떨어뜨리지 않고 CNN의 메모리 공간을 줄이는 기술인 "패치 기반 추론"입니다. 전체 신경망 계층을 메모리에 로드하는 대신 MCUNetV2는 주어진 시간에 계층의 더 작은 영역 또는 "패치"를 로드하고 계산합니다. 그런 다음 레이어를 블록별로 반복하고 전체 레이어의 활성화 부분을 계산할 때까지 이러한 값을 결합합니다.
그림의 왼쪽은 전체 레이어를 계산하는 고전적인 딥 러닝 시스템을 보여주고, 오른쪽은 MCUNetV2가 한 번에 하나의 패치를 계산하여 DL 추론을 위한 메모리 요구 사항을 줄이는 것을 보여줍니다.
MCUNetV2는 한 번에 하나의 뉴런만 저장하면 되므로 모델 해상도나 매개변수를 줄이지 않고도 메모리 피크를 크게 줄일 수 있습니다. 연구원들의 실험에 따르면 MCUNetV2는 메모리 피크를 1/8로 줄일 수 있습니다.
MCUNetV2는 딥 러닝 모델의 메모리 피크를 1/8로 줄일 수 있습니다.
패치 기반 추론은 또한 메모리를 절약하는 동시에 계산 오버헤드의 균형을 가져옵니다. MIT(Massachusetts Institute of Technology)와 IBM의 연구원들은 다양한 아키텍처에서 전체 네트워크 계산이 10~17% 증가할 수 있다는 사실을 발견했는데, 이는 분명히 저전력 마이크로컨트롤러에는 적용되지 않습니다.
이 한계를 극복하기 위해 연구원들은 신경망의 여러 블록의 "수용 필드"를 재분배했습니다. (참고: CNN에서 n번째 레이어 특징 맵의 한 픽셀은 입력 이미지의 픽셀 수에 해당합니다. 즉, 이것은 이 레이어의 수용 필드("RF"라고 함)입니다. CNN에서 수용필드(receptive field)는 언제든지 처리할 수 있는 이미지의 영역이다. 수용 필드가 클수록 더 큰 패치가 필요하며 패치 간에 겹칩니다. 물론 이로 인해 계산 오버헤드가 높아집니다. 네트워크의 초기 블록에서 수용 필드를 축소하고 이후 단계에서 수용 필드를 넓힘으로써 연구원들은 계산 오버헤드를 2/3 이상 줄일 수 있었습니다.
수용 필드의 재분배는 MCUNetV2의 계산 오버헤드를 2/3 이상 줄이는 데 도움이 됩니다.
마지막으로 연구원들은 MCUNetV2의 튜닝이 ML 모델 아키텍처, 애플리케이션 및 메모리 및 저장 용량에 크게 좌우된다는 것을 관찰했습니다. 대상 장치의. 각 장치 및 애플리케이션에 대한 딥 러닝 모델을 수동으로 조정하는 것을 피하기 위해 연구원들은 기계 학습을 사용하여 신경망 구조와 추론 일정을 자동으로 최적화하는 프로세스인 "신경 알고리즘 검색"을 사용했습니다.
연구원들은 메모리 용량이 더 작은 여러 마이크로 컨트롤러 모델의 다양한 애플리케이션에서 딥 러닝 아키텍처를 테스트했습니다. 결과는 MCUNetV2가 다른 TinyML 기술보다 성능이 뛰어나며 더 작은 메모리 요구 사항과 더 낮은 대기 시간으로 이미지 분류 및 객체 감지에서 더 높은 정확도를 달성할 수 있음을 보여줍니다.
아래 그림과 같이 연구원들은 실시간 사람 감지, 시각적 깨우기 문자, 얼굴/마스크 감지 기능이 있는 MCUNetV2를 사용하고 있습니다.
번역자 주: 여기에 표시된 내용은 youtube.com 웹사이트에 표시된 MCUNetV2를 사용한 동영상의 스크린샷일 뿐입니다.
소프트웨어 엔지니어 Pete Warden은 Why the Future of Machine Learning is Tiny라는 제목의 2018년 기사에서 MCU의 기계 학습이 매우 중요하다고 생각합니다. "저는 기계 학습이 소형 저전력 칩에서 실행될 수 있다고 믿습니다. 이 조합은 현재 우리가 해결할 수 없는 수많은 문제를 해결할 것입니다."라고 Worden은 썼습니다.
센서와 CPU의 발전 덕분에 우리는 데이터를 얻고 있습니다. 전 세계의 역량이 크게 향상되었습니다. 그러나 기계 학습 모델을 통해 이 데이터를 처리하고 사용하는 능력은 네트워크 연결 및 클라우드 서버 액세스에 의해 제한됩니다. Worden이 말했듯이 프로세서와 센서는 Bluetooth 및 WiFi와 같은 무선 송신기보다 에너지 효율적입니다.
Worden은 다음과 같이 썼습니다. "데이터를 이동하는 물리적 프로세스에는 많은 에너지가 필요한 것 같습니다. 작업에 필요한 에너지는 비트를 전송하는 거리에 비례한다는 것이 규칙인 것 같습니다. CPU와 센서 전송에는 에너지만 필요합니다. 몇 밀리미터의 비트 수를 전송하는 데 비용이 적게 들고, 무선 전송에는 몇 비트의 데이터를 전송하는 데 몇 미터 이상이 필요하고 비용도 많이 듭니다... 거대한 잠재 시장이 열려야 한다는 것은 분명합니다. 저렴한 마이크로컨트롤러에서 작동하고, 에너지를 거의 사용하지 않고, 무선이 아닌 계산에 의존하고, 낭비되는 모든 센서 데이터를 유용한 데이터로 전환할 수 있는 장치가 바로 머신러닝, 특히 딥러닝이 채워지는 곳입니다. gap.Blank."
MCUNetV2와 TinyML이 다른 분야에서도 발전을 거듭한 덕분에 Worden의 예측은 곧 현실이 될 것입니다. 앞으로 몇 년 안에 TinyML이 집, 사무실, 병원, 공장, 농장, 도로, 교량 등의 수십억 개의 마이크로 컨트롤러에 적용되어 이전에는 불가능했던 응용 프로그램을 잠재적으로 활성화할 것으로 예상됩니다.
원본 링크: https://thenextweb.com/news/tinyml-deep-learning-microcontrollers-syndication
Zhu Xianzhong, 51CTO 커뮤니티 편집자, 51CTO 전문 블로거, 강사, 웨이팡 소재 대학의 컴퓨터 교사 , 프리랜서 프로그래밍 세계의 베테랑입니다. 초창기에는 다양한 Microsoft 기술에 집중했습니다(ASP.NET AJX 및 Cocos 2d-X 관련 기술 서적 3권 집필). 지난 10년 동안 그는 오픈 소스 세계에 전념했습니다(인기 있는 풀 서비스 기술에 익숙함). 스택 웹 개발 기술)을 배우고 OneNet/AliOS+Arduino. /ESP32/Raspberry Pi 등 IoT 개발 기술과 Scala+Hadoop+Spark+Flink 등 빅데이터 개발 기술에 대해 배웠습니다.
위 내용은 작은 기계 학습은 마이크로프로세서에 딥 러닝을 내장할 것을 약속합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!