From ea0788d79b2be660834853ed318e86c8eaab7c9e Mon Sep 17 00:00:00 2001 From: Peilin Yu Date: Wed, 19 Jul 2023 13:20:43 -0400 Subject: [PATCH 1/2] Adding vLLM integration --- alfred/client/client.py | 5 +++- alfred/fm/vllm.py | 57 +++++++++++++++++++++++++++++++++++++++++ alfred/run_server.py | 5 +++- 3 files changed, 65 insertions(+), 2 deletions(-) create mode 100644 alfred/fm/vllm.py diff --git a/alfred/client/client.py b/alfred/client/client.py index d3acf14..e7b173b 100644 --- a/alfred/client/client.py +++ b/alfred/client/client.py @@ -64,7 +64,7 @@ def __init__( assert self.model_type in [ "huggingface", "huggingfacevlm", "onnx", "tensorrt", - "flexgen", + "flexgen", "vllm", "openai", "anthropic", "cohere", "ai21", "torch", "dummy" @@ -169,6 +169,9 @@ def __init__( elif self.model_type == "flexgen": from alfred.fm.flexgen import FlexGenModel self.model = FlexGenModel(self.model, **kwargs) + elif self.model_type == "vllm": + from alfred.fm.vllm import vLLMModel + self.model = vLLMModel(self.model, **kwargs) elif self.model_type == "tensorrt": # self.model = TensorRTModel(self.model, **kwargs) raise NotImplementedError diff --git a/alfred/fm/vllm.py b/alfred/fm/vllm.py new file mode 100644 index 0000000..df399fc --- /dev/null +++ b/alfred/fm/vllm.py @@ -0,0 +1,57 @@ +import logging +from typing import List, Any + +from alfred.fm.model import LocalAccessFoundationModel +from .response import CompletionResponse + +logger = logging.getLogger(__name__) + + +import torch +try: + from vllm import LLM, SamplingParams +except ImportError: + raise ImportError("Please install VLLM with `pip install vllm`") + + + +class vLLMModel(LocalAccessFoundationModel): + """ + vLLMModel wraps a vLLM model. vLLM is a fast and easy-to-use library for LLM inference. + + source: https://github.com/vllm-project/vllm + """ + + def __init__(self, model: str, model_string: str, local_dir: str = None, + **kwargs: Any): + """ + Initialize a VLLM with MultiGPU. + + :param model: (optional) The path to the model. + :type model: str + """ + self.model_string = model + super().__init__(model_string) + self.gpu_count = torch.cuda.device_count() + self.model = LLM(local_dir if local_dir is not None else model, tensor_parallel_size=self.gpu_count) + def _generate_batch( + self, + batch_instance: List[str], + **kwargs: Any, + ) -> List[CompletionResponse]: + """ + Generate completions for a batch of queries. + + :param batch_instance: A list of queries. + :type batch_instance: List[str] + :param kwargs: Additional keyword arguments. + :return: A list of `CompletionResponse` objects with the same prediction content as the input. + :rtype: List[CompletionResponse] + """ + + temperature = kwargs.get("temperature", 0) + max_new_tokens = kwargs.get("max_new_tokens", 16) + + sampling_params = SamplingParams(temperature=temperature, max_tokens=max_new_tokens, top_k=1) + + return [CompletionResponse(prediction=output.outputs[0].text) for output in self.model.generate(batch_instance, sampling_params)] diff --git a/alfred/run_server.py b/alfred/run_server.py index 028c431..62c470d 100644 --- a/alfred/run_server.py +++ b/alfred/run_server.py @@ -45,7 +45,7 @@ def __init__( self.model_type = model_type.lower() assert self.model_type in [ "huggingface", "huggingfacevlm", "onnx", "tensorrt", "openai", "anthropic", - "flexgen", + "flexgen", "vllm", "cohere", "ai21", "torch", "dummy" ], f"Invalid model type: {self.model_type}" if self.model_type == "huggingface": @@ -77,6 +77,9 @@ def __init__( elif self.model_type == "flexgen": from alfred.fm.flexgen import FlexGenModel self.model = FlexGenModel(self.model, **kwargs) + elif self.model_type == "vllm": + from alfred.fm.vllm import vLLMModel + self.model = vLLMModel(self.model, **kwargs) elif self.model_type == "tensorrt": # self.model = TensorRTModel(self.model, **kwargs) raise NotImplementedError From 53431db325fe45ff22e134fcb835beb37e798b0d Mon Sep 17 00:00:00 2001 From: Peilin Yu Date: Wed, 19 Jul 2023 13:21:12 -0400 Subject: [PATCH 2/2] Adding vLLM integration Accompany Doc --- docs/README.md | 1 + docs/alfred/client/cache/cache.md | 4 +--- docs/alfred/client/cache/dummy.md | 4 +--- docs/alfred/client/cache/sqlite.md | 4 +--- docs/alfred/client/client.md | 20 +++++++++---------- docs/alfred/client/ssh/sshtunnel.md | 4 +--- docs/alfred/client/ssh/utils.md | 4 +--- docs/alfred/data/arrow.md | 4 +--- docs/alfred/data/dataset.md | 4 +--- docs/alfred/data/wrench.md | 4 +--- docs/alfred/fm/ai21.md | 4 +--- docs/alfred/fm/anthropic.md | 4 +--- docs/alfred/fm/cohere.md | 4 +--- docs/alfred/fm/dummy.md | 4 +--- docs/alfred/fm/huggingface.md | 4 +--- docs/alfred/fm/huggingfacevlm.md | 4 +--- docs/alfred/fm/index.md | 3 ++- docs/alfred/fm/model.md | 4 +--- docs/alfred/fm/onnx.md | 4 +--- docs/alfred/fm/openai.md | 4 +--- docs/alfred/fm/query/completion_query.md | 4 +--- docs/alfred/fm/query/query.md | 4 +--- docs/alfred/fm/query/ranked_query.md | 4 +--- docs/alfred/fm/remote/grpc.md | 4 +--- docs/alfred/fm/remote/protos/query_pb2.md | 1 - .../alfred/fm/remote/protos/query_pb2_grpc.md | 4 +--- docs/alfred/fm/remote/utils.md | 4 +--- .../alfred/fm/response/completion_response.md | 4 +--- docs/alfred/fm/response/ranked_response.md | 4 +--- docs/alfred/fm/response/response.md | 4 +--- docs/alfred/fm/utils.md | 4 +--- docs/alfred/labeling/flyingsquid.md | 4 +--- docs/alfred/labeling/labelmodel.md | 4 +--- docs/alfred/labeling/majority_vote.md | 4 +--- docs/alfred/labeling/naive_bayes.md | 4 +--- docs/alfred/labeling/nplm.md | 4 +--- docs/alfred/run_client_api.md | 4 +--- docs/alfred/run_server.md | 6 ++---- docs/alfred/template/image_template.md | 4 +--- docs/alfred/template/string_template.md | 4 +--- docs/alfred/template/template.md | 4 +--- docs/alfred/voter/voter.md | 4 +--- 42 files changed, 51 insertions(+), 128 deletions(-) diff --git a/docs/README.md b/docs/README.md index 26bf3a8..63ec788 100644 --- a/docs/README.md +++ b/docs/README.md @@ -44,6 +44,7 @@ A full list of `Alfred` project modules. - [RankedResponse](alfred/fm/response/ranked_response.md#rankedresponse) - [Response](alfred/fm/response/response.md#response) - [Utils](alfred/fm/utils.md#utils) + - [Vllm](alfred/fm/vllm.md#vllm) - [Labeling](alfred/labeling/index.md#labeling) - [FlyingSquid](alfred/labeling/flyingsquid.md#flyingsquid) - [LabelModel](alfred/labeling/labelmodel.md#labelmodel) diff --git a/docs/alfred/client/cache/cache.md b/docs/alfred/client/cache/cache.md index b3d0296..932dfe2 100644 --- a/docs/alfred/client/cache/cache.md +++ b/docs/alfred/client/cache/cache.md @@ -372,6 +372,4 @@ Type: *str* ```python def to_metadata_string(**kwargs: Any) -> str: ... -``` - - +``` \ No newline at end of file diff --git a/docs/alfred/client/cache/dummy.md b/docs/alfred/client/cache/dummy.md index 19892bf..ecdca0f 100644 --- a/docs/alfred/client/cache/dummy.md +++ b/docs/alfred/client/cache/dummy.md @@ -195,6 +195,4 @@ Write a prompt-response pair to the cache ```python def write(self, prompt: str, response: str, metadata: Optional[str] = None): ... -``` - - +``` \ No newline at end of file diff --git a/docs/alfred/client/cache/sqlite.md b/docs/alfred/client/cache/sqlite.md index a8422ae..bb5a834 100644 --- a/docs/alfred/client/cache/sqlite.md +++ b/docs/alfred/client/cache/sqlite.md @@ -328,6 +328,4 @@ def write_batch( self, prompts: List[str], responses: List[str], metadata: Optional[str] = None ): ... -``` - - +``` \ No newline at end of file diff --git a/docs/alfred/client/client.md b/docs/alfred/client/client.md index ad48cd8..c628df6 100644 --- a/docs/alfred/client/client.md +++ b/docs/alfred/client/client.md @@ -47,7 +47,7 @@ class Client: ### Client().__call__ -[Show source in client.py:267](../../../alfred/client/client.py#L267) +[Show source in client.py:270](../../../alfred/client/client.py#L270) __call__() function to run the model on the queries. Equivalent to run() function. @@ -75,7 +75,7 @@ def __call__( ### Client().calibrate -[Show source in client.py:282](../../../alfred/client/client.py#L282) +[Show source in client.py:285](../../../alfred/client/client.py#L285) calibrate are used to calibrate foundation models contextually given the template. A voter class may be passed to calibrate the model with a specific voter. @@ -120,7 +120,7 @@ def calibrate( ### Client().chat -[Show source in client.py:384](../../../alfred/client/client.py#L384) +[Show source in client.py:387](../../../alfred/client/client.py#L387) Chat with the model APIs. Currently, Alfred supports Chat APIs from Anthropic and OpenAI @@ -139,7 +139,7 @@ def chat(self, log_save_path: Optional[str] = None, **kwargs: Any): ### Client().encode -[Show source in client.py:358](../../../alfred/client/client.py#L358) +[Show source in client.py:361](../../../alfred/client/client.py#L361) embed() function to embed the queries. @@ -162,7 +162,7 @@ def encode( ### Client().generate -[Show source in client.py:226](../../../alfred/client/client.py#L226) +[Show source in client.py:229](../../../alfred/client/client.py#L229) Wrapper function to generate the response(s) from the model. (For completion) @@ -191,7 +191,7 @@ def generate( ### Client().remote_run -[Show source in client.py:204](../../../alfred/client/client.py#L204) +[Show source in client.py:207](../../../alfred/client/client.py#L207) Wrapper function for running the model on the queries thru a gRPC Server. @@ -218,7 +218,7 @@ def remote_run( ### Client().run -[Show source in client.py:184](../../../alfred/client/client.py#L184) +[Show source in client.py:187](../../../alfred/client/client.py#L187) Run the model on the queries. @@ -245,7 +245,7 @@ def run( ### Client().score -[Show source in client.py:243](../../../alfred/client/client.py#L243) +[Show source in client.py:246](../../../alfred/client/client.py#L246) Wrapper function to score the response(s) from the model. (For ranking) @@ -275,6 +275,4 @@ def score( self, query: Union[RankedQuery, Dict, List[RankedQuery], List[str]], **kwargs: Any ) -> Union[Response, List[Response]]: ... -``` - - +``` \ No newline at end of file diff --git a/docs/alfred/client/ssh/sshtunnel.md b/docs/alfred/client/ssh/sshtunnel.md index 36c88ab..ca7dec9 100644 --- a/docs/alfred/client/ssh/sshtunnel.md +++ b/docs/alfred/client/ssh/sshtunnel.md @@ -79,6 +79,4 @@ Stop the tunnel ```python def stop(self): ... -``` - - +``` \ No newline at end of file diff --git a/docs/alfred/client/ssh/utils.md b/docs/alfred/client/ssh/utils.md index c918781..f17444f 100644 --- a/docs/alfred/client/ssh/utils.md +++ b/docs/alfred/client/ssh/utils.md @@ -94,6 +94,4 @@ Finds the next available port if given port is not available ```python def port_finder(port: Union[str, int], host: str = "") -> int: ... -``` - - +``` \ No newline at end of file diff --git a/docs/alfred/data/arrow.md b/docs/alfred/data/arrow.md index af302df..0dec50f 100644 --- a/docs/alfred/data/arrow.md +++ b/docs/alfred/data/arrow.md @@ -614,6 +614,4 @@ returns the version of the dataset ```python def version(self) -> str: ... -``` - - +``` \ No newline at end of file diff --git a/docs/alfred/data/dataset.md b/docs/alfred/data/dataset.md index 3ddc8d5..8fc9cca 100644 --- a/docs/alfred/data/dataset.md +++ b/docs/alfred/data/dataset.md @@ -194,6 +194,4 @@ returns the version of the dataset @property def version(self) -> str: ... -``` - - +``` \ No newline at end of file diff --git a/docs/alfred/data/wrench.md b/docs/alfred/data/wrench.md index 08e3213..5600925 100644 --- a/docs/alfred/data/wrench.md +++ b/docs/alfred/data/wrench.md @@ -64,6 +64,4 @@ returns the string representation of the dataset ```python def __repr__(self): ... -``` - - +``` \ No newline at end of file diff --git a/docs/alfred/fm/ai21.md b/docs/alfred/fm/ai21.md index 0d0920a..fa32f4e 100644 --- a/docs/alfred/fm/ai21.md +++ b/docs/alfred/fm/ai21.md @@ -24,6 +24,4 @@ This class provides a wrapper for the OpenAI API for generating completions. class AI21Model(APIAccessFoundationModel): def __init__(self, model_string: str = "j1-large", api_key: Optional[str] = None): ... -``` - - +``` \ No newline at end of file diff --git a/docs/alfred/fm/anthropic.md b/docs/alfred/fm/anthropic.md index b64b19f..6d047ab 100644 --- a/docs/alfred/fm/anthropic.md +++ b/docs/alfred/fm/anthropic.md @@ -38,6 +38,4 @@ Launch an interactive chat session with the Anthropic API. ```python def chat(self, **kwargs: Any): ... -``` - - +``` \ No newline at end of file diff --git a/docs/alfred/fm/cohere.md b/docs/alfred/fm/cohere.md index 8e73833..03b6b87 100644 --- a/docs/alfred/fm/cohere.md +++ b/docs/alfred/fm/cohere.md @@ -24,6 +24,4 @@ This class provides a wrapper for the OpenAI API for generating completions. class CohereModel(APIAccessFoundationModel): def __init__(self, model_string: str = "xlarge", api_key: Optional[str] = None): ... -``` - - +``` \ No newline at end of file diff --git a/docs/alfred/fm/dummy.md b/docs/alfred/fm/dummy.md index 454f0ba..b40d198 100644 --- a/docs/alfred/fm/dummy.md +++ b/docs/alfred/fm/dummy.md @@ -29,6 +29,4 @@ class DummyModel(LocalAccessFoundationModel): #### See also -- [LocalAccessFoundationModel](./model.md#localaccessfoundationmodel) - - +- [LocalAccessFoundationModel](./model.md#localaccessfoundationmodel) \ No newline at end of file diff --git a/docs/alfred/fm/huggingface.md b/docs/alfred/fm/huggingface.md index b5d6d16..104c723 100644 --- a/docs/alfred/fm/huggingface.md +++ b/docs/alfred/fm/huggingface.md @@ -45,6 +45,4 @@ class HuggingFaceModel(LocalAccessFoundationModel): #### See also -- [LocalAccessFoundationModel](./model.md#localaccessfoundationmodel) - - +- [LocalAccessFoundationModel](./model.md#localaccessfoundationmodel) \ No newline at end of file diff --git a/docs/alfred/fm/huggingfacevlm.md b/docs/alfred/fm/huggingfacevlm.md index 77a1677..51473ce 100644 --- a/docs/alfred/fm/huggingfacevlm.md +++ b/docs/alfred/fm/huggingfacevlm.md @@ -33,6 +33,4 @@ class HuggingFaceCLIPModel(LocalAccessFoundationModel): #### See also -- [LocalAccessFoundationModel](./model.md#localaccessfoundationmodel) - - +- [LocalAccessFoundationModel](./model.md#localaccessfoundationmodel) \ No newline at end of file diff --git a/docs/alfred/fm/index.md b/docs/alfred/fm/index.md index 4add719..e1c7cd6 100644 --- a/docs/alfred/fm/index.md +++ b/docs/alfred/fm/index.md @@ -24,4 +24,5 @@ Fm - [Query](query/index.md) - [Remote](remote/index.md) - [Response](response/index.md) -- [Utils](./utils.md) \ No newline at end of file +- [Utils](./utils.md) +- [Vllm](./vllm.md) \ No newline at end of file diff --git a/docs/alfred/fm/model.md b/docs/alfred/fm/model.md index 1778933..710a22c 100644 --- a/docs/alfred/fm/model.md +++ b/docs/alfred/fm/model.md @@ -286,6 +286,4 @@ class LocalAccessFoundationModel(FoundationModel): #### See also -- [FoundationModel](#foundationmodel) - - +- [FoundationModel](#foundationmodel) \ No newline at end of file diff --git a/docs/alfred/fm/onnx.md b/docs/alfred/fm/onnx.md index f21acab..449923b 100644 --- a/docs/alfred/fm/onnx.md +++ b/docs/alfred/fm/onnx.md @@ -30,6 +30,4 @@ class ONNXModel(LocalAccessFoundationModel): #### See also -- [LocalAccessFoundationModel](./model.md#localaccessfoundationmodel) - - +- [LocalAccessFoundationModel](./model.md#localaccessfoundationmodel) \ No newline at end of file diff --git a/docs/alfred/fm/openai.md b/docs/alfred/fm/openai.md index 3d0e6c4..a127a2b 100644 --- a/docs/alfred/fm/openai.md +++ b/docs/alfred/fm/openai.md @@ -40,6 +40,4 @@ Launch an interactive chat session with the OpenAI API. ```python def chat(self, **kwargs: Any): ... -``` - - +``` \ No newline at end of file diff --git a/docs/alfred/fm/query/completion_query.md b/docs/alfred/fm/query/completion_query.md index 8339e34..b0e98c8 100644 --- a/docs/alfred/fm/query/completion_query.md +++ b/docs/alfred/fm/query/completion_query.md @@ -143,6 +143,4 @@ returns the raw prompt content @property def prompt(self): ... -``` - - +``` \ No newline at end of file diff --git a/docs/alfred/fm/query/query.md b/docs/alfred/fm/query/query.md index 92c0da6..acbdcc4 100644 --- a/docs/alfred/fm/query/query.md +++ b/docs/alfred/fm/query/query.md @@ -82,6 +82,4 @@ Type: *str* ```python def serialize(self) -> str: ... -``` - - +``` \ No newline at end of file diff --git a/docs/alfred/fm/query/ranked_query.md b/docs/alfred/fm/query/ranked_query.md index c1c68f1..57bd2ec 100644 --- a/docs/alfred/fm/query/ranked_query.md +++ b/docs/alfred/fm/query/ranked_query.md @@ -195,6 +195,4 @@ returns the raw prompt content @property def prompt(self): ... -``` - - +``` \ No newline at end of file diff --git a/docs/alfred/fm/remote/grpc.md b/docs/alfred/fm/remote/grpc.md index b921839..dfa9880 100644 --- a/docs/alfred/fm/remote/grpc.md +++ b/docs/alfred/fm/remote/grpc.md @@ -132,6 +132,4 @@ def restart(self): ```python def serve(self, credentials: Optional[grpc.ServerCredentials] = None): ... -``` - - +``` \ No newline at end of file diff --git a/docs/alfred/fm/remote/protos/query_pb2.md b/docs/alfred/fm/remote/protos/query_pb2.md index 841a283..014445b 100644 --- a/docs/alfred/fm/remote/protos/query_pb2.md +++ b/docs/alfred/fm/remote/protos/query_pb2.md @@ -8,5 +8,4 @@ Query Pb2 > Auto-generated documentation for [alfred.fm.remote.protos.query_pb2](../../../../../alfred/fm/remote/protos/query_pb2.py) module. - - [Query Pb2](#query-pb2) diff --git a/docs/alfred/fm/remote/protos/query_pb2_grpc.md b/docs/alfred/fm/remote/protos/query_pb2_grpc.md index b1fb984..781e262 100644 --- a/docs/alfred/fm/remote/protos/query_pb2_grpc.md +++ b/docs/alfred/fm/remote/protos/query_pb2_grpc.md @@ -146,6 +146,4 @@ class QueryServiceStub(object): ```python def add_QueryServiceServicer_to_server(servicer, server): ... -``` - - +``` \ No newline at end of file diff --git a/docs/alfred/fm/remote/utils.md b/docs/alfred/fm/remote/utils.md index ed39c98..f97bf67 100644 --- a/docs/alfred/fm/remote/utils.md +++ b/docs/alfred/fm/remote/utils.md @@ -76,6 +76,4 @@ def port_finder(port: int) -> int: ```python def tensor_to_bytes(tensor): ... -``` - - +``` \ No newline at end of file diff --git a/docs/alfred/fm/response/completion_response.md b/docs/alfred/fm/response/completion_response.md index cdfac42..3277ba5 100644 --- a/docs/alfred/fm/response/completion_response.md +++ b/docs/alfred/fm/response/completion_response.md @@ -120,6 +120,4 @@ Type: *float* @property def score(self) -> Dict: ... -``` - - +``` \ No newline at end of file diff --git a/docs/alfred/fm/response/ranked_response.md b/docs/alfred/fm/response/ranked_response.md index 4c9e97f..cf1e961 100644 --- a/docs/alfred/fm/response/ranked_response.md +++ b/docs/alfred/fm/response/ranked_response.md @@ -137,6 +137,4 @@ Type: *dict* @property def scores(self) -> Dict: ... -``` - - +``` \ No newline at end of file diff --git a/docs/alfred/fm/response/response.md b/docs/alfred/fm/response/response.md index 55d556e..389184c 100644 --- a/docs/alfred/fm/response/response.md +++ b/docs/alfred/fm/response/response.md @@ -100,6 +100,4 @@ Type: *str* ```python def serialize(self) -> str: ... -``` - - +``` \ No newline at end of file diff --git a/docs/alfred/fm/utils.md b/docs/alfred/fm/utils.md index ff15a19..3825d7c 100644 --- a/docs/alfred/fm/utils.md +++ b/docs/alfred/fm/utils.md @@ -361,6 +361,4 @@ Type: *List[int]* ```python def tokenize(inst, tokenizer, max_length=512): ... -``` - - +``` \ No newline at end of file diff --git a/docs/alfred/labeling/flyingsquid.md b/docs/alfred/labeling/flyingsquid.md index 73dae10..eec789f 100644 --- a/docs/alfred/labeling/flyingsquid.md +++ b/docs/alfred/labeling/flyingsquid.md @@ -34,6 +34,4 @@ class FlyingSquid(LabelModel): ```python def label(self, votes: np.ndarray) -> np.ndarray: ... -``` - - +``` \ No newline at end of file diff --git a/docs/alfred/labeling/labelmodel.md b/docs/alfred/labeling/labelmodel.md index 291f46e..bea20d8 100644 --- a/docs/alfred/labeling/labelmodel.md +++ b/docs/alfred/labeling/labelmodel.md @@ -49,6 +49,4 @@ def __call__(self, votes): @abc.abstractmethod def label(self, votes): ... -``` - - +``` \ No newline at end of file diff --git a/docs/alfred/labeling/majority_vote.md b/docs/alfred/labeling/majority_vote.md index 56dbf7e..94294e2 100644 --- a/docs/alfred/labeling/majority_vote.md +++ b/docs/alfred/labeling/majority_vote.md @@ -36,6 +36,4 @@ returns the majority vote for each response row ```python def label(self, votes: np.ndarray) -> np.ndarray: ... -``` - - +``` \ No newline at end of file diff --git a/docs/alfred/labeling/naive_bayes.md b/docs/alfred/labeling/naive_bayes.md index 9662eab..5b24189 100644 --- a/docs/alfred/labeling/naive_bayes.md +++ b/docs/alfred/labeling/naive_bayes.md @@ -47,6 +47,4 @@ Type: *np.ndarray* ```python def label(self, votes: np.ndarray) -> np.ndarray: ... -``` - - +``` \ No newline at end of file diff --git a/docs/alfred/labeling/nplm.md b/docs/alfred/labeling/nplm.md index 6d7be6e..132833a 100644 --- a/docs/alfred/labeling/nplm.md +++ b/docs/alfred/labeling/nplm.md @@ -52,6 +52,4 @@ Type: *np.ndarray* ```python def label(self, votes: np.ndarray) -> np.ndarray: ... -``` - - +``` \ No newline at end of file diff --git a/docs/alfred/run_client_api.md b/docs/alfred/run_client_api.md index 82faf32..d1ea282 100644 --- a/docs/alfred/run_client_api.md +++ b/docs/alfred/run_client_api.md @@ -366,6 +366,4 @@ async def set_alfred_server_webhook_port(request: Request): @alfred_app.get("/status") async def status(): ... -``` - - +``` \ No newline at end of file diff --git a/docs/alfred/run_server.md b/docs/alfred/run_server.md index b73e160..9b75516 100644 --- a/docs/alfred/run_server.md +++ b/docs/alfred/run_server.md @@ -29,7 +29,7 @@ class ModelServer: ## start_server -[Show source in run_server.py:96](../../alfred/run_server.py#L96) +[Show source in run_server.py:99](../../alfred/run_server.py#L99) Wrapper function to start gRPC Server. @@ -43,6 +43,4 @@ Wrapper function to start gRPC Server. ```python def start_server(args: argparse.Namespace): ... -``` - - +``` \ No newline at end of file diff --git a/docs/alfred/template/image_template.md b/docs/alfred/template/image_template.md index 7f57260..b3f7c99 100644 --- a/docs/alfred/template/image_template.md +++ b/docs/alfred/template/image_template.md @@ -293,6 +293,4 @@ returns the template type @property def type(self): ... -``` - - +``` \ No newline at end of file diff --git a/docs/alfred/template/string_template.md b/docs/alfred/template/string_template.md index 8790f42..cde3ca0 100644 --- a/docs/alfred/template/string_template.md +++ b/docs/alfred/template/string_template.md @@ -334,6 +334,4 @@ returns the template type @property def type(self): ... -``` - - +``` \ No newline at end of file diff --git a/docs/alfred/template/template.md b/docs/alfred/template/template.md index 9f17393..1377eb9 100644 --- a/docs/alfred/template/template.md +++ b/docs/alfred/template/template.md @@ -219,6 +219,4 @@ returns the type of the template @abc.abstractmethod def type(self): ... -``` - - +``` \ No newline at end of file diff --git a/docs/alfred/voter/voter.md b/docs/alfred/voter/voter.md index b61a0c4..760c81e 100644 --- a/docs/alfred/voter/voter.md +++ b/docs/alfred/voter/voter.md @@ -114,6 +114,4 @@ def vote( #### See also -- [Response](../fm/response/response.md#response) - - +- [Response](../fm/response/response.md#response) \ No newline at end of file