CUDA 组件的 Amazon SageMaker ScriptMode Long Python Wheel 构建时间

Amazon SageMaker ScriptMode Long Python Wheel Build Times for CUDA Components

我将 PyTorch 估计器与 SageMaker 一起用于 train/fine-tune 我在多 GPU 机器上的图形神经网络。

安装到 Estimator 容器中的 requirements.txt 具有如下行:

torch-scatter -f https://data.pyg.org/whl/torch-1.10.0+cu113.html
torch-sparse -f https://data.pyg.org/whl/torch-1.10.0+cu113.html
torch-cluster -f https://data.pyg.org/whl/torch-1.10.0+cu113.html
torch-spline-conv -f https://data.pyg.org/whl/torch-1.10.0+cu113.html

当 SageMaker 在端点上的 Estimator 中安装这些要求时,构建轮子需要 ~2 小时。在本地 Linux 框上只需要几秒钟。

SageMaker 估算器:

PyTorch v1.10 CUDA 11.x Python 3.8 实例:ml.p3.16xlarge

我注意到其他需要 CUDA 的基于轮子的组件也存在同样的问题。

我也曾尝试在 p3.16xlarge 上构建 Docker 容器,在 SageMaker 上 运行 构建容器,但它无法识别实例 GPU

我可以做些什么来减少这些构建时间?

软件包的 Pip 安装需要[编译][1],这需要时间。不确定,但在您的本地实例上它可能是第一次构建。一种解决方法是使用以下内容(一次成本)扩展基础 [container][2],并在 SageMaker Estimator

中使用它

添加
./requirements.txt
/tmp/packages/

运行 python -m pip install --no-cache-dir -r /tmp/packages/requirements.txt [1]: https://github.com/rusty1s/pytorch_scatter/blob/master/setup.py [2]: https://github.com/aws/deep-learning-containers/blob/master/pytorch/training/docker/1.10/py3/cu113/Dockerfile.sagemaker.gpu

解决方案是使用正确的组件扩充库存估计器图像,然后在 SageMaker 脚本模式下可以运行:

FROM    763104351884.dkr.ecr.us-east-1.amazonaws.com/pytorch-training:1.10-gpu-py38

COPY requirements.txt /tmp/requirements.txt
RUN pip install -r /tmp/requirements.tx

关键是确保nvidia 运行time在构建时使用,所以daemon.json需要相应配置:

{
    "default-runtime": "nvidia",
    "runtimes": {
        "nvidia": {
            "path": "nvidia-container-runtime",
            "runtimeArgs": []
        }
    }
}

这仍然不是一个完整的解决方案,因为 SageMaker 构建的可行性取决于执行构建的主机。