From d21a05606e8a1952bbcea9992285a4f4038456ef Mon Sep 17 00:00:00 2001 From: Extremys Date: Wed, 1 May 2024 09:27:02 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=8D=8E=20feat:=20Apple=20MLX=20as=20Known?= =?UTF-8?q?=20Endpoint=20(#2580)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * add integration with Apple MLX * fix: apple icon + image mkd link --------- Co-authored-by: “Extremys” <“Extremys@email.com”> Co-authored-by: Danny Avila --- .../services/Config/loadConfigModels.spec.js | 9 +++++ client/public/assets/mlx.png | Bin 0 -> 83421 bytes .../Chat/Menus/Endpoints/UnknownIcon.tsx | 1 + docs/install/configuration/ai_endpoints.md | 34 ++++++++++++++++++ docs/install/configuration/custom_config.md | 1 + docs/install/configuration/mlx.md | 30 ++++++++++++++++ docs/install/index.md | 1 + packages/data-provider/src/config.ts | 1 + 8 files changed, 77 insertions(+) create mode 100644 client/public/assets/mlx.png create mode 100644 docs/install/configuration/mlx.md diff --git a/api/server/services/Config/loadConfigModels.spec.js b/api/server/services/Config/loadConfigModels.spec.js index 1b7dec5fd7..828ecd881e 100644 --- a/api/server/services/Config/loadConfigModels.spec.js +++ b/api/server/services/Config/loadConfigModels.spec.js @@ -46,6 +46,15 @@ const exampleConfig = { fetch: false, }, }, + { + name: 'MLX', + apiKey: 'user_provided', + baseURL: 'http://localhost:8080/v1/', + models: { + default: ['Meta-Llama-3-8B-Instruct-4bit'], + fetch: false, + }, + }, ], }, }; diff --git a/client/public/assets/mlx.png b/client/public/assets/mlx.png new file mode 100644 index 0000000000000000000000000000000000000000..06a77c9b6c18e76c5871c3e84b7352ea5638a344 GIT binary patch literal 83421 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 o&;KiU{tKA@Ghl{qZ5U3;+NC literal 0 HcmV?d00001 diff --git a/client/src/components/Chat/Menus/Endpoints/UnknownIcon.tsx b/client/src/components/Chat/Menus/Endpoints/UnknownIcon.tsx index 8999f1e42a..e35c4d3e54 100644 --- a/client/src/components/Chat/Menus/Endpoints/UnknownIcon.tsx +++ b/client/src/components/Chat/Menus/Endpoints/UnknownIcon.tsx @@ -9,6 +9,7 @@ const knownEndpointAssets = { [KnownEndpoints.fireworks]: '/assets/fireworks.png', [KnownEndpoints.groq]: '/assets/groq.png', [KnownEndpoints.mistral]: '/assets/mistral.png', + [KnownEndpoints.mlx]: '/assets/mlx.png', [KnownEndpoints.ollama]: '/assets/ollama.png', [KnownEndpoints.openrouter]: '/assets/openrouter.png', [KnownEndpoints.perplexity]: '/assets/perplexity.png', diff --git a/docs/install/configuration/ai_endpoints.md b/docs/install/configuration/ai_endpoints.md index 5cce8a6d37..5690886603 100644 --- a/docs/install/configuration/ai_endpoints.md +++ b/docs/install/configuration/ai_endpoints.md @@ -271,6 +271,40 @@ Some of the endpoints are marked as **Known,** which means they might have speci ![image](https://github.com/danny-avila/LibreChat/assets/110412045/ddb4b2f3-608e-4034-9a27-3e94fc512034) +## Apple MLX +> MLX API key: ignored - [MLX OpenAI Compatibility](https://github.com/ml-explore/mlx-examples/blob/main/llms/mlx_lm/SERVER.md) + +**Notes:** + +- **Known:** icon provided. + +- API is mostly strict with unrecognized parameters. +- Support only one model at a time, otherwise you'll need to run a different endpoint with a different `baseURL`. + +```yaml + - name: "MLX" + apiKey: "mlx" + baseURL: "http://localhost:8080/v1/" + models: + default: [ + "Meta-Llama-3-8B-Instruct-4bit" + ] + fetch: false # fetching list of models is not supported + titleConvo: true + titleModel: "current_model" + summarize: false + summaryModel: "current_model" + forcePrompt: false + modelDisplayLabel: "Apple MLX" + addParams: + max_tokens: 2000 + "stop": [ + "<|eot_id|>" + ] +``` + +![image](https://github.com/danny-avila/LibreChat/blob/ae9d88b68c95fdb46787bca1df69407d2dd4e8dc/client/public/assets/mlx.png) + ## Ollama > Ollama API key: Required but ignored - [Ollama OpenAI Compatibility](https://github.com/ollama/ollama/blob/main/docs/openai.md) diff --git a/docs/install/configuration/custom_config.md b/docs/install/configuration/custom_config.md index 3a46b898ff..228d005fc2 100644 --- a/docs/install/configuration/custom_config.md +++ b/docs/install/configuration/custom_config.md @@ -1213,6 +1213,7 @@ Each endpoint in the `custom` array should have the following structure: - "Perplexity" - "together.ai" - "Ollama" + - "MLX" ### **models** diff --git a/docs/install/configuration/mlx.md b/docs/install/configuration/mlx.md new file mode 100644 index 0000000000..3890271527 --- /dev/null +++ b/docs/install/configuration/mlx.md @@ -0,0 +1,30 @@ +--- +title:  Apple MLX +description: Using LibreChat with Apple MLX +weight: -6 +--- +## MLX +Use [MLX](https://ml-explore.github.io/mlx/build/html/index.html) for + +* Running large language models on local Apple Silicon hardware (M1, M2, M3) ARM with unified CPU/GPU memory) + + +### 1. Install MLX on MacOS +#### Mac MX series only +MLX supports GPU acceleration on Apple Metal backend via `mlx-lm` Python package. Follow Instructions at [Install `mlx-lm` package](https://github.com/ml-explore/mlx-examples/tree/main/llms) + + +### 2. Load Models with MLX +MLX supports common HuggingFace models directly, but it's recommended to use converted and tested quantized models (depending on your hardware capability) provided by the [mlx-community](https://huggingface.co/mlx-community). + +Follow Instructions at [Install `mlx-lm` package](https://github.com/ml-explore/mlx-examples/tree/main/llms) + +1. Browse the available models [HuggingFace](https://huggingface.co/models?search=mlx-community) +2. Copy the text from the model page `/` (ex: `mlx-community/Meta-Llama-3-8B-Instruct-4bit`) +3. Check model size. Models that can run in CPU/GPU unified memory perform the best. +4. Follow the instructions to launch the model server [Run OpenAI Compatible Server Locally](https://github.com/ml-explore/mlx-examples/blob/main/llms/mlx_lm/SERVER.md) + +```mlx_lm.server --model /``` + +### 3. Configure LibreChat +Use `librechat.yaml` [Configuration file (guide here)](./ai_endpoints.md) to add MLX as a separate endpoint, an example with Llama-3 is provided. \ No newline at end of file diff --git a/docs/install/index.md b/docs/install/index.md index c4676a62b9..82568f0c7c 100644 --- a/docs/install/index.md +++ b/docs/install/index.md @@ -24,6 +24,7 @@ weight: 1 * 🤖 [AI Setup](./configuration/ai_setup.md) * 🚅 [LiteLLM](./configuration/litellm.md) * 🦙 [Ollama](./configuration/ollama.md) + * 🍎 [Apple MLX](./configuration/mlx.md) * 💸 [Free AI APIs](./configuration/free_ai_apis.md) * 🛂 [Authentication System](./configuration/user_auth_system.md) * 🍃 [Online MongoDB](./configuration/mongodb.md) diff --git a/packages/data-provider/src/config.ts b/packages/data-provider/src/config.ts index 0d30d23051..9198831968 100644 --- a/packages/data-provider/src/config.ts +++ b/packages/data-provider/src/config.ts @@ -299,6 +299,7 @@ export enum KnownEndpoints { fireworks = 'fireworks', groq = 'groq', mistral = 'mistral', + mlx = 'mlx', ollama = 'ollama', openrouter = 'openrouter', perplexity = 'perplexity',