我们在 docker 容器中部署 PyTorch 模型,这使 docker 容器的大小大幅增加了 1G 以上。
但是当我们部署模型时,培训已经完成,所以从技术上讲,我们不需要包括培训所涉及的机器。
我们甚至不需要反向传播,我们只需要运行神经网络来获得输出。
是否可以只包含执行神经网络的 PyTorch(或其他完全不同的产品)的一部分而不包含其他内容?所以部署是轻量级的。
我们在 docker 容器中部署 PyTorch 模型,这使 docker 容器的大小大幅增加了 1G 以上。
但是当我们部署模型时,培训已经完成,所以从技术上讲,我们不需要包括培训所涉及的机器。
我们甚至不需要反向传播,我们只需要运行神经网络来获得输出。
是否可以只包含执行神经网络的 PyTorch(或其他完全不同的产品)的一部分而不包含其他内容?所以部署是轻量级的。
要尝试的一件事是创建一个只有你需要的精简版本的 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++ 环境中运行的序列化形式。