仅CPU本地机器能否开展HuggingFace/SageMaker本地开发调试?
问题描述
正式迁移至SageMaker开展实际训练前,本地基于sagemaker.huggingface.HuggingFace做开发调试,按如下方式初始化HuggingFace估算器:
HF_estimator = HuggingFace(entry_point='train.py', instance_type='local' ...)
后续调用HF_estimator.fit()方法,此时train.py内仅编写了打印后退出的测试逻辑,用于验证流程是否通畅,触发如下报错:
ValueError: Unsupported processor: cpu. You may need to upgrade your SDK version (pip install -U sagemaker) for newer processors. Supported processor(s): gpu.
需要找到可行方案绕过该限制,完成本地开发调试。
解决方案
以下三个方案都可以跑通本地调试流程,根据自己的本地环境选择即可:
- 有本地NVIDIA GPU环境的话,直接修改实例类型参数
把初始化参数里的instance_type='local'改成instance_type='local_gpu'即可。这个模式会直接调用本地GPU资源运行训练脚本,完全绕开CPU处理器的校验逻辑,调试环境和SageMaker云端GPU训练实例的一致性最高,是优先推荐的方案。 - 没有本地GPU的话,手动指定CPU版训练镜像绕过校验
这个报错的核心原因是新版本SageMaker SDK的HuggingFace估算器,对本地CPU模式的默认镜像做了限制,手动传入支持CPU的HuggingFace训练镜像地址即可跳过校验。注意本地模式下不会真实校验IAM角色权限,只要填格式合法的角色ARN字符串就行,示例代码:HF_estimator = HuggingFace( entry_point='train.py', instance_type='local', role='arn:aws:iam::123456789012:role/test', image_uri='763104351884.dkr.ecr.us-east-1.amazonaws.com/huggingface-pytorch-training:1.13.1-transformers4.26.0-cpu-py39-ubuntu20.04', # 其余原有配置参数保持不变 ) - 不想改现有配置的话,直接降级SageMaker SDK版本
这个CPU本地模式的限制是后续版本加上的,直接把本地环境的SageMaker SDK降到未加限制的旧版本即可,执行安装命令:
降级完成后不需要修改原有初始化代码,直接运行pip install sagemaker==2.140.0fit()就能正常启动本地CPU调试。
注意:本地调试仅用于验证训练脚本的逻辑通顺性、参数传递是否正确、依赖是否能正常导入,正式提交SageMaker云端训练任务时,记得把实例类型、镜像地址、角色ARN替换成云端对应的正式配置,不要直接用调试配置提交任务。
内容的提问来源于stack exchange,提问作者plamb
相关产品推荐
相关产品推荐

