Как ввести fsx для блеска в Amazon Sagemaker?
Я пытаюсь настроить Amazon sagemaker, читающий наш набор данных из нашей файловой системы AWS Fsx for Lustre.
Мы используем Sagemaker API, и ранее мы читали наш набор данных из s3, который работал нормально:
estimator = TensorFlow(
entry_point='model_script.py',
image_uri='719982911.dkr.ecr.eu-west-1.amazonaws.com/project_name/sagemaker-training-mlflow:latest',
instance_type='ml.m4.10xlarge',
instance_count=1,
role=role,
framework_version='2.0.0',
py_version='py3',
subnets=["subnet-2375a679"],
security_group_ids=["sg-6cb95013", "sg-0bc6ddb1f102bbdb1"],
debugger_hook_config=False,
)
estimator.fit({
'training': f"s3://bucket_name/data/{hyperparameters['dataset']}/"}
)
Но теперь, когда я меняю источник входных данных на файловую систему Fsx Lustre, я получаю сообщение об ошибке, что входной файл должен быть s3: // или file: //. Я следил за этими документами (fsx lustre):
estimator = TensorFlow(
entry_point='model_script.py',
# image_uri='71998291.dkr.ecr.eu-west-1.amazonaws.com/bucket_name/sagemaker-training-mlflow:latest',
instance_type='ml.m4.10xlarge',
instance_count=1,
role=role,
framework_version='2.0.0',
py_version='py3',
subnets=["subnet-2375a679"],
security_group_ids=["sg-6cb95013", "sg-0bc6ddb1f102bbdb1"],
debugger_hook_config=False,
)
fsx_data_folder = FileSystemInput(file_system_id='fs-03a0e6927e5ffc449',
file_system_type='FSxLustre',
directory_path='/fsx/data',
file_system_access_mode='ro')
estimator.fit(f"{fsx_data_folder}/{hyperparameters['dataset']}/")
Выдает следующую ошибку:
ValueError: URI input <sagemaker.inputs.FileSystemInput object at 0x0000016A6C7F0788>/dataset_name/ must be a valid S3 or FILE URI: must start with "s3://" or "file://"
Кто-нибудь понимает, что я делаю не так? Заранее спасибо!
1 ответ
Я (по глупости, было поздно;)) рассматривал объект FileSystemInput как строку, а не как объект. Ошибка жаловалась, что объединение строки obj+ не является допустимым URI, указывающим на местоположение в s3.
Правильный способ сделать это - создать объект FileSystemInput из всего пути к набору данных. Обратите внимание, что
fsx_data_obj = FileSystemInput(
file_system_id='fs-03a0e6927e5ffc449',
file_system_type='FSxLustre',
directory_path='/fsx/data/{dataset}',
file_system_access_mode='ro'
)
estimator.fit(fsx_data_obj)