Jianyong Chen
05/22/2024, 12:01 PM```python
@bentoml.service()
class Summarization:
def __init__(self) -> None:
self.pipeline = pipeline('summarization')
@bentoml.api()
async def summarize(self, text: str) -> str:
result = self.pipeline(text)
return result[0]['summary_text']
@bentoml.service()
class ImageClassification:
def __init__(self) -> None:
self.pipeline = pipeline('image-classification')
@bentoml.api()
async def classify(self, image: bytes) -> Dict[str, float]:
return self.pipeline(image)
@bentoml.service()
class EntranceService:
def __init__(self) -> None:
conf = load_conf()
if conf.enable_summarization:
self.summarization = bentoml.depends(Summarization)
if conf.enable_image_classification:
self.image_classification = bentoml.depends(ImageClassification)
@bentoml.api(route='/predict')
async def run(self, input: Dict[str, Any], ctx: bentoml.Context):
model_id = ctx.request.headers.get('model-id')
if model_id == 'summarization' and self.summarization is not None:
# ERROR HERE !!!
# RuntimeError: Dependancy must be accessed as a class attribute
return await self.summarization.summarize(input['text'])
elif model_id == 'image_classification' and self.image_classification is not None:
return await self.image_classification.classify(input['image'])
else:
raise RuntimeError(f'unknown model id: {model_id}')
```Jian Shen Yap
05/22/2024, 4:45 PMJianyong Chen
05/23/2024, 1:28 AMJian Shen Yap
05/23/2024, 5:25 AMJianyong Chen
05/23/2024, 6:29 AM