【问题标题】:How to compile torch 1.5.0 without GPU support?如何在没有 GPU 支持的情况下编译 torch 1.5.0?
【发布时间】:2020-09-19 21:11:34
【问题描述】:

我想在 AWS lambda 上安装 pytorch 1.5.0。由于火炬库非常大,我需要使其尽可能小以适应大小限制。到目前为止,我的脚本看起来像这样:

    mkdir python
    docker run \
        --rm \
        -v $(pwd):/build \
        python:3.8 \
        sh -c "
            cd /build;
            pip3 install torch==1.5.0 -t python/torch --no-cache-dir;
            find . -type d -name '__pycache__' | xargs rm -rf;
            find . -type d -name 'tests' | xargs rm -rf;
            find . -type f -name '*.py[co]' | xargs rm -rf;
        ";

    zip -r9 torch.zip python;

但生成的 zip 文件非常大 (500+ MB)。但是,安装包中最大的文件之一是libtorch_cuda.so。删除该文件会使 zip 文件的大小减少一半。我知道 cuda 是一个用于 GPU 的库,并且由于 AWS lambda 没有 GPU,我不需要这种支持。但是当我删除该文件时,torch 将无法正确import

相比之下,torch 1.4.0 要小得多,因为它默认不包含 cuda 库。

我想要不支持 GPU 的 torch 1.5.0。

有没有办法 pip install torch==1.5.0 没有 gpu 支持?

【问题讨论】:

    标签: python-3.x aws-lambda pip pytorch


    【解决方案1】:

    如前所述,Pytorch 仅安装在 CPU 上。您还可以通过删除用于测试和其他非必要应用程序(libtorch、caffe2 等)的文件来缩小库。

    对于 AWS Lambda,部署 Pytorch 的最佳方式是使用您的依赖项创建一个特殊的 Lambda 层。 Lambda 层的大小限制为 500 MB,而您的部署为 250 MB。您的模型大小也会影响限制。您的 Lambda 部署中应该有您的实际模型文件,而您的依赖项(Pytorch)应该在 Lambda 层中。

    还请记住,您不会在 Lambda 上“安装”任何东西。您创建一个在每次调用您的函数时加载的包。因此,大型部署会出现冷启动问题。预计冷启动会有 10-20 秒的延迟并不是不合理的。您可以通过创建另一个部署来解决此问题,该部署每隔几分钟对您的 lambda 函数执行一次 ping 操作以使其保持热度。但是,如果您需要同时使用多个功能,这可能会变得很棘手。

    在 Lambda 上部署模型的最佳方法是使用 ONNX 或 Torchscript 将模型转换为 protobuf 文件,这样您就可以运行模型而无需完整的 Pytorch 库。

    【讨论】:

      【解决方案2】:

      PyTorch 还分发仅 CPU 版本,您可以使用 pip 安装。虽然它们没有发布到 PyPI,所以您需要从它们自己的注册表中获取它们。

      您可以通过选择 CUDA:None 来获取 PyTorch - Getting Started Locally 上的 CPU 版本。

      pip install torch==1.5.0+cpu -f https://download.pytorch.org/whl/torch_stable.html
      

      【讨论】:

      • 谢谢!顺便说一句,+ 在 pip 安装中是什么意思?这是标准语法吗?
      • 这就是 pip 将附加参数与包名称分开的方式。例如,如果您想从 GitHub 存储库(不是已经打包的版本,而是从代码)安装包,您可以将其指定为 git+https://github.com/user/repo+ 再次将两者分开,因此它是 pip 的标准语法。
      • 顺便说一下,你给的 pip install 和官网的 pip install 都不起作用。但是当我使用 nightly cpu 版本时,它安装成功。
      猜你喜欢
      • 2012-10-06
      • 2013-02-16
      • 2013-02-22
      • 1970-01-01
      • 2021-05-16
      • 1970-01-01
      • 2016-09-30
      • 2012-04-19
      • 1970-01-01
      相关资源
      最近更新 更多