生产中的最小(轻量版)PyTorch 和 Numpy 包
Posted
技术标签:
【中文标题】生产中的最小(轻量版)PyTorch 和 Numpy 包【英文标题】:Minimal (light version) PyTorch and Numpy packages in production 【发布时间】:2020-08-11 06:52:12 【问题描述】:我正在将一个模型投入生产,我需要事先通过 VeraCode Scan 扫描所有依赖项(Pytorch 和 Numpy)。
我注意到大部分缺陷来自 Pytorch 和 numpy 中的测试脚本和 caffe2 模块。
有什么方法可以只构建/安装我在应用程序中使用的这些包的一部分吗? (例如,我不会在应用程序中使用 testing 和 caffe2,所以我的 PyTorch / Numpy 源代码中不需要它们)
【问题讨论】:
【参考方案1】:1。 PyInstaller
您可以使用pyinstaller
打包您的应用程序。此工具使用 Python 和依赖项打包您的应用程序,并仅使用您需要的部分(简化,实际上很难准确跟踪您的包,因此还会捆绑其他一些东西)。
此外,您可能会遇到一些怪癖和变通方法,以使其与 pytorch
和 numpy
一起工作,因为这些依赖关系非常重(尤其是 pytorch
)。
2。仅使用 PyTorch
numpy
和 pytorch
在功能方面非常相似(因为 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 包的主要内容,如果未能解决你的问题,请参考以下文章
[深度学习][转载]Msnhnet一款优秀轻量的用于推理pytorch模型的框架