From 71344623bdc9b132815ca8fd57a4dbff17803ccb Mon Sep 17 00:00:00 2001 From: sd109 Date: Thu, 4 Apr 2024 15:23:59 +0100 Subject: [PATCH 1/2] Improve app help text --- chart/templates/NOTES.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/chart/templates/NOTES.txt b/chart/templates/NOTES.txt index 475f481..ea151d5 100644 --- a/chart/templates/NOTES.txt +++ b/chart/templates/NOTES.txt @@ -1,11 +1,11 @@ -The LLM chatbot app allows users to deploy machine learning models from [HuggingFace](https://huggingface.co/models) and interact with them through a simple web interface. +The LLM chatbot app allows users to deploy machine learning models from [HuggingFace](https://huggingface.co/models) and interact with them through a simple web interface. -Note: The target Kubernetes cluster must have a GPU worker node group configured, otherwise the app will remain in an 'Installing' state until a GPU node becomes available for scheduling. +The target Kubernetes cluster must have a GPU worker node group configured, otherwise the app will remain in an 'Installing' state until a GPU node becomes available for scheduling. -On deployment of a new model, the app must first download the model's weights from HuggingFace. +On deployment of a new model, the app must first download the model's weights from HuggingFace. This can take a significant amount of time depending on model choice and network speeds. Download progress can be monitored by inspecting the logs for the LLM API pod(s) via the Kubernetes Dashboard for the target cluster. The app uses [vLLM](https://docs.vllm.ai/en/latest/) as a model serving backend and [Gradio](https://github.com/gradio-app/gradio) + [LangChain](https://python.langchain.com/docs/get_started/introduction) to provide the web interface. -The official list of HuggingFace models supported by vLLM can be found [here](https://docs.vllm.ai/en/latest/models/supported_models.html), though some of these may not be compatible with the LangChain prompt format. +The official list of HuggingFace models supported by vLLM can be found [here](https://docs.vllm.ai/en/latest/models/supported_models.html), though some of these may not be compatible with the LangChain prompt format. See [this documentation](https://github.com/stackhpc/azimuth-llm/) for a non-exhaustive list of languange models against which the app has been tested. \ No newline at end of file From 7231c1ada51be274b2b134d40efddc7d0331c200 Mon Sep 17 00:00:00 2001 From: sd109 Date: Thu, 4 Apr 2024 15:29:37 +0100 Subject: [PATCH 2/2] UI validation and documentation improvement --- chart/azimuth-ui.schema.yaml | 4 ---- chart/values.schema.json | 31 ++++++++++++++++++++----------- 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/chart/azimuth-ui.schema.yaml b/chart/azimuth-ui.schema.yaml index 8ab2414..aab0c44 100644 --- a/chart/azimuth-ui.schema.yaml +++ b/chart/azimuth-ui.schema.yaml @@ -17,12 +17,8 @@ controls: type: NumberControl /ui/appSettings/llm_frequency_penalty: type: NumberControl - minimum: -2 - maximum: 2 /ui/appSettings/llm_presence_penalty: type: NumberControl - minimum: -2 - maximum: 2 /ui/ingress/host: type: TextControl # Use mirror to mimic yaml anchor in base Helm chart diff --git a/chart/values.schema.json b/chart/values.schema.json index 27303ca..6573982 100644 --- a/chart/values.schema.json +++ b/chart/values.schema.json @@ -33,17 +33,17 @@ "hf_model_instruction": { "type": "string", "title": "Instruction", - "description": "The initial model prompt (i.e. the hidden instructions) to use when generating responses.", + "description": "The initial system prompt (i.e. the hidden instruction) to use when generating responses.", "default": "You are a helpful AI assistant. Please respond appropriately." }, "page_title": { "type": "string", "title": "Page Title", - "description": "The title to use for the chat interface.", + "description": "The title to display at the top of the chat interface.", "default": "Large Language Model" }, "llm_max_tokens": { - "type": "number", + "type": "integer", "title": "Max Tokens", "description": "The maximum number of new [tokens](https://platform.openai.com/docs/api-reference/chat/create#chat-create-max_tokens) to generate for each LLM responses.", "default": 1000 @@ -52,31 +52,40 @@ "type": "number", "title": "LLM Temperature", "description": "The [temperature](https://platform.openai.com/docs/api-reference/chat/create#chat-create-temperature) value to use when generating LLM responses.", - "default": 1 + "default": 1, + "minimum": 0, + "maximum": 2 }, "llm_top_p": { "type": "number", "title": "LLM Top P", "description": "The [top p](https://platform.openai.com/docs/api-reference/chat/create#chat-create-top_p) value to use when generating LLM responses.", - "default": 1 + "default": 1, + "exclusiveMinimum": 0, + "maximum": 1 }, "llm_top_k": { - "type": "number", + "type": "integer", "title": "LLM Top K", - "description": "The [top k](https://docs.vllm.ai/en/latest/dev/sampling_params.html) value to use when generating LLM responses.", - "default": -1 + "description": "The [top k](https://docs.vllm.ai/en/latest/dev/sampling_params.html) value to use when generating LLM responses (must be an integer).", + "default": -1, + "minimum": -1 }, "llm_presence_penalty": { "type": "number", "title": "LLM Presence Penalty", "description": "The [presence penalty](https://platform.openai.com/docs/api-reference/chat/create#chat-create-presence_penalty) to use when generating LLM responses.", - "default": 0 + "default": 0, + "minimum": -2, + "maximum": 2 }, "llm_frequency_penalty": { "type": "number", "title": "LLM Frequency Penalty", "description": "The [frequency_penalty](https://platform.openai.com/docs/api-reference/chat/create#chat-create-frequency_penalty) to use when generating LLM responses.", - "default": 0 + "default": 0, + "minimum": -2, + "maximum": 2 } }, @@ -88,7 +97,7 @@ "host": { "type": ["string", "null"], "title": "Ingress Host", - "description": "An optional custom domain name to expose the UI on (requires an Ingress controller-equipped cluster)" + "description": "An optional custom domain name to expose the UI on (requires an [Ingress controller](https://github.com/kubernetes/ingress-nginx) on the target cluster)" } } }