优化AI模型:更快、更小、更便宜、更环保

社区文章 发布于2025年4月4日

我们的核心是一支由机器学习研究人员组成的团队,致力于简化AI模型的优化。许多人问我们AI模型压缩是如何工作的,所以我们决定将pruna软件包开源!

优化前:推理时间4.06秒
优化后:推理时间1.44秒

Pruna是一个为开发者打造的模型优化框架,它能让您以最小的开销交付更快、更高效的模型。它提供了一套全面的压缩算法,包括缓存量化剪枝蒸馏编译技术,让您的模型:

  • 更快:通过先进的优化技术加速推理时间
  • 更小:在保持质量的同时减小模型大小
  • 更便宜:降低计算成本和资源需求
  • 更环保:减少能源消耗和环境影响

该工具包设计简单,只需几行代码即可优化您的模型。它支持各种模型类型,包括LLM、扩散模型和流匹配模型、视觉Transformer、语音识别模型等。

这使得任何机器学习工程师,无论其背景如何,都能构建高效的AI产品和应用程序,而不会浪费他们的开发时间。

快速入门

首先,Pruna已在PyPI上发布,因此您可以使用pip安装它

pip install pruna

Pruna入门非常简单易行!

首先,加载任何预训练模型。以下是使用Stable Diffusion的示例:

from diffusers import StableDiffusionPipeline
base_model = StableDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4")

然后,使用Pruna的smash函数优化您的模型。您可以使用SmashConfig自定义优化过程

from pruna import smash, SmashConfig

# Create and smash your model
smash_config = SmashConfig()
smash_config["cacher"] = "deepcache"
smashed_model = smash(model=base_model, smash_config=smash_config)

您的模型现已优化,您可以像使用原始模型一样使用它

smashed_model("An image of a cute prune.").images[0]

Pruna提供了各种不同的压缩和优化算法,让您可以结合不同的算法以获得最佳结果

from pruna import smash, SmashConfig

# Create and smash your model
smash_config = SmashConfig()
smash_config["cacher"] = "deepcache"
smash_config["compiler"] = "stable_fast"
smashed_model = smash(model=base_model, smash_config=smash_config)

然后,您可以使用我们的评估界面来衡量您模型的性能

from pruna.evaluation.task import Task
from pruna.evaluation.evaluation_agent import EvaluationAgent
from pruna.data.pruna_datamodule import PrunaDataModule

task = Task("image_generation_quality", datamodule=PrunaDataModule.from_string("LAION256")) 
eval_agent = EvaluationAgent(task) 
eval_agent.evaluate(smashed_model)

这是一个最小化的示例,但您是否在寻找最大化的示例?您可以查看我们的文档,了解所有支持的算法概述,以及更多用例和示例的教程。

那么,接下来呢?

去年12月,我们通过从完全私有模式转向免费增值模式,达到了一个中期里程碑。但开源一直是我们的目标。我们相信AI的未来是开放的。

当然,这只是一个开始……我们希望能够帮助塑造AI效率社区,以实现更易于访问和可持续的AI。

我们期待您的反馈!我们鼓励您尝试该库并提出问题和提交PR。别忘了,如果您喜欢这个库,请给我们点亮一颗星⭐

🌍 加入Pruna AI社区!

Twitter GitHub LinkedIn Discord Reddit

社区

注册登录 评论