专栏名称: GitHubStore
分享有意思的开源项目
目录
相关文章推荐
中国新闻网  ·  “90后”苏铧烨,当选市长 ·  昨天  
南国都市报  ·  雨雨雨持续到啥时候?未来一周海南天气→ ·  昨天  
防骗大数据  ·  缅甸遣返200名妙瓦底电诈园区中国籍人员 ·  3 天前  
51好读  ›  专栏  ›  GitHubStore

FONNX:一个 Flutter 库,用于运行 ONNX 模型

GitHubStore  · 公众号  ·  · 2024-02-02 08:32

正文

项目简介


任何边缘上的任何模型


在任何平台上本机运行 ML 模型。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

HuggingFace 中名为 optimum-cli 的命令行工具可转换 Pytorch 和 Tensorflow 模型。这涵盖了绝大多数型号。 optimum-cli 还可以量化模型,显着减小模型大小,通常对精度的影响可以忽略不计。

请参阅 GitHub 上的官方文档或快速入门片段。

另一个自动转换为 ONNX 的工具是 HFOnnx。它用于导出此存储库中的文本嵌入模型。其优点包括模型尺寸明显更小,并将后处理(池化)合并到模型本身中。

  • 简要介绍 ONNX 模型格式和运行时如何工作 Huggingface.com

  • Netron 允许您查看 ONNX 模型、检查其运行时图并将其导出为其他格式


文本嵌入


这些模型生成文本嵌入。嵌入是表示文本含义的浮点数向量。

嵌入是矢量数据库以及检索增强生成的基础 - 决定在 GPT 等 LLM 的有限上下文窗口中提供哪些文本片段。

使用 FONNX 在本地运行可提供显着的隐私优势以及延迟优势。例如,不必将文档每个块的嵌入和文本存储在服务器上,而是可以将它们存储在设备上。MiniLM L6 V2 和 MSMARCO MiniLM L6 V3 都是 Sentence Transformers 项目的产品。他们的网站有很好的文档解释,例如语义搜索

MiniLM L6 V2

使用来自 Reddit、WikiAnswers 和 StackExchange 等不同来源的十亿个句子对进行训练。MiniLM L6 V2 非常适合从文本分类到语义搜索等多种任务。它针对对称搜索进行了优化,其中文本的长度和含义大致相同。输入文本被分为大约 200 个单词,并为每个单词生成一个嵌入。

MSMARCO MiniLM L6 V3

对包含查询答案的网页的 Bing 搜索查询对进行训练。它针对非对称语义搜索进行了优化,将搜索查询与答案进行匹配。此外,它的输入大小是 MiniLM L6 V2 的 2 倍:一次嵌入最多可接受 400 个字作为输入。

基准测试

iPhone 14:67 毫秒
像素折叠:33 毫秒
macOS:13 毫秒
WASM SIMD:41 毫秒

十二月1 个 Mini LM L6 V2 嵌入/200 个字的毫秒数。

  • 于 2023 年 10 月 12 日星期四运行。

  • MacBook Pro M2 Max 上的 macOS 和 WASM-SIMD。

  • 经过 10 次预热后,平均嵌入 100 次。

  • 输入是来自 8 种语言的 lorem ipsum 文本的混合。







请到「今天看啥」查看全文