MNN ist Alibabas Open-Source-Framework für Deep Learning, das sich auf die Modellbereitstellung für mobile und eingebettete Geräte konzentriert. Es unterstützt effiziente Modellinferenz und -training und wird in einer Vielzahl von Alibaba-Geschäftsszenarien wie Taobao, Nail und Youku usw. eingesetzt. MNN ist plattformübergreifend kompatibel, unterstützt iOS, Android und eingebettete Geräte und optimiert die Rechenleistung von CPU und GPU. MNN-LLM ist eine Lösung für die Ausführung von Sprachmodellen, die auf der Grundlage von MNN entwickelt wurde. Sie unterstützt die lokale Ausführung mehrerer großer Sprachmodelle und garantiert den Datenschutz. Das Framework ist Open-Source auf GitHub, mit einer aktiven Community, umfangreicher Dokumentation und Beispielen, die für Entwickler geeignet sind, um schnell loszulegen.
Funktionsliste
- Unterstützung für mehrere Deep-Learning-Modellformate, einschließlich TensorFlow, Caffe, ONNX und TorchScript.
- Bietet eine effiziente Modellinferenz mit Unterstützung für neuronale Netze wie CNN, RNN, GAN und Transformer.
- Unterstützung für hybride Berechnungen mit mehreren Geräten auf CPU und GPU (Metal, OpenCL, Vulkan).
- MNN-LLM ermöglicht die Ausführung großer Sprachmodelle auf Mobiltelefonen und PCs.
- Unterstützt Modellquantisierung (z.B. FP16 und Int8), wodurch die Modellgröße 50%-70% reduziert wird.
- Bietet MNN-Express zur Unterstützung der Kontrollflussmodellierung und der allgemeinen Datenverarbeitung.
- MNN-CV, eine leichtgewichtige, OpenCV-ähnliche Bildverarbeitungsbibliothek, ist integriert.
- Unterstützung für MNN-Train zum Trainieren von MNN-Modellen.
- Bietet multimodale Anwendungen wie MNN-LLM-Android mit Unterstützung für Text-, Bild- und Audioverarbeitung.
Hilfe verwenden
Einbauverfahren
Um MNN lokal zu verwenden, müssen Sie zunächst den Projektcode aus einem GitHub-Repository klonen. Hier sind die detaillierten Installationsschritte:
- Klon-Lager
Öffnen Sie ein Terminal und führen Sie den folgenden Befehl aus, um das MNN-Repository zu klonen:git clone https://github.com/alibaba/MNN.git
- Installation von Abhängigkeiten
MNN unterstützt iOS 8.0+, Android 4.3+ und eingebettete Geräte mit POSIX-Schnittstelle. Stellen Sie sicher, dass die erforderlichen Kompilierungswerkzeuge auf Ihrem System installiert sind:- Linux/macOSInstallieren Sie CMake (3.10 oder höher), Git und GCC/Clang.
sudo apt-get install cmake git build-essential
- Android (Betriebssystem)Installieren Sie Android NDK (r17 oder höher).
- iOSStellen Sie sicher, dass Xcode und die Metal-Unterstützung installiert sind.
- Linux/macOSInstallieren Sie CMake (3.10 oder höher), Git und GCC/Clang.
- Zusammenstellung MNN
Gehen Sie in das MNN-Verzeichnis, erstellen Sie einen Build-Ordner und starten Sie CMake:cd MNN mkdir build && cd build cmake .. -DMNN_BUILD_MINI=ON make -j4
ausnutzen
MNN_BUILD_MINI
Verringert die Paketgröße um etwa 25% für Geräte mit eingeschränkten Ressourcen. Nach der Kompilierung befinden sich die resultierenden ausführbaren Dateien und Bibliotheken im Verzeichnisbuild
Katalog. - MNN-LLM Android-App installieren
Für die MNN-LLM-Android-App können Sie die vorkompilierte APK-Datei von der GitHub-Releases-Seite herunterladen oder sie selbst erstellen:- Laden Sie den Quellcode herunter:
project/android/apps/MnnLlmApp
. - Öffnen Sie das Projekt mit Android Studio, konfigurieren Sie den NDK-Pfad und klicken Sie auf Build > Build APK.
- Installieren Sie die APK auf Ihrem Android-Gerät, das Android 4.3 oder höher unterstützen sollte.
- Laden Sie den Quellcode herunter:
Modellinferenz mit MNN
Die Kernfunktion von MNN ist die Modellinferenz. Im Folgenden werden die einzelnen Schritte beschrieben:
- Modellumwandlung
MNN unterstützt TensorFlow, Caffe, ONNX und andere Modellformate. Die Modelle müssen in das MNN-Format konvertiert werden:- Angenommen, es gibt ein TensorFlow-Modell
model.pb
führen Sie den folgenden Befehl aus:./MNNConvert -f TF --modelFile model.pb --MNNModel model.mnn --bizCode MNN
- umgewandelt
model.mnn
Dokumente können zur Argumentation verwendet werden.
- Angenommen, es gibt ein TensorFlow-Modell
- Laden und Ausführen von Modellen
MNN bietet C++- und Python-APIs für die Inferenz. Hier ist ein einfaches C++ Beispiel:#include <MNN/Interpreter.hpp> int main() { auto mnnNet = MNN::Interpreter::createFromFile("model.mnn"); auto session = mnnNet->createSession(); // 输入数据 auto input = mnnNet->getSessionInput(session, nullptr); // 运行推理 mnnNet->runSession(session); // 获取输出 auto output = mnnNet->getSessionOutput(session, nullptr); return 0; }
Entwickler können sich beziehen auf
demo/
Beispielcode im Verzeichnis. - Verwendung von MNN-LLM
MNN-LLM unterstützt die Ausführung großer Sprachmodelle (z.B. Qwen, Llama) auf dem Handy. Nach der Installation der MNN-LLM Android App:- Öffnen Sie die Anwendung und durchsuchen Sie die Liste der unterstützten Modelle.
- Klicken Sie auf , um das Modell herunterzuladen (z.B. Qwen-7B) und das Modell wird lokal auf dem Gerät gespeichert.
- Geben Sie eine Texteingabe ein, und die App gibt das generierte Ergebnis zurück.
- Unterstützung multimodaler Aufgaben, wie Bildbeschreibung oder Audio zu Text, die Bedienung ist ähnlich, einfach die entsprechende Datei hochladen.
Die App läuft komplett offline und die Daten werden nicht auf den Server hochgeladen, um die Privatsphäre zu schützen.
- Leistung optimieren
- ausnutzen
FP16
vielleichtInt8
Quantitative Modellierung zur Reduzierung des Speicherbedarfs. - Aktivieren Sie die GPU-Beschleunigung (erfordert Geräteunterstützung für Metal oder Vulkan).
- Bei komplexen Modellen ist die
MNN-Express
Optimierung der Kontrollflussberechnungen.
- ausnutzen
Bildverarbeitung mit MNN-CV
MNN-CV bietet leichtgewichtige Bildverarbeitungsfunktionen ähnlich wie OpenCV. Beispielcode:
#include <MNN/ImageProcess.hpp>
int main() {
MNN::CV::ImageProcess::Config config;
config.destFormat = MNN::CV::RGB;
auto process = MNN::CV::ImageProcess::create(config);
// 加载图像
process->convert(imageData, width, height, 0, output);
return 0;
}
Entwickler können sich beziehen auf include/MNN/ImageProcess.hpp
Erhalten Sie mehr Funktionen.
Anwendungsszenario
- KI-Anwendungen für Mobiltelefone
MNN unterstützt die Bildsuche, Empfehlungssysteme und Live-Effekte in Anwendungen wie Taobao und Nail. Taobao beispielsweise nutzt MNN für die Erkennung von Produktbildern, damit Nutzer durch Hochladen von Bildern schnell ähnliche Produkte finden können. - Einsatz eingebetteter Geräte
MNN unterstützt IoT-Geräte für Smart-Home- oder Industrieszenarien. Die Ausführung eines Gesichtserkennungsmodells in einer intelligenten Kamera dauert beispielsweise nur 5 Millisekunden, um ein Einzelbild zu verarbeiten. - lokalisiertes Sprachmodell
MNN-LLM ermöglicht es den Nutzern, große Sprachmodelle auf ihren Mobiltelefonen auszuführen, die sich für datenschutzsensitive Szenarien wie die lokale Zusammenfassung von Dokumenten oder Sprachassistenten eignen. - multimodale Aufgabe
Die MNN-LLM-Android-App unterstützt Bildbeschreibungen, die Umwandlung von Audio in Text und andere Funktionen für die Hauswartung, Sprachnotizen und andere Szenarien.
QA
- Welche Modellformate werden von MNN unterstützt?
MNN unterstützt die Formate TensorFlow, Caffe, ONNX und TorchScript und deckt 178 TensorFlow-Operationen, 158 ONNX-Operationen und mehr ab. - Wie kann MNN auf Low-End-Geräten ausgeführt werden?
ausnutzenMNN_BUILD_MINI
Kompilieroption, um die Paketgröße zu reduzieren und dieInt8
Quantitative Reduzierung des Speicherbedarfs. - Unterstützt MNN-LLM externe Modelle?
Derzeit muss die App neu kompiliert werden, um externe Modelle zu laden, und es gibt offizielle Pläne, den Modellimport in Zukunft zu verbessern. - Wie schneidet MNN ab?
MNN ist über 20% schneller als TensorFlow Lite auf Modellen wie MobileNet, und MNN-LLM ist 8,6x schneller als llama.cpp für Inferenz auf Android.