生产中的最小(轻量版)PyTorch 和 Numpy 包

Posted

技术标签:

【中文标题】生产中的最小(轻量版)PyTorch 和 Numpy 包【英文标题】:Minimal (light version) PyTorch and Numpy packages in production 【发布时间】:2020-08-11 06:52:12 【问题描述】:

我正在将一个模型投入生产,我需要事先通过 VeraCode Scan 扫描所有依赖项(PytorchNumpy)。

我注意到大部分缺陷来自 Pytorch 和 numpy 中的测试脚本和 caffe2 模块。

有什么方法可以只构建/安装我在应用程序中使用的这些包的一部分吗? (例如,我不会在应用程序中使用 testing 和 caffe2,所以我的 PyTorch / Numpy 源代码中不需要它们)

【问题讨论】:

【参考方案1】:

1。 PyInstaller

您可以使用pyinstaller 打包您的应用程序。此工具使用 Python 和依赖项打包您的应用程序,并仅使用您需要的部分(简化,实际上很难准确跟踪您的包,因此还会捆绑其他一些东西)。

此外,您可能会遇到一些怪癖和变通方法,以使其与 pytorchnumpy 一起工作,因为这些依赖关系非常重(尤其是 pytorch)。

2。仅使用 PyTorch

numpypytorch 在功能方面非常相似(因为 PyTorch 试图与之兼容)因此也许你只能使用它们,这将进一步简化整个事情

3。使用 C++

根据您应用程序的其他部分,您可以使用 PyTorch's C++ frontend 在 C++ 中编写它(至少是神经网络),它自 1.5.0 发布以来是稳定的。

走这条路将允许您静态编译 PyTorch 的 .cpp 源代码(因此所有依赖项都链接),这允许您使用相对较小的二进制大小(与 PyTorch 的 1GB+ 相比,30Mb),但需要很多工作的。

【讨论】:

感谢@Szymon 的出色回应!看起来 PyInstaller 与 FastAPI 有一些问题。它适用于 Flask,但使用 FastAPI 时出现错误。我在这里发布另一个问题:***.com/questions/61491358/…,如果您能看一下,我将不胜感激。

以上是关于生产中的最小(轻量版)PyTorch 和 Numpy 包的主要内容,如果未能解决你的问题,请参考以下文章

PyTorch中,18个速度和内存效率优化技巧

PyTorch中,18个速度和内存效率优化技巧

nump库的简单函数介绍

[深度学习][转载]Msnhnet一款优秀轻量的用于推理pytorch模型的框架

CSDN独家 | 全网首发 | Pytorch深度学习·理论篇(2023版)目录

pytorch自定义损失函数最小化向量之间的角度