OnnxStream 项目介绍
OnnxStream是一个简洁且高效的推理库,旨在通过减少内存消耗来实现大模型在资源受限设备上运行的可能。例如,它可在仅有512MB内存的Raspberry Pi Zero 2上运行Stable Diffusion 1.5模型,而无需增加交换空间或将中间结果卸载到磁盘。
项目的背景
机器学习领域中,很多框架和库的主要目标是最大程度地降低推理延迟或提高吞吐量,这通常以内存的高消耗为代价。然而,OnnxStream致力于降低内存使用,适合需要在内存受限的设备上进行推理的应用场景。
技术特点
-
推理引擎独立于权重提供者:OnnxStream通过‘WeightsProvider’类分离推理引擎和模型权重的提供者。用户可以自定义获取模型权重的方式,比如直接从HTTP服务器下载。
-
低内存消耗:使用动态和静态量化技术,OnnxStream的内存使用可比OnnxRuntime少55倍,尽管可能会导致50%到200%的延迟增加。
-
多种优化支持:支持注意力切片、动态量化和FP16计算等优化技术,以降低资源消耗并提升计算效率。
-
Async量化和Attention切片:这些技术确保了VAE解码器用的内存得到极大压缩,使其能在Raspberry Pi这样的设备上运行。
稳定扩散模型支持
-
Stable Diffusion 1.5 和 Stable Diffusion XL 1.0:OnnxStream不仅支持基本版本的Stable Diffusion模型,还支持更高阶的SDXL系列。而且,通过定制的VAE解码器和计算优化,OnnxStream在低内存环境中仍不失质量。
-
SDXL Turbo 1.0:这是一种更快速的变体,优化图像生成过程以减少步骤,并且能在非常较短的时间内(如29分钟内)生成高质量图像。
WebAssembly 支持
2024年9月19日,OnnxStream引入了WebAssembly支持,这进一步扩展了在各种平台上运行该库的能力。它允许在没有安装本地环境的情况下,通过网络浏览器访问和运行模型。
应用场景
OnnxStream尤其适用于资源有限的平台,例如物联网装置和边缘设备,它能有效地降低这些平台上运行AI模型的内存要求。因此,它可以广泛应用于各类需要在小型设备上执行复杂AI任务的项目中,例如智能家居或移动设备应用。
总结
OnnxStream以其独特的内存优化技术,适应了现代AI应用的需求。尤其在设备资源有限的情况下,它不单能降低硬件门槛,还保持了较高的推理效率和模型灵活性。这使得OnnxStream成为了开发者在追求低开销和高效能计算时的一款利器。