FONNX
任何模型,任何边缘设备
在任何平台上原生运行机器学习模型。ONNX模型可以在iOS、Android、Web、Linux、Windows和macOS上运行。
什么是FONNX?
FONNX是一个用于运行ONNX模型的Flutter库。Flutter和FONNX原生运行在iOS、Android、Web、Linux、Windows和macOS上。FONNX利用ONNX提供原生加速功能,从iOS的CoreML,到Android的Android Neural Networks API,再到Web的WASM SIMD。大多数模型都可以轻松转换为ONNX格式,包括来自Pytorch、Tensorflow等模型。
获取ONNX模型
Hugging Face
? Hugging Face 拥有大量模型,包括许多ONNX格式的模型。90%的模型是Pytorch,可以转换为ONNX。
这是ONNX模型的搜索结果。
从Pytorch、Tensorflow及更多导出ONNX
一个名为optimum-cli的命令行工具(来自HuggingFace)可以将Pytorch和Tensorflow模型转换为ONNX格式。这涵盖了绝大多数模型。optimum-cli还可以量化模型,显著减小模型大小,通常对准确性影响微乎其微。
请参阅官方文档或GitHub上的快速入门代码片段。另一个自动化转换为ONNX的工具是HFOnnx。它被用于导出此仓库中的文本嵌入模型。其优势包括显著减小的模型大小,以及将后处理(池化)整合到模型本身。
- 关于ONNX模型格式和运行时工作原理的简要介绍:huggingface.com
- Netron允许您查看ONNX模型,检查它们的运行时图,并将其导出为其他格式。
文本嵌入
这些模型生成文本的嵌入。嵌入是代表文本含义的浮点数向量。嵌入是向量数据库的基础,也是检索增强生成(决定在LLM(如GPT)的有限上下文窗口中提供哪些文本片段)的基础。
使用FONNX在本地运行提供了显著的隐私和延迟优势。例如,不必将文档每个块的嵌入和文本存储在服务器上,而是可以将其存储在设备上。MiniLM L6 V2和MSMARCO MiniLM L6 V3都是Sentence Transformers项目的产物。它们的网站上有出色的文档,解释了例如语义搜索。
MiniLM L6 V2
在从Reddit到WikiAnswers再到StackExchange等各种来源的十亿个句子对上进行了训练。MiniLM L6 V2非常适合多种任务,从文本分类到语义搜索。它针对对称搜索进行了优化,其中文本的长度和含义大致相同。输入文本被分成大约200个词,并为每个词生成一个嵌入。? Hugging Face
MSMARCO MiniLM L6 V3
在包含查询答案的Bing搜索查询与网页配对上进行了训练。它针对不对称语义搜索进行了优化,将搜索查询与答案进行匹配。此外,它的输入尺寸是MiniLM L6 V2的2倍:它可以接受最多400个词作为单个嵌入的输入。? Hugging Face
基准测试
iPhone 14: 67毫秒 Pixel Fold: 33毫秒 macOS: 13毫秒 WASM SIMD: 41毫秒
1个Mini LM L6 V2嵌入/200词的平均毫秒数。
- 运行于2023年10月12日星期四。
- macOS和WASM-SIMD在MacBook Pro M2 Max上。
- 平均100个嵌入,经过10次预热。
- 输入是来自8种语言的Lorem ipsum文本混合。