Добавление большего количества экземпляров увеличивает общую память, которая у вас есть, но не увеличивает максимальную память, которую может использовать каждый обучающий экземпляр.
Скорее всего, уменьшение размера пакета в вашем коде должно помочь вам восстановиться после ошибки.
Когда вы создаете обучающее задание в SageMaker, ваш код устанавливается в нескольких экземплярах, а данные изS3 также копируется в эти экземпляры.Ваш код обращается к данным из локального тома экземпляра (обычно через EBS), аналогично тому, как он будет работать локально.В каждом случае он будет выполнять следующие шаги:
- запускает контейнер Docker, оптимизированный для TensorFlow.
- загружает набор данных.
- настройка переменных среды, связанных с обучением
- настройка распределенной среды обучения, если настроено использование сервера параметров
- запускает асинхронное обучение
Чтобы воспользоватьсяраспределение Вы должны включить параметры распространения TensorFlow (см .: https://sagemaker.readthedocs.io/en/stable/using_tf.html#distributed-training)
from sagemaker.tensorflow import TensorFlow
tf_estimator = TensorFlow(entry_point='train_aws.py',
role=role,
train_instance_count=2,
train_instance_type='ml.c4.xlarge',
framework_version='1.12.0',
py_version='py3',
training_steps= 100,
evaluation_steps= 100,
hyperparameters={'learning_rate': 0.01},
distributions={'parameter_server': {'enabled': True}})
tf_estimator.fit('s3://bucket/path/to/training/data')
Также обратите внимание, что вы можете равномерно распределять ваши данные из S3 в обучающие экземпляры, что может ускорить ваше обучение в каждом экземпляревидит только часть данных.