마이크로컨트롤러에는 RAM과 저장용량이 제한되어 있어 다양한 규모로 처리할 수 있습니다 또한, 마이크로컨트롤러는 현재 제한된 작업 하위 집합을 지원하므로 모델 아키텍처가 가능합니다.
이 문서에서는 실행할 TensorFlow 모델을 변환하는 프로세스를 설명합니다. 마이크로컨트롤러에 따라 다릅니다. 또한 지원되는 작업에 대해 간략히 설명하고 제한된 메모리에 맞게 모델을 설계하고 학습시키는 방법을 설명합니다.
모델을 빌드하고 변환하는 엔드 투 엔드 실행 가능한 예는 다음을 참조하세요. Hello World 예로 들 수 있습니다
모델 변환
학습된 TensorFlow 모델이 마이크로컨트롤러에서 실행되도록 변환하려면 다음을 사용해야 합니다.
LiteRT 변환기 Python API
이렇게 하면 모델이
FlatBuffer
: 모델 크기를 줄입니다.
LiteRT 작업을 사용하도록 수정할 수 있습니다.
모델 크기를 가능한 한 작게 하려면 먼저 학습 후 양자화를 참조하세요.
C 배열로 변환
다수의 마이크로컨트롤러 플랫폼은 네이티브 파일 시스템을 지원하지 않습니다. 이 프로그램에서 모델을 사용하는 가장 쉬운 방법은 C 배열로 모델을 포함하는 것입니다. 프로그램에 컴파일해야 합니다
다음 Unix 명령어는
char
배열인 LiteRT 모델:
xxd -i converted_model.tflite > model_data.cc
출력은 다음과 비슷합니다.
unsigned char converted_model_tflite[] = {
0x18, 0x00, 0x00, 0x00, 0x54, 0x46, 0x4c, 0x33, 0x00, 0x00, 0x0e, 0x00,
// <Lines omitted>
};
unsigned int converted_model_tflite_len = 18200;
파일을 생성한 후에는 프로그램에 포함할 수 있습니다. 그것은
메모리 개선을 위해 배열 선언을 const
로 변경하는 것이 중요합니다.
효율적으로 배웠습니다
프로그램에 모델을 포함하고 사용하는 방법의 예는 다음을 참조하세요.
hello_world_test.cc
드림
Hello World 예에서
모델 아키텍처 및 학습
마이크로컨트롤러에서 사용할 모델을 설계할 때는 모델 크기, 워크로드, 사용되는 작업을 정의할 수 있습니다
모델 크기
모델은 대상 기기의 메모리 내에 맞을 수 있을 만큼 작아야 함 바이너리로 사용할 수 있습니다.
더 작은 모델을 만들려면 모델에서 더 적은 수의 더 작은 레이어를 사용할 수 있습니다. 살펴봤습니다 그러나 소형 모델은 과소적합 문제를 겪을 가능성이 더 높습니다. 즉, 많은 문제에 대해 가장 큰 모델을 크기가 매우 큽니다. 그러나 더 큰 모델을 사용하면 프로세서 워크로드 증가
워크로드
모델의 크기와 복잡성은 워크로드에 영향을 미칩니다. 크고 복잡함 더 높은 가동 주기로 이어질 수 있습니다. 즉, 기기의 프로세서가 업무 시간이 늘어나고 유휴 시간이 줄어듭니다 이렇게 하면 이는 에너지 소비량이나 열량 소비와 관련된 중요한 문제일 수 있습니다. 애플리케이션입니다.
운영 지원
마이크로컨트롤러용 LiteRT는 현재 가능한 모델 아키텍처에 영향을 미치는 TensorFlow 작업 실행할 수 있습니다 Google은 2023년 1분기부터 2014년까지 운영 지원을 확대하기 위해 특정 아키텍처에 대한 참조 구현 및 최적화를 지원합니다.
지원되는 작업은 다음 파일에서 확인할 수 있습니다.
micro_mutable_ops_resolver.h
드림