kraiskil/onnx2c
Open Neural Network Exchange to C compiler.
해결하는 문제
Onnx2c는 ONNX 모델을 순수한 C 코드로 변환하는 컴파일러로, 마이크로컨트롤러(TinyML)에서 신경망 추론을 실행할 수 있게 합니다. 일반적으로 임베디드 시스템에서는 리소스가 제한적이기 때문에, 무거운 런타임 라이브러리나 동적 메모리 할당에 의존하는 것을 제거합니다.
작동 방식
이 도구는 ONNX 파일을 읽고, 모델의 논리와 가중치를 포함하는 단일 C 파일을 생성합니다. 마이크로컨트롤러와의 호환성을 보장하기 위해 컴파일 시 버퍼 할당을 사용하고, stdio.h와 같은 표준 I/O 라이브러리를 피합니다. 또한 메모리 재사용을 위한 텐서 유니온화 최적화 및 AVR 프로세서 전용 최적화(상수를 명령 메모리에 저장)를 포함합니다.
대상 사용자
PyTorch나 TensorFlow와 같은 프레임워크에서 내보낸 학습된 신경망을, 전체 ML 런타임의 오버헤드 없이 실행해야 하는 마이크로컨트롤러 및 임베디드 시스템 개발자에게 적합합니다.
주요 특징
- 동적 할당 없음: 컴파일 시 버퍼를 사용하여 소형 장치에서 힙 분할 및 충돌을 방지합니다.
- C 표준 호환성: 표준 C 수학 라이브러리만 필요로 하여 다양한 C 컴파일러 간에 매우 포터블합니다.
- TinyML 최적화: 기존 임베디드 프로젝트에 쉽게 통합할 수 있는 단일 C 파일을 생성합니다.
- 대칭적 지원: GCC 및 Clang 확장 기능을 통해
float16및bfloat16데이터 유형을 지원합니다. - 메모리 효율성: 상수 텐서를
const로 표시하여 플래시 메모리에 유지함으로써 RAM 사용량을 줄이는 최적화를 포함합니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트