机器之心|使用AmazonSageMaker运行中文命名实体识别( 三 )


role = get_execution_role()
hyperparameters = {'task_name': 'ner', 'do_train': 'true', 'do_eval': 'true','data_dir': '/opt/ml/input/data/training', 'output_dir': '/opt/ml/model','vocab_file': './albert_config/vocab.txt', 'bert_config_file': './albert_base_zh/albert_config_base.json', _seq_length': 128, 'train_batch_size': 64, 'learning_rate': 2e-5, 'num_train_epochs': 1}
instance_type = 'local'
if subprocess.call('nvidia-smi') == 0:
instance_type = 'local_gpu'
estimator = Estimator(role=role,
train_instance_count=1,
train_instance_type=instance_type,
image_name='sagemaker-tf-albert-chinese-ner:latest',
hyperparameters=hyperparameters)
estimator.fit('file:///home/ec2-user/SageMaker/albert-chinese-ner/data/')
训练启动后 , 我们可以看到训练的日志输出 , 以及监控本机的GPU、CPU、内存等的使用率等情况 , 以确认程序可以正常工作 。
如果在此过程中需要进入正在运行的容器内调试 , 我们可以使用docker ps命令获取当前正在运行的容器ID , 并使用docker exec -it/bin/bash进入容器内进行调试 。
2.5 Amazon SageMaker测试
在本地测试和上传镜像到Amazon ECR完成后 , 我们可以使用Amazon SageMaker进行测试:第一步 , 上传数据到Amazon S3 , 获取镜像在Amazon ECR的地址 。 第二步 , 指定执行的角色 , 这里我们假设您是在Amazon SageMaker Notebook上执行的 , 如果是其他环境 , 您可能需要手动指定角色的ARN 。 第三步 , 设定超参数 , 这里需要对应到您程序中所需的超参数 。 第四步 , 设定训练机型为ml.p2.xlarge(支持GPU) 。 第五步 , 创建Estimator , 这里需要传入之前获得的角色、训练机型、机器数量、镜像地址、超参数等 。 第六步 , 启动训练 , 这里需要传入训练数据的位置 , 在Amazon SageMaker模式下 , 训练数据的位置需要设置成Amazon S3路径 。
prefix = 'DEMO-tensorflow-albert-chinese-ner'
sess = sage.Session()
WORK_DIRECTORY = '/home/ec2-user/SageMaker/albert-chinese-ner/data'
data_location = sess.upload_data(WORK_DIRECTORY, key_prefix=prefix)
client = boto3.client('sts')
account = client.get_caller_identity()['Account']
my_session = boto3.session.Session()
region = my_session.region_name
algorithm_name = 'sagemaker-tf-albert-chinese-ner'
ecr_image = '{}.dkr.ecr.{}.amazonaws.com/{}:latest'.format(account, region, algorithm_name)
hyperparameters = {'task_name': 'ner', 'do_train': 'true', 'do_eval': 'true', 'data_dir': '/opt/ml/input/data/training', 'output_dir': '/opt/ml/model', 'vocab_file': './albert_config/vocab.txt', 'bert_config_file': './albert_base_zh/albert_config_base.json', 'max_seq_length': 128, 'train_batch_size': 64, 'learning_rate': 2e-5, 'num_train_epochs': 3}
instance_type = 'ml.p2.xlarge'
estimator = Estimator(role=role,
train_instance_count=1,
train_instance_type=instance_type,
image_name=ecr_image,
hyperparameters=hyperparameters)
estimator.fit(data_location)
训练启动后 , 我们可以在Amazon SageMaker控制台看到这个训练任务 , 点进详情可以看到训练的详情 , 日志输出 , 以及监控机器的GPU、CPU、内存等的使用率等情况 , 以确认程序可以正常工作 。


推荐阅读