Files
modelscope/modelscope/pipelines/pipeline_template.py

88 lines
2.8 KiB
Python

# Copyright (c) Alibaba, Inc. and its affiliates.
from typing import Any, Dict
import numpy as np
from modelscope.metainfo import Pipelines
from modelscope.models.base.base_model import Model
from modelscope.outputs.outputs import OutputKeys
from modelscope.pipelines.base import Pipeline
from modelscope.pipelines.builder import PIPELINES
from modelscope.utils.constant import Tasks
__all__ = ['PipelineTemplate']
@PIPELINES.register_module(
Tasks.task_template, module_name=Pipelines.pipeline_template)
class PipelineTemplate(Pipeline):
"""A pipeline template explain how to define parameters and input and
output information. As a rule, the first parameter is the input,
followed by the request parameters. The parameter must add type
hint information, and set the default value if necessary,
for the convenience of use.
"""
def __init__(self, model: Model, **kwargs):
"""A pipeline template to describe input and
output and parameter processing
Args:
model: A Model instance.
"""
# call base init.
super().__init__(model=model, **kwargs)
def preprocess(self,
input: Any,
max_length: int = 1024,
top_p: float = 0.8) -> Any:
"""Pipeline preprocess interface.
Args:
input (Any): The pipeline input, ref Tasks.task_template TASK_INPUTS.
max_length (int, optional): The max_length parameter. Defaults to 1024.
top_p (float, optional): The top_p parameter. Defaults to 0.8.
Returns:
Any: Return result process by forward.
"""
pass
def forward(self,
input: Any,
max_length: int = 1024,
top_p: float = 0.8) -> Any:
"""The forward interface.
Args:
input (Any): The output of the preprocess.
max_length (int, optional): max_length. Defaults to 1024.
top_p (float, optional): top_p. Defaults to 0.8.
Returns:
Any: Return result process by postprocess.
"""
pass
def postprocess(self,
inputs: Any,
postprocess_param1: str = None) -> Dict[str, Any]:
"""The postprocess interface.
Args:
input (Any): The output of the forward.
max_length (int, optional): max_length. Defaults to 1024.
top_p (float, optional): top_p. Defaults to 0.8.
Returns:
Any: Return result process by postprocess.
"""
result = {
OutputKeys.BOXES: np.zeros(4),
OutputKeys.OUTPUT_IMG: np.zeros(10, 4),
OutputKeys.TEXT_EMBEDDING: np.zeros(1, 1000)
}
return result