효율적인 경량 딥러닝 프레임워크로, 모바일 및 임베디드 장치에 최적화되어 모델 추론 및 훈련을 지원합니다.
MNN - 알리바바 오픈소스 경량 딥러닝 프레임워크
프로젝트 개요
MNN은 효율적인 경량 딥러닝 프레임워크로, 딥러닝 모델의 추론 및 훈련을 지원하며, 장치 측 추론 및 훈련 분야에서 업계 선도적인 성능을 자랑합니다. 현재 MNN은 타오바오, 티몰, 유쿠, 딩딩, 시엔위 등 알리바바의 30개 이상의 애플리케이션에 통합되어 라이브 스트리밍, 짧은 동영상 촬영, 검색 추천, 즉석 사진 검색, 인터랙티브 마케팅, 권익 제공, 보안 리스크 관리 등 70개 이상의 사용 시나리오를 커버합니다.
GitHub 주소: https://github.com/alibaba/MNN
핵심 특징
1. 극한의 경량화
- iOS 플랫폼: armv7+arm64 플랫폼 정적 라이브러리 크기 약 12MB, 링크 후 실행 파일 증분 약 2MB
- Android 플랫폼: 핵심 so 라이브러리 크기 약 800KB (armv7a - c++_shared)
- MNN_BUILD_MINI를 사용하면 패키지 크기를 약 25% 줄일 수 있습니다.
- FP16/Int8 양자화를 지원하여 모델 크기를 50%-70% 줄일 수 있습니다.
2. 광범위한 모델 지원
- 프레임워크 지원: TensorFlow, Caffe, ONNX, Torchscripts
- 네트워크 유형: CNN, RNN, GAN, Transformer 등 일반적인 신경망
- 연산자 지원:
- 178개 TensorFlow 연산자
- 52개 Caffe 연산자
- 163개 Torchscripts 연산자
- 158개 ONNX 연산자
3. 크로스 플랫폼 호환성
- 모바일 플랫폼: iOS 8.0+, Android 4.3+
- 임베디드 장치: POSIX 인터페이스를 지원하는 장치
- 다중 장치 혼합 계산: CPU와 GPU 협업
- IoT 장치: IoT 장치에서도 사용 가능
4. 고성능 최적화
- ARM/x64 CPU를 최대한 활용하는 최적화된 어셈블리 코드 다수
- Metal/OpenCL/Vulkan을 사용하여 모바일 GPU 추론 지원
- CUDA 및 Tensor Core를 사용하여 NVIDIA GPU 지원
- Winograd 컨볼루션 알고리즘은 3x3, 4x4, 5x5, 6x6, 7x7 등 대칭 컨볼루션에 널리 사용됩니다.
- ARM v8.2 아키텍처 FP16 반정밀도 계산 지원, 속도 2배 향상
- ARM v8.2 sdot 및 VNNI 지원, 속도 2.5배 향상
아키텍처 지원 매트릭스
아키텍처/정밀도 | Normal | FP16 | BF16 | Int8 |
---|---|---|---|---|
CPU | ||||
Native | B | C | B | B |
x86/x64-SSE4.1 | A | B | B | A |
x86/x64-AVX2 | S | B | B | A |
x86/x64-AVX512 | S | B | B | S |
ARMv7a | S | S(ARMv8.2) | S | S |
ARMv8 | S | S(ARMv8.2) | S(ARMv8.6) | S |
GPU | ||||
OpenCL | A | S | C | S |
Vulkan | A | A | C | A |
Metal | A | S | C | S |
CUDA | A | S | C | A |
NPU | ||||
CoreML | A | C | C | C |
HIAI | A | C | C | C |
NNAPI | B | B | C | B |
설명: S-강력 추천 | A-양호한 지원 | B-지원하지만 문제 있음 | C-지원하지 않음
핵심 구성 요소
1. MNN-Converter
모델 변환 도구, 다른 프레임워크 모델을 MNN 모델로 변환 지원:
- TensorFlow(lite), Caffe, ONNX, Torchscripts 지원
- 계산량을 줄이기 위한 그래프 최적화 수행
2. MNN-Compress
모델 압축 도구, 모델 크기를 줄이고 성능 향상
3. MNN-Express
제어 흐름을 지원하는 모델 실행, MNN 연산자를 사용하여 일반적인 계산 수행
4. MNN-CV
경량 이미지 처리 라이브러리, OpenCV와 유사하지만 MNN 기반으로 구현
5. MNN-Train
MNN 모델 훈련 지원
특징적인 응용
MNN-LLM
MNN 엔진을 기반으로 개발된 대규모 언어 모델 런타임 솔루션으로, 모든 사람의 플랫폼(휴대폰/PC/IoT)에 LLM 모델을 로컬로 배포하는 것을 목표로 합니다. 지원:
- 첸웬, 바이촨, 즈푸, LLAMA 등 주요 대규모 언어 모델
- 전체 모달 LLM Android 애플리케이션
- 텍스트 생성, 이미지 이해, 음성 텍스트 변환, 텍스트 생성 이미지
MNN-Diffusion
MNN 엔진 기반의 안정적인 확산 모델 런타임 솔루션으로, 각 플랫폼에 안정적인 확산 모델을 로컬로 배포하는 것을 지원합니다.
학술 성과
MNN 관련 연구 성과는 최고 시스템 회의 OSDI'22 및 MLSys 2020에 발표되어 학계와 산업계에서의 영향력을 입증했습니다.
개발 도구
MNN Workbench
MNN 공식 웹사이트에서 다운로드할 수 있으며, 다음을 제공합니다.
- 사전 훈련된 모델
- 시각화된 훈련 도구
- 장치에 원클릭 모델 배포
Python API
머신러닝 엔지니어에게 사용하기 쉬운 Python 인터페이스를 제공하여 C++ 코드를 작성하지 않고도 추론, 훈련 및 이미지 처리를 수행할 수 있습니다.
요약
MNN은 알리바바에서 오픈 소스로 제공하는 딥러닝 프레임워크로서, 경량화, 고성능, 크로스 플랫폼의 특징을 바탕으로 모바일 및 임베디드 AI 배포에 탁월한 선택이 되었습니다. 기존의 CNN 모델 추론이든 최신 대규모 언어 모델 배포이든 MNN은 완벽한 솔루션을 제공하며, AI 개발자에게 없어서는 안 될 도구 세트입니다.