Я немного новичок в AWS и Sagemaker и надеюсь, что у кого-нибудь есть простое решение для моей проблемы. Я тренирую модель с помощью PyTorch Estimator в Sagemaker, где данные для обучения велики (около 100 ГБ). Я проверил свой код с меньшим количеством данных, которые я мог легко загрузить на S3 с диска и передать в estimator.fit()
. Это мой текущий подход:
import sagemaker
from sagemaker.pytorch import PyTorch
sagemaker_session = sagemaker.Session()
role = sagemaker.get_execution_role()
source_dir = './main'
entry_point = 'entry.py'
bucket='my-bucket'
train_data_key = 'my_small_train_data.tar.gz'
val_data_key = 'my_small_val_data.tar.gz'
train_data_location = 's3://{}/{}'.format(bucket, train_data_key)
val_data_location = 's3://{}/{}'.format(bucket, val_data_key)
input_data = {'train':train_data_location,
'val':val_data_location}
estimator = PyTorch(entry_point=entry_point,
source_dir=source_dir,
role=role,
framework_version='1.3.1',
train_instance_count=1,
train_volume_size = 120,
train_instance_type='ml.p3.2xlarge',
py_version='py3',
hyperparameters={})
estimator.fit(input_data)
Теперь я хочу обучить модель со всем набором данных, который доступен через предопределенный AWS S3 url. У меня вопрос: есть ли простой способ передать эти данные напрямую в fit()
, аналогично подходу, который я использую сейчас? Я открыт и для других предложений.
Альтернативы, которые я уже попробовал:
Загрузка данных тренировки на мой диск и загрузка их в корзину и использование того же самого код. Это занимает непомерно много времени.
Позвоните fit()
, не передавая обучающие данные, и загрузите их в экземпляр, используя curl / wget. Это явно не правильный путь к go, поскольку память экземпляра должна быть достаточно большой, чтобы хранить 100 ГБ обучающих данных.