PyTorch 对于部署来说太重了,有没有用于运行神经网络的轻量级 pytorch?

数据挖掘 火炬
2022-03-01 16:30:51

我们在 docker 容器中部署 PyTorch 模型,这使 docker 容器的大小大幅增加了 1G 以上。

但是当我们部署模型时,培训已经完成,所以从技术上讲,我们不需要包括培训所涉及的机器。

我们甚至不需要反向传播,我们只需要运行神经网络来获得输出。

是否可以只包含执行神经网络的 PyTorch(或其他完全不同的产品)的一部分而不包含其他内容?所以部署是轻量级的。

1个回答

要尝试的一件事是创建一个只有你需要的精简版本的 Pytorch。我为 AWS Lambda 层做了类似的事情,这是我能够删除的内容(这是针对 Pytorch 1.1,从那以后事情可能已经改变):

find . -type d -name "tests" -exec rm -rf {} +
find . -type d -name "__pycache__" -exec rm -rf {} +
rm -rf ./{caffe2,wheel,pkg_resources,boto*,aws*,pip,pipenv,setuptools} 
rm ./torch/lib/libtorch.so 
rm -rf ./torch/test

如果这还不够,您需要考虑使用 ONNX 或 TorchScript/torch.jit。ONNX 将您的模型导出到二进制 protobuf 文件。TorchScript 将其导出为可在 C++ 环境中运行的序列化形式。