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 构建的可行性取决于执行构建的主机。
我将 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 构建的可行性取决于执行构建的主机。