Tomislav Zupanovic
09/12/2024, 10:59 AM@bentoml.service(
name="SignatureExtractor",
metrics={"enabled": False},
logging={
"access": {
"enabled": True,
"skip_paths": ["/metrics", "/healthz", "/livez", "/readyz"],
}
},
)
class SignatureExtractor:
def __init__(self) -> None:
self.model: dict = {} # TODO: define model loading
self.logger: any = StructLogger().logger
@bentoml.api(batchable=True, max_batch_size=32, max_latency_ms=5000)
def batch_extract(self, inputs: list[ExtractorInput]) -> list[dict]:
<http://self.logger.info|self.logger.info>("Input message", body=inputs, length=len(inputs))
response: list[dict] = [{"output": input} for input in inputs]
return response
@bentoml.service(
name="WrapperSignatureExtractor",
metrics={"enabled": False},
logging={"access": {"enabled": False}},
)
class WrapperSignatureExtractor:
batch = bentoml.depends(SignatureExtractor)
@bentoml.api(route=f"{parameters.API_ROOT_PATH}/extract")
def wrap(self, id: str, description: str) -> dict:
result: list[dict] = self.batch.batch_extract(
inputs=[ExtractorInput(id=id, description=description)]
)
return result[0]
I start the server with this command:
bentoml serve service:WrapperSignatureExtractorLounès Lounis
09/12/2024, 12:02 PMTomislav Zupanovic
09/12/2024, 12:36 PMJian Shen Yap
09/13/2024, 1:07 AMFrost Ming
09/13/2024, 1:27 AMthreads=N parameter in the service decorator