该错误通常是因为在定义SageMaker管道时使用了Python类型的变量而不是序列化后的变量。为解决此问题,请使用SageMaker的DefaultSerializer序列化您的变量。以下是一个示例:
from sagemaker.workflow.parameters import ( ParameterInteger, ParameterString, )
from sagemaker.workflow.pipeline import Pipeline from sagemaker.workflow.steps import ( CacheConfig, Step, ) from sagemaker.workflow.step_collections import RegisterModel
from sagemaker.tensorflow.estimator import TensorFlow
bucket = ParameterString( name='BucketName', default_value='my-bucket' )
training_input_path = ParameterString( name='TrainingInputPath', default_value=f's3://{bucket}/mnist' )
model_approval_status = ParameterString( name='ModelApprovalStatus', default_value='PendingManualApproval' )
train_instance_count = ParameterInteger( name='TrainingInstanceCount', default_value=1 )
train_instance_type = ParameterString( name='TrainingInstanceType', default_value='ml.c4.xlarge' )
tf_estimator = TensorFlow(entry_point='mnist.py', role='SageMakerRole', train_instance_count=train_instance_count, train_instance_type=train_instance_type, sagemaker_session=sagemaker_session)
step_train = Step( name='Train', inputs={ 'training': training_input_path, }, outputs={ 'model': 's3://BUCKET/training/job/model.tar.gz', }, cache_config=CacheConfig(enabled=True, expire_after='7d'), estimator=tf_estimator )
model = RegisterModel( name='MyModel', estimator=tf_estimator, image_uri=tf_estimator.training_image_uri(), content_types=['text/csv', 'application/json'], response_types=['text/csv'], inference_instances=[train_instance_type], transform_instances=[train_instance_type], model_package_group_name='MyPackageGroup', approval_status=model_approval_status, )
pipe = Pipeline( name='TrainingPipe', parameters=[bucket, training_input_path, model_approval_status, train_instance_count, train_instance_type], steps=[step_train, model])
serialized