def METHOD_NAME() -> PipelineJob:
    @dsl.pipeline(
        name="pipeline_component",
    )
    def pipeline_component_func(
        training_input: Input(type="uri_file", mode=InputOutputModes.DOWNLOAD),
        training_max_epocs: int,
        training_learning_rate: float,
        learning_rate_schedule: str,
    ) -> Output(mode=InputOutputModes.RW_MOUNT):
        train_job = train_func(
            training_data=training_input,
            max_epochs=training_max_epocs,
            learning_rate=training_learning_rate,
            learning_rate_schedule=learning_rate_schedule,
        )
        train_job.inputs.training_data.mode = InputOutputModes.MOUNT
        train_job.outputs.model_output.mode = InputOutputModes.MOUNT
        return {
            "output": train_job.outputs.model_output,
        }
    @dsl.pipeline(
        compute="cpu-cluster",
    )
    def e2e_local_components(
        pipeline_training_input,
        pipeline_training_max_epochs=20,
        pipeline_training_learning_rate=1.8,
        pipeline_learning_rate_schedule="time-based",
    ):
        """E2E dummy pipeline with components defined via yaml."""
        subgraph1 = pipeline_component_func(
            training_input=pipeline_training_input,
            training_max_epocs=pipeline_training_max_epochs,
            training_learning_rate=pipeline_training_learning_rate,
            learning_rate_schedule=pipeline_learning_rate_schedule,
        )
        subgraph1.inputs.training_input.mode = InputOutputModes.RO_MOUNT
        subgraph1.outputs.output.mode = InputOutputModes.UPLOAD
        return {
            "pipeline_trained_model": subgraph1.outputs.output,
        }
    pipeline_job = e2e_local_components(
        pipeline_training_input=Input(type="uri_folder", path=parent_dir + "/data/", mode=InputOutputModes.DOWNLOAD),
    )
    pipeline_job.outputs.pipeline_trained_model.mode = InputOutputModes.RW_MOUNT
    return pipeline_job