代码之家  ›  专栏  ›  技术社区  ›  exAres

当数据驻留在s3上的多个文件中时,如何在脚本模式下在sagemaker上训练tensorflow?

  •  0
  • exAres  · 技术社区  · 6 年前

    我有一个 .npy 每个训练实例的文件。所有这些文件都可以在S3上找到 train_data 文件夹。我想在这些训练实例上训练一个张量流模型。为此,我希望为每个训练作业启动单独的aws训练实例,该实例可以访问s3中的文件并在其上训练模型。为此,需要对训练脚本进行哪些更改?

    我在培训脚本中有以下配置:

    parser.add_argument('--gpu-count', type=int, default=os.environ['SM_NUM_GPUS'])
    parser.add_argument('--model-dir', type=str, default=os.environ['SM_MODEL_DIR'])
    parser.add_argument('--train_channel', type=str, default=os.environ['SM_CHANNELS'])
    

    我在jupyter实例中创建了训练估计器,如下所示:

    tf_estimator = TensorFlow(entry_point = 'my_model.py', 
                              role = role, 
                              train_instance_count = 1, 
                              train_instance_type = 'local_gpu', 
                              framework_version = '1.15.2', 
                              py_version = 'py3', 
                              hyperparameters = {'epochs': 1})
    

    我将估计器的拟合函数称为:

    tf_estimator.fit({'train_channel':'s3://sagemaker-ml/train_data/'})
    

    哪里 列车数据 S3上的文件夹包含 .npy 训练实例文件。

    但是当我调用fit函数时,我得到一个错误:

    FileNotFoundError: [Errno 2] No such file or directory: '["train_channel"]/train_data_12.npy'
    

    我不确定这里缺少什么,因为我可以在S3上看到上面提到的文件。

    0 回复  |  直到 6 年前
        1
  •  1
  •   lauren    6 年前

    SM_CHANNELS 返回频道名称列表。你要找的是 SM_CHANNEL_TRAIN_CHANNEL (“SM_CHANNEL”+您的通道名称),它为通道提供文件系统位置:

    parser.add_argument('--train_channel', type=str, default=os.environ['SM_CHANNEL_TRAIN_CHANNEL'])
    

    文档: https://github.com/aws/sagemaker-training-toolkit/blob/master/ENVIRONMENT_VARIABLES.md#sm_channel_channel_name