【问题标题】:how can i use tensorboard with aws sagemaker tensorflow?我如何将 tensorboard 与 aws sagemaker tensorflow 一起使用?
【发布时间】:2020-07-05 10:25:31
【问题描述】:

我已经开始了一个贤者的工作:

from sagemaker.tensorflow import TensorFlow
mytraining= TensorFlow(entry_point='model.py',
                        role=role,
                        train_instance_count=1,
                        train_instance_type='ml.p2.xlarge',
                        framework_version='2.0.0',
                        py_version='py3',
                        distributions={'parameter_server'{'enabled':False}})

training_data_uri ='s3://path/to/my/data'
mytraining.fit(training_data_uri,run_tensorboard_locally=True)

使用run_tesorboard_locally=True给了我

Tensorboard is not supported with script mode. You can run the following command: tensorboard --logdir None --host localhost --port 6006 This can be run from anywhere with access to the S3 URI used as the logdir.

好像我不能使用它的脚本模式,但我可以在 s3 中访问 tensorboard 的日志?但是 s3 中的日志在哪里?

def _parse_args():
    parser = argparse.ArgumentParser()

    # Data, model, and output directories
    # model_dir is always passed in from SageMaker. By default this is a S3 path under the default bucket.
    parser.add_argument('--model_dir', type=str)
    parser.add_argument('--sm-model-dir', type=str, default=os.environ.get('SM_MODEL_DIR'))
    parser.add_argument('--train', type=str, default=os.environ.get('SM_CHANNEL_TRAINING'))
    parser.add_argument('--hosts', type=list, default=json.loads(os.environ.get('SM_HOSTS')))
    parser.add_argument('--current-host', type=str, default=os.environ.get('SM_CURRENT_HOST'))

    return parser.parse_known_args()

if __name__ == "__main__":
    args, unknown = _parse_args()

    train_data, train_labels = load_training_data(args.train)
    eval_data, eval_labels = load_testing_data(args.train)

    mymodel= model(train_data, train_labels, eval_data, eval_labels)

    if args.current_host == args.hosts[0]:
        mymodel.save(os.path.join(args.sm_model_dir, '000000002/model.h5'))

类似的问题在这里:stack

编辑我尝试了这个新配置,但它不起作用。

 tensorboard_output_config = TensorBoardOutputConfig( s3_output_path='s3://PATH/to/my/bucket')

mytraining= TensorFlow(entry_point='model.py',
                        role=role,
                        train_instance_count=1,
                        train_instance_type='ml.p2.xlarge',
                        framework_version='2.0.0',
                        py_version='py3',
                        distributions={'parameter_server': {'enabled':False}},
                        tensorboard_output_config=tensorboard_output_config)

我在我的 model.py 脚本中添加了回调,这实际上是我在没有 sagemaker 的情况下使用的。作为 logdir,我定义了默认目录,TensoboardOutputConfig 将数据写入其中。但它不起作用。 docs我也用过,没有回调。

 tensorboardCallback = tf.keras.callbacks.TensorBoard(
        log_dir='/opt/ml/output/tensorboard',
        histogram_freq=0,
        # batch_size=32,ignored tf.2.0
        write_graph=True,
        write_grads=False,
        write_images=False,
        embeddings_freq=0,
        embeddings_layer_names=None,
        embeddings_metadata=None,
        embeddings_data=None,
        update_freq='batch') 

【问题讨论】:

    标签: amazon-web-services tensorflow2.0 tensorboard amazon-sagemaker


    【解决方案1】:

    很难调试您的情况的确切根本原因,但以下步骤对我有用。我在笔记本实例中手动启动了 tensorboard。

    1. 按照sagemaker debugging 上的指南配置张量板日志的S3 输出路径。

      from sagemaker.debugger import TensorBoardOutputConfig
      
      tensorboard_output_config = TensorBoardOutputConfig(
             s3_output_path = 's3://bucket-name/tensorboard_log_folder/'
      )
      
      estimator = TensorFlow(entry_point='train.py',
                     source_dir='./',
                     model_dir=model_dir,
                     output_path= output_dir,
                     train_instance_type=train_instance_type,
                     train_instance_count=1,
                     hyperparameters=hyperparameters,
                     role=sagemaker.get_execution_role(),
                     base_job_name='Testing-TrainingJob',
                     framework_version='2.2',
                     py_version='py37',
                     script_mode=True,
                     tensorboard_output_config=tensorboard_output_config)
      
      estimator.fit(inputs)
      
    2. 通过笔记本实例上的终端使用上面提供的S3 位置启动张量板。

      $ tensorboard --logdir 's3://bucket-name/tensorboard_log_folder/'
      
    3. 通过带有/proxy/6006/ 的URL 访问板。您需要更新以下 URL 中的笔记本实例详细信息。

      https://myinstance.notebook.us-east-1.sagemaker.aws/proxy/6006/
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-24
      • 2019-11-10
      • 2022-10-20
      • 2020-04-05
      • 1970-01-01
      • 2018-05-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多