我一直在SageMaker笔记本实例上使用SageMaker Python SDK运行培训作业,并在本地使用IAM凭据。他们工作得很好,但我希望能够通过AWS Lambda Gateway开始培训工作。
Lambda不支持SageMaker SDK(高级SDK),所以我被迫在我的Lambda处理程序中使用来自boto3的SageMaker客户端,例如:
sagemaker = boto3.client('sagemaker')
假设这个boto3服务级别SDK会给我100%的控制权,但我找不到用于指定源目录和入口点的参数或配置名称。我正在运行一个定制的培训任务,需要在飞行中生成一些数据(使用Keras生成器)。
下面是我的SageMaker SDK调用的一个示例
tf_estimator = TensorFlow(base_job_name='tensorflow-nn-training',
role=sagemaker.get_execution_role(),
source_dir=training_src_path,
code_location=training_code_path,
output_path=training_output_path,
dependencies=['requirements.txt'],
entry_point='main.py',
script_mode=True,
instance_count=1,
instance_type='ml.g4dn.2xlarge',
framework_version='2.3',
py_version='py37',
hyperparameters={
'model-name': 'my-model-name',
'epochs': 1000,
'batch-size': 64,
'learning-rate': 0.01,
'training-split': 0.80,
'patience': 50,
})
通过调用fit()
input_channels = {
'train': training_input_path,
}
tf_estimator.fit(inputs=input_channels)
source\u dir
是一个S3URI,用于查找我的src。拉链gz
,其中包含用于执行培训的模型和脚本
然而,我通过了SageMaker的留档。Client.create_training_job,我找不到任何字段,允许我设置源目录和切入点。
这里有一个例子,
sagemaker = boto3.client('sagemaker')
sagemaker.create_training_job(
TrainingJobName='tf-training-job-from-lambda',
Hyperparameters={} # Same dictionary as above,
AlgorithmSpecification={
'TrainingImage': '763104351884.dkr.ecr.us-west-1.amazonaws.com/tensorflow-training:2.3.1-gpu-py37-cu110-ubuntu18.04',
'TrainingInputMode': 'File',
'EnableSageMakerMetricsTimeSeries': True
},
RoleArn='My execution role goes here',
InputDataConfig=[
{
'ChannelName': 'train',
'DataSource': {
'S3DataSource': {
'S3DataType': 'S3Prefix',
'S3Uri': training_input_path,
'S3DataDistributionType': 'FullyReplicated'
}
},
'CompressionType': 'None',
'RecordWrapperType': 'None',
'InputMode': 'File',
}
],
OutputDataConfig={
'S3OutputPath': training_output_path,
}
ResourceConfig={
'InstanceType': 'ml.g4dn.2xlarge',
'InstanceCount': 1,
'VolumeSizeInGB': 16
}
StoppingCondition={
'MaxRuntimeInSeconds': 600 # 10 minutes for testing
}
)
从上面的配置中,SDK接受培训输入和输出位置,但哪个配置字段允许用户指定源代码目录和入口点?
您可以将源目录传递给超参数,如下所示:
response = sm_boto3.create_training_job(
TrainingJobName=f"{your job name}"),
HyperParameters={
'model-name': 'my-model-name',
'epochs': 1000,
'batch-size': 64,
'learning-rate': 0.01,
'training-split': 0.80,
'patience': 50,
"sagemaker_program": "script.py", # this is where you specify your train script
"sagemaker_submit_directory": "s3://" + bucket + "/" + project + "/" + source, # your s3 URI like s3://sm/tensorflow/source/sourcedir.tar.gz
},
AlgorithmSpecification={
"TrainingImage": training_image,
...
},
注意:确保xxx.tar.gz。否则Sagemaker将抛出错误。
提到https://github.com/aws/amazon-sagemaker-examples/blob/master/sagemaker-python-sdk/scikit_learn_randomforest/Sklearn_on_SageMaker_end2end.ipynb
我正在尝试使用我自己的sickit learn ML模型和SageMaker,并使用github示例。 python代码如下所示: 但是我得到了这个错误: 信息:sagemaker:创建培训工作与名称:决策树样本-2018-04-24-13-13-38-281 ---------------------------------------------------------------------
我正在尝试创建自己的定制Sagemaker框架,该框架运行定制python脚本,以使用entry_point参数训练ML模型。 遵循pythonsdk文档(https://sagemaker.readthedocs.io/en/stable/estimators.html),我编写了运行培训作业的最简单代码,只是为了了解它的行为以及Sagemaker框架的工作方式。 我的问题是,我不知道如何正确构
我想在aws sagemaker上培训YOLOv5,还要在sagemaker上部署模型,还需要了解entrypoint python脚本。我如何为此构建管道?
我试图避免将现有的模型训练过程迁移到SageMaker,并避免创建一个定制Docker容器来承载我们训练过的模型。 我的希望是将我们现有的、经过培训的模型注入AWS通过sagemaker python sdk提供的预构建scikit学习容器中。我发现的所有示例都需要先培训模型,然后在SageMaker中创建模型/模型配置。然后使用方法进行部署。 是否可以为方法提供经过培训的模型,并将其托管在AWS
我有一个优化代码运行在sagemaker。我想每1小时运行一次代码。我怎么能在sagemaker安排跑步?。我不想调用模型endpoint,但我想在每1小时运行整个代码。
我有一些python代码,它使用tensorflow训练神经网络。 我基于运行python脚本的tensorflow/tensorflow:latest-gpu-py3映像创建了一个docker映像。当我启动EC2P2时。xlarge实例我可以使用以下命令运行docker容器 包含我的代码的容器运行时没有错误,并且使用主机GPU。 问题是,当我尝试使用实例ml.p2.xlarge在AWS Sage