Как ввести 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)
Другие вопросы по тегам