Create batch transform with existing model

Hi,
I have issue to run a batch transform with existing model created with sagemaker SDK.

Here is the code that create a model and run a transform job.

    def create_sagemaker_model(self):
        print('creating sagemaker model')
        sagemaker_model = HuggingFaceModel(
            model_data=self.model_path,
            role=self.sagemaker_role,
            source_dir=Config.SG_SOURCE_DIR,
            transformers_version=self.transformers_version,
            pytorch_version=self.pytorch_version,
            py_version=self.py_version,
            entry_point=Config.SG_ENTRY_POINT,
            env=self.environment_vars,
            sagemaker_session=get_sagemaker_session(self.instance_type)
        )
        return sagemaker_model

    def create_batch_job(self):
        print('creating batch job')
        sagemaker_model = self.create_sagemaker_model()
        batch_job = sagemaker_model.transformer(
            instance_count=self.instance_count,
            instance_type=self.instance_type,
            output_path=self.output_s3_path,
            strategy=self.strategy,
            accept=self.content_type,
            assemble_with=self.split_type
        )
        return batch_job

    def create_and_run_batch_job(self):
        print('creating and running batch job')
        batch_job = self.create_batch_job()
        batch_job.transform(
            job_name=self.batch_job_name,
            data=self.s3_uri,
            content_type=self.content_type,
            split_type=self.split_type,
            wait=False
        )
        return batch_job

I can’t find in the documentation how to run a batch transform job without creating new model.
I tried:

def serve(args):
    transformer = Transformer(
        model_name=args.model_name,
        output_path=args.output_data or args.input_data,
        instance_count=args.instance_count,
        instance_type=args.instance_type,
        accept=args.accept,
        assemble_with=args.assemble_with,
        strategy=args.strategy,
        max_payload=70,
        env={'SAGEMAKER_MODEL_SERVER_TIMEOUT': '36000'}
    )
    print(f'Starting transform job')
    transformer.transform(
        args.input_data,
        content_type=args.accept,
        join_source=args.join_source,
        split_type=args.assemble_with,
        wait=False
    )

but there is exception -

ValueError: Failed to fetch model information for huggingface-pytorch-inference-2023-01-06-22-25-13-167. Please ensure that the model exists. Local instance types require locally created models.

While i can execute the job with the sagemaker web UI.
Thanks

1 Like