当尝试在sagemaker上使用Huggingface estimator时,请在Amazon sagemaker上运行训练,例如
# create the Estimator
huggingface_estimator = HuggingFace(
entry_point='train.py',
source_dir='./scripts',
instance_type='ml.p3.2xlarge',
instance_count=1,
role=role,
transformers_version='4.17',
pytorch_version='1.10',
py_version='py38',
hyperparameters = hyperparameters
)
当我尝试将版本增加到transformers_version='4.24'时,它抛出了一个错误,支持的最大版本是4.17。
如何使用AWS Sagemaker与新版本的Huggingface Estimator?
在https://discuss.huggingface.co/t/deploying-open-ais-whisper-on-sagemaker/24761/9上使用新版本的推理有一个说明,但看起来使用它与Huggingface估计器进行训练的方式有点复杂https://discuss.huggingface.co/t/huggingface-pytorch-versions-on-sagemaker/26315/5?u=alvations,并且尚未确认复杂的步骤可以工作。
@alvas,
Amazon SageMaker是一项托管服务,这意味着AWS为您构建和操作工具,从而节省您的时间。在您的示例中,您感兴趣的工具是将新版本的HuggingFace Transformers库与SageMaker集成,应该对其进行开发、测试并部署到生产环境中。因此,这种集成自然会比上游库落后一个或几个版本。但作为一个好处,你总是得到一个版本的变形金刚被证明是稳定的,并与SageMaker兼容。
在您的情况下,您想在SageMaker中尝试最新版本的Transformers,这可能会牺牲稳定性和兼容性(v4.24在不到一个月前刚刚发布)。正如您正确地提到的,这个工作流程可能是"有点复杂",而和没有确认复杂的步骤可以工作。@Arun Lokanatha建议尝试新版本的最简单方法。事实上,transformer可以使用常规的PyTorch估计器,但现在您需要使用较低级别的PyTorch估计器API来代替高级HuggingFace估计器API。上面提到的requirements.txt
看起来像这样:
transformers==4.24.0
作为一个缺点,你需要自己做更多的工作,例如,找出所需的PyTorch/CUDA库的最小版本等。您还要负责测试、保护和优化适合生产级使用的集成,这可能会失去利用SageMaker的全部功能所带来的一些好处。
如果在我的解释之后您最终决定在生产中使用HuggingFace高级估计器,我建议您至少采取以下操作:
- 直接在其源代码中查看最新版本SageMaker Python SDK中支持的当前版本列表(今天它是v4.17.0)。
- 创建或监控一个要求在SageMaker Python SDK中支持新版本的现有问题,例如#3456支持Transformers v4.24.0。
我希望这个答案对你有帮助。
伊万
您可以使用Pytorch估计器,并在源目录中放置一个添加了transformer的requirements.txt。这将确保两件事
- 你可以在huggingface估计器中使用比1.10.2更高版本的pytorch 1.12(当前)。
- 安装新版本的HuggingFace Transformers库。
要实现这一点,您需要像这样构建您的源目录
脚本/train.py/让
并将source_dir属性传递给pytorch估计器
pt_estimator = PyTorch(
entry_point="train.py",
source_dir="scripts",
role=sagemaker.get_execution_role(),
您可以通过
步骤1:使用所需的hf版本创建自定义ECR映像(https://docs.aws.amazon.com/sagemaker/latest/dg/studio-byoi.html)
步骤2: Develop your Train.py
步骤3::将train.py和新的ecr映像uri传递给sagemaker.estimator。(https://sagemaker.readthedocs.io/en/stable/api/training/estimators.html)