O MNN é a estrutura de inferência de aprendizagem profunda leve e de código aberto da Alibaba que se concentra na implantação de modelos para dispositivos móveis e incorporados. Ele oferece suporte à inferência e ao treinamento eficientes de modelos e é amplamente utilizado em vários cenários de negócios do Alibaba, como Taobao, Nail e Youku, etc. O MNN oferece compatibilidade entre plataformas, suporta iOS, Android e dispositivos incorporados e otimiza o desempenho computacional da CPU e da GPU. Suas principais vantagens são a leveza, o alto desempenho e a facilidade de uso, o que pode reduzir significativamente o consumo de recursos da implantação do modelo. O MNN-LLM é uma solução de execução de modelo de linguagem desenvolvida com base no MNN, que oferece suporte a vários modelos de linguagem em grande escala executados localmente e garante a privacidade dos dados. A estrutura é de código aberto no GitHub, com uma comunidade ativa, documentação rica e exemplos, o que é adequado para que os desenvolvedores comecem a trabalhar rapidamente.
Lista de funções
- Suporte a vários formatos de modelos de aprendizagem profunda, incluindo TensorFlow, Caffe, ONNX e TorchScript.
- Fornece inferência de modelo eficiente com suporte para CNN, RNN, GAN e Transformador et al. Neural Networks.
- Suporte para computação híbrida de vários dispositivos em CPU e GPU (Metal, OpenCL, Vulkan).
- Fornece o MNN-LLM para permitir a execução de grandes modelos de linguagem em celulares e PCs.
- Oferece suporte à quantificação de modelos (por exemplo, FP16 e Int8), reduzindo o tamanho do modelo 50%-70%.
- Fornece o MNN-Express para dar suporte à modelagem de fluxo de controle e à computação de uso geral.
- MNN-CV integrado, uma biblioteca leve de processamento de imagens semelhante ao OpenCV.
- Suporte ao MNN-Train para treinamento de modelos MNN.
- Fornece aplicativos multimodais, como o MNN-LLM-Android, com suporte para processamento de texto, imagem e áudio.
Usando a Ajuda
Processo de instalação
Para usar o MNN localmente, primeiro você precisa clonar o código do projeto de um repositório do GitHub. Veja a seguir as etapas detalhadas de instalação:
- armazém de clones
Abra um terminal e execute o seguinte comando para clonar o repositório MNN:git clone https://github.com/alibaba/MNN.git
- Instalação de dependências
O MNN é compatível com iOS 8.0+, Android 4.3+ e dispositivos incorporados com interface POSIX. Certifique-se de que as ferramentas de compilação necessárias estejam instaladas em seu sistema:- Linux/macOSInstalação do CMake (3.10 ou superior), do Git e do GCC/Clang.
sudo apt-get install cmake git build-essential
- Android (sistema operacional)Instale o Android NDK (r17 ou superior).
- iOSVerifique se o Xcode e o suporte ao Metal estão instalados.
- Linux/macOSInstalação do CMake (3.10 ou superior), do Git e do GCC/Clang.
- Compilação MNN
Vá para o diretório MNN, crie uma pasta de compilação e execute o CMake:cd MNN mkdir build && cd build cmake .. -DMNN_BUILD_MINI=ON make -j4
fazer uso de
MNN_BUILD_MINI
Reduz o tamanho do pacote em aproximadamente 25% para dispositivos com recursos limitados. Depois de compilados, os arquivos executáveis e de biblioteca resultantes estão localizados no diretóriobuild
Catálogo. - Instale o aplicativo MNN-LLM para Android
Para o aplicativo MNN-LLM para Android, baixe o arquivo APK pré-compilado da página de versões do GitHub ou crie-o você mesmo:- Faça o download do código-fonte:
project/android/apps/MnnLlmApp
. - Abra o projeto usando o Android Studio, configure o caminho do NDK e clique em Build > Build APK.
- Instale o APK em seu dispositivo Android, que deve ser compatível com o Android 4.3 ou superior.
- Faça o download do código-fonte:
Inferência de modelo usando MNN
A principal função do MNN é a inferência de modelos. As etapas específicas são as seguintes:
- transformação de modelos
O MNN é compatível com TensorFlow, Caffe, ONNX e outros formatos de modelo. Os modelos precisam ser convertidos para o formato MNN:- Suponha que haja um modelo do TensorFlow
model.pb
Execute o seguinte comando:./MNNConvert -f TF --modelFile model.pb --MNNModel model.mnn --bizCode MNN
- convertido
model.mnn
Os documentos podem ser usados para raciocínio.
- Suponha que haja um modelo do TensorFlow
- Carregar e executar modelos
O MNN fornece APIs C++ e Python para inferência. Aqui está um exemplo simples em 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; }
Os desenvolvedores podem consultar
demo/
código de amostra no diretório. - Usando o MNN-LLM
O MNN-LLM suporta a execução de modelos de linguagem grandes (por exemplo, Qwen, Llama) no celular. Depois de instalar o aplicativo MNN-LLM para Android:- Abra o aplicativo e procure a lista de modelos compatíveis.
- Clique para fazer o download do modelo (por exemplo, Qwen-7B) e o modelo será armazenado localmente no dispositivo.
- Digite um prompt de texto e o aplicativo retornará o resultado gerado.
- Suporte a tarefas multimodais, como descrição de imagem ou áudio para texto, a operação é semelhante, basta carregar o arquivo correspondente.
O aplicativo é executado totalmente off-line e os dados não são carregados no servidor para proteger a privacidade.
- otimizar o desempenho
- fazer uso de
FP16
talvezInt8
Modelagem quantitativa para reduzir o espaço de memória. - Ative a aceleração da GPU (requer suporte do dispositivo para Metal ou Vulkan).
- Para modelos complexos, o
MNN-Express
Otimização dos cálculos de fluxo de controle.
- fazer uso de
Processamento de imagens com MNN-CV
O MNN-CV oferece funções leves de processamento de imagens semelhantes ao código de amostra do 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;
}
Os desenvolvedores podem consultar include/MNN/ImageProcess.hpp
Obtenha mais recursos.
cenário do aplicativo
- Aplicativos de IA para dispositivos móveis
A MNN oferece suporte à pesquisa de imagens, sistemas de recomendação e efeitos ao vivo em aplicativos como o Taobao e o Nail. Por exemplo, a Taobao usa a MNN para o reconhecimento de imagens de produtos, para que os usuários possam encontrar rapidamente produtos semelhantes carregando imagens. - Implementação de dispositivos incorporados
A MNN é compatível com dispositivos de IoT para cenários domésticos ou industriais inteligentes. Por exemplo, a execução de um modelo de detecção de rosto em uma câmera inteligente leva apenas 5 milissegundos para processar um único quadro. - modelo de idioma localizado
O MNN-LLM permite que os usuários executem grandes modelos de linguagem em seus telefones celulares, adequados para cenários sensíveis à privacidade, como resumo de documentos locais ou assistentes de voz. - tarefa multimodal
O aplicativo MNN-LLM para Android é compatível com descrição de imagens, áudio para texto e outras funções para manutenção doméstica, anotações de voz e outros cenários.
QA
- Quais formatos de modelo são compatíveis com o MNN?
O MNN é compatível com os formatos TensorFlow, Caffe, ONNX e TorchScript, abrangendo 178 operações do TensorFlow, 158 operações do ONNX e muito mais. - Como executar o MNN em dispositivos de baixo custo?
fazer uso deMNN_BUILD_MINI
Opção de compilação para reduzir o tamanho do pacote e permitirInt8
Reduzir quantitativamente o espaço ocupado pela memória. - O MNN-LLM é compatível com modelos externos?
Atualmente, o aplicativo precisa ser recompilado para carregar modelos externos, e há planos oficiais para melhorar a importação de modelos no futuro. - Qual é o desempenho da MNN?
O MNN é mais de 20% mais rápido do que o TensorFlow Lite em modelos como o MobileNet, e a inferência MNN-LLM no Android é mais rápida do que llama.cpp 8,6 vezes mais rápido.