MNNはアリババのオープンソースの軽量ディープラーニング推論フレームワークで、モバイルおよび組み込みデバイス向けのモデル展開に焦点を当てています。MNNはクロスプラットフォーム互換性を提供し、iOS、Android、組み込みデバイスをサポートし、CPUとGPUの計算性能を最適化します。MNN-LLMは、MNNに基づいて開発された言語モデル実行ソリューションで、ローカルで実行される複数の大規模言語モデルをサポートし、データのプライバシーを保証します。このフレームワークはGitHubでオープンソース化されており、活発なコミュニティ、豊富なドキュメント、サンプルがあり、開発者がすぐに使い始めるのに適しています。
機能一覧
- TensorFlow、Caffe、ONNX、TorchScriptなど、複数のディープラーニング・モデル形式をサポート。
- 提供高效的模型推理,支持 CNN、RNN、GAN 和 変圧器 等神经网络。
- CPUとGPU(Metal、OpenCL、Vulkan)にまたがるマルチデバイス・ハイブリッド・コンピューティングをサポート。
- モバイルやPC上で大規模な言語モデルを実行できるMNN-LLMを提供。
- モデルの数量化(FP16やInt8など)をサポートし、モデルサイズを50%-70%に縮小。
- 制御フローモデリングと汎用コンピューティングをサポートするMNN-Expressを提供。
- 軽量なOpenCVライクな画像処理ライブラリMNN-CVを内蔵。
- MNNモデルをトレーニングするMNN-Trainをサポート。
- テキスト、画像、音声処理をサポートするMNN-LLM-Androidなどのマルチモーダルアプリケーションを提供。
ヘルプの使用
設置プロセス
MNNをローカルで使用するには、まずGitHubリポジトリからプロジェクトコードをクローンする必要がある。詳しいインストール手順は以下の通り:
- クローン倉庫
ターミナルを開き、以下のコマンドを実行してMNNリポジトリをクローンする:git clone https://github.com/alibaba/MNN.git
- 依存関係のインストール
MNNはiOS 8.0+、Android 4.3+、POSIXインターフェイスを持つ組み込みデバイスをサポートしています。必要なコンパイルツールがシステムにインストールされていることを確認してください:- Linux/macOSCMake(3.10以上)、Git、GCC/Clangをインストールしてください。
sudo apt-get install cmake git build-essential
- アンドロイドAndroid NDK(r17以上)をインストールする。
- iOSXcodeとMetalのサポートがインストールされていることを確認してください。
- Linux/macOSCMake(3.10以上)、Git、GCC/Clangをインストールしてください。
- コンパイル MNN
MNNディレクトリに行き、ビルドフォルダを作成し、CMakeを実行する:cd MNN mkdir build && cd build cmake .. -DMNN_BUILD_MINI=ON make -j4
利用する
MNN_BUILD_MINI
リソースに制約のあるデバイスでは、パッケージサイズを約25%削減します。コンパイルされた実行ファイルとライブラリファイルはbuild
カタログ - MNN-LLMのAndroidアプリをインストールする
MNN-LLMのAndroidアプリについては、GitHub Releasesページからコンパイル済みのAPKファイルをダウンロードするか、自分でビルドしてください:- ソースコードをダウンロードする:
project/android/apps/MnnLlmApp
. - Android Studioでプロジェクトを開き、NDKパスを設定し、Build > Build APKをクリックする。
- Android 4.3以上をサポートするAndroidデバイスにAPKをインストールしてください。
- ソースコードをダウンロードする:
MNNを用いたモデル推論
MNNの中核機能はモデル推論である。具体的な手順は以下の通りである:
- モデル変換
MNNはTensorFlow、Caffe、ONNX、その他のモデルフォーマットをサポートしています。モデルはMNN形式に変換する必要があります:- TensorFlowモデルがあるとする。
model.pb
次のコマンドを実行する:./MNNConvert -f TF --modelFile model.pb --MNNModel model.mnn --bizCode MNN
- 転換した
model.mnn
ドキュメントは推論に使える。
- TensorFlowモデルがあるとする。
- モデルのロードと実行
MNNは推論のためにC++とPythonのAPIを提供している。以下は簡単なC++の例である:#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; }
開発者は以下を参照できる。
demo/
ディレクトリのサンプルコード。 - MNN-LLMの使用
MNN-LLMは、大規模な言語モデル(QwenやLlamaなど)のモバイルでの実行をサポートしています。MNN-LLMのAndroidアプリをインストールした後:- アプリケーションを開き、サポートされているモデルのリストをブラウズします。
- クリックするとモデルがダウンロードされ(例:Qwen-7B)、デバイスのローカルに保存されます。
- テキストプロンプトを入力すると、アプリは生成された結果を返す。
- 画像の説明や音声をテキストに変換するなどのマルチモーダルなタスクをサポートし、操作は同様で、対応するファイルをアップロードするだけです。
アプリは完全にオフラインで動作し、プライバシー保護のためデータはサーバーにアップロードされない。
- パフォーマンスを最適化する
- 利用する
FP16
もしかしたらInt8
メモリフットプリントを削減する定量的モデリング。 - GPUアクセラレーションを有効にする(MetalまたはVulkanのデバイスサポートが必要)。
- 複雑なモデルの場合
MNN-Express
コントロールフロー計算の最適化
- 利用する
MNN-CVによる画像処理
MNN-CVはOpenCVに似た軽量な画像処理機能を提供します:
#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;
}
開発者は以下を参照できる。 include/MNN/ImageProcess.hpp
より多くの機能を手に入れよう。
アプリケーションシナリオ
- モバイル向けAIアプリケーション
MNNは、タオバオやネイルなどのアプリケーションで、画像検索、レコメンドシステム、ライブエフェクトをサポートしている。例えば、タオバオでは、ユーザーが画像をアップロードすることで類似商品を素早く見つけられるように、商品画像認識にMNNを使用している。 - 組み込みデバイスの展開
MNNは、スマートホームや産業用シナリオのIoTデバイスをサポートしている。例えば、スマートカメラで顔検出モデルを実行すると、1フレームを処理するのにわずか5ミリ秒しかかからない。 - 地域化言語モデル
MNN-LLMは、ユーザーが携帯電話で大規模な言語モデルを実行することを可能にし、ローカルドキュメントの要約や音声アシスタントのようなプライバシーに配慮したシナリオに適している。 - マルチモーダル課題
MNN-LLMのAndroidアプリは、画像説明、音声テキスト化などの機能をサポートしており、ホームメンテナンス、ボイスメモなどのシーンで活用できる。
品質保証
- MNNがサポートしているモデル・フォーマットは?
MNNはTensorFlow、Caffe、ONNX、TorchScript形式をサポートしており、178のTensorFlowオペレーション、158のONNXオペレーションなどをカバーしている。 - ローエンドデバイスでMNNを動かすには?
利用するMNN_BUILD_MINI
コンパイルオプションでパッケージサイズを小さくしInt8
メモリフットプリントを定量的に削減する。 - MNN-LLMは外部モデルをサポートしていますか?
現在、外部モデルを読み込むにはアプリを再コンパイルする必要があるが、将来的にはモデルのインポートを改善する公式計画がある。 - MNNの業績は?
MNN 在 MobileNet 等模型上比 TensorFlow Lite 快 20% 以上,MNN-LLM 在 Android 上推理速度比 ラマ.cpp 快 8.6 倍。