Итак, я создал docker образ для обучения. В dockerfile у меня определена точка входа, так что при выполнении docker run
будет запущен мой код python. Чтобы использовать это на aws sagemaker в моем понимании, мне нужно создать оценку pytorch в блокноте jupyter в sagemaker. Я попробовал что-то вроде этого:
import sagemaker
from sagemaker.pytorch import PyTorch
sagemaker_session = sagemaker.Session()
role = sagemaker.get_execution_role()
estimator = PyTorch(entry_point='train.py',
role=role,
framework_version='1.3.1',
image_name='xxx.ecr.eu-west-1.amazonaws.com/xxx:latest',
train_instance_count=1,
train_instance_type='ml.p3.xlarge',
hyperparameters={})
estimator.fit({})
В документации я обнаружил, что в качестве имени изображения я могу указать ссылку на мое изображение docker на aws ecr. Когда я пытаюсь выполнить это, он продолжает жаловаться
[Errno 2] No such file or directory: 'train.py'
Он жалуется безотлагательно, поэтому, конечно, я делаю что-то совершенно неправильно. Я ожидаю, что сначала должен запуститься мой docker образ, и затем он сможет обнаружить, что точка входа не существует.
Но кроме этого, зачем мне указывать точку входа, как в разве не должно быть ясно, что вход в мое обучение просто docker run
?
Для лучшего понимания. Файл точки входа python в моем изображении docker выглядит следующим образом:
if __name__=='__main__':
parser = argparse.ArgumentParser()
# Hyperparameters sent by the client are passed as command-line arguments to the script.
parser.add_argument('--epochs', type=int, default=5)
parser.add_argument('--batch_size', type=int, default=16)
parser.add_argument('--learning_rate', type=float, default=0.0001)
# Data and output directories
parser.add_argument('--output_data_dir', type=str, default=os.environ['OUTPUT_DATA_DIR'])
parser.add_argument('--train_data_path', type=str, default=os.environ['CHANNEL_TRAIN'])
parser.add_argument('--valid_data_path', type=str, default=os.environ['CHANNEL_VALID'])
# Start training
...
Позже я хотел бы указать гиперпараметры и каналы данных. Но пока я просто не понимаю, что ставить в качестве точки входа. В документации говорится, что точка входа требуется, и это должен быть локальный / глобальный путь к точке входа ...