如果我从笔记本实例关闭我的 JupyterLab,我的代码会消失吗?

If I close my JupyterLab from notebook instance, would my code be gone?

我是 AWS 新手,正在试用 AWS Sagemaker。我目前正在做我的项目,需要很长时间才能完成,我认为我一天内无法完成。我担心如果我在 SageMaker 中关闭笔记本实例的 JupyterLab,我的代码将会消失。使用 Sagemaker 时如何保存我的代码和单元 运行 进度?

如果您直接在笔记本中训练,答案是肯定的。 然而,最好的做法是不要直接使用笔记本进行训练。 使用笔记本(你可以为笔记本选择一个非常便宜的实例)来启动你的训练工作(在你想要的实例类型中)调整你的代码作为估计器的入口点。这样,您可以在启动训练作业后关闭笔记本,并使用 cloudwatch 监控训练作业。您还可以定义一些正则表达式来从 stout 中捕获指标,cloudwatch 会自动为您绘图,这非常有用! 举个简单的例子.. 在我的笔记本中我有这个单元格:

import sagemaker from sagemaker.tensorflow import TensorFlow from sagemaker import get_execution_role

bucket = 'mybucket'

train_data = 's3://{}/{}'.format(bucket,'train')

validation_data = 's3://{}/{}'.format(bucket,'test')

s3_output_location = 's3://{}'.format(bucket)

hyperparameters = {'epochs': 70, 'batch-size' : 32, 'learning-rate' :
0.01}

metrics = [{'Name': 'Loss', 'Regex': 'loss: ([0-9\.]+)'},
           {'Name': 'Accuracy', 'Regex': 'acc: ([0-9\.]+)'},
           {'Name': 'Epoch', 'Regex': 'Epoch ([0-9\.]+)'},
           {'Name': 'Validation_Acc', 'Regex': 'val_acc: ([0-9\.]+)'},
           {'Name': 'Validation_Loss', 'Regex': 'val_loss: ([0-9\.]+)'}]

tf_estimator = TensorFlow(entry_point='training.py', 
                          role=get_execution_role(),
                          train_instance_count=1, 
                          train_instance_type='ml.p2.xlarge',
                          train_max_run=172800,
                          output_path=s3_output_location,
                          framework_version='1.12',
                          py_version='py3',
                          metric_definitions = metrics,
                          hyperparameters = hyperparameters)

inputs = {'train': train_data, 'test': validation_data}

myJobName = 'myname'

tf_estimator.fit(inputs=inputs, job_name=myJobName)

我的训练脚本training.py是这样的:

if __name__ =='__main__':

    parser = argparse.ArgumentParser()

    # input data and model directories
    parser.add_argument('--gpu-count', type=int, default=os.environ['SM_NUM_GPUS'])
    parser.add_argument('--model-dir', type=str, default=os.environ.get('SM_MODEL_DIR'))
    parser.add_argument('--train', type=str, default=os.environ.get('SM_CHANNEL_TRAIN'))
    parser.add_argument('--test', type=str, default=os.environ.get('SM_CHANNEL_TEST'))
    parser.add_argument('--learning-rate', type=float, default=0.0001)
    parser.add_argument('--batch-size', type=int, default=32)
    parser.add_argument('--epochs', type=int, default=1)
....