From b676c29f589b16b88d6444fa0a11c3b707040e90 Mon Sep 17 00:00:00 2001 From: saloui Date: Sun, 14 May 2023 10:23:28 +0200 Subject: [PATCH] upgraded documentation --- Dockerfile | 2 +- README.md | 7 ++-- backends/gpt_4all/__init__.py | 3 -- backends/gpt_j/__init__.py | 3 -- backends/gptj/__init__.py | 3 -- backends/gptq/__init__.py | 7 +--- backends/hugging_face/__init__.py | 6 +--- backends/llama_cpp/__init__.py | 3 -- gpt4all_api/api.py | 59 +++++++++++++++++-------------- 9 files changed, 39 insertions(+), 54 deletions(-) diff --git a/Dockerfile b/Dockerfile index 12a88df8..310997d3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,7 +7,7 @@ RUN python3 -m venv venv && . venv/bin/activate RUN python3 -m pip install --no-cache-dir -r requirements.txt --upgrade pip COPY ./app.py /srv/app.py -COPY ./pyGpt4All /srv/pyGpt4All +COPY ./gpt4all_api /srv/gpt4all_api COPY ./backends /srv/backends COPY ./static /srv/static COPY ./templates /srv/templates diff --git a/README.md b/README.md index 130e6e01..b178ac1a 100644 --- a/README.md +++ b/README.md @@ -97,9 +97,10 @@ Now you're ready to work! # Supported backends Two backends are now supported: -1 - [The llama_cpp backend](https://github.com/nomic-ai/pygpt4all) -2 - [The GPT-j backend](https://github.com/marella/gpt4all-j) -3 - Hugging face's Transformers (under construction) +1 - [The llama_cpp backend by Abdeladim](https://github.com/abdeladim-s/pyllamacpp) +2 - [The GPT-j backend by Abdeladim](https://github.com/abdeladim-s/pygptj) +3 - [The GPT-j backend by marella](https://github.com/marella/gpt4all-j) +4 - Hugging face's Transformers (under construction) # Supported models You can also refuse to download the model during the install procedure and download it manually. diff --git a/backends/gpt_4all/__init__.py b/backends/gpt_4all/__init__.py index c8e73cd7..37eafcff 100644 --- a/backends/gpt_4all/__init__.py +++ b/backends/gpt_4all/__init__.py @@ -35,9 +35,6 @@ class GPT4ALL(GPTBackend): model_path=f"./models/gpt_4all/{self.config['model']}", ) - def stop_generation(self): - self.model._grab_text_callback() - def generate(self, prompt:str, n_predict: int = 128, diff --git a/backends/gpt_j/__init__.py b/backends/gpt_j/__init__.py index 2ee3fe27..e5ed8c4c 100644 --- a/backends/gpt_j/__init__.py +++ b/backends/gpt_j/__init__.py @@ -34,9 +34,6 @@ class GptJ(GPTBackend): prompt_context="", prompt_prefix="", prompt_suffix="" ) - def stop_generation(self): - self.model._grab_text_callback() - def generate(self, prompt:str, n_predict: int = 128, diff --git a/backends/gptj/__init__.py b/backends/gptj/__init__.py index 7798d8dc..f7f24780 100644 --- a/backends/gptj/__init__.py +++ b/backends/gptj/__init__.py @@ -34,9 +34,6 @@ class GPTJ(GPTBackend): model=f"./models/llama_cpp/{self.config['model']}", avx2 = self.config["use_avx2"] ) - def stop_generation(self): - self.model._grab_text_callback() - def generate(self, prompt:str, n_predict: int = 128, diff --git a/backends/gptq/__init__.py b/backends/gptq/__init__.py index fc244883..77aea56c 100644 --- a/backends/gptq/__init__.py +++ b/backends/gptq/__init__.py @@ -11,7 +11,7 @@ from pathlib import Path from typing import Callable from transformers import AutoTokenizer, TextGenerationPipeline from auto_gptq import AutoGPTQForCausalLM, BaseQuantizeConfig -from pyGpt4All.backend import GPTBackend +from gpt4all_api.backend import GPTBackend import torch import yaml @@ -38,11 +38,6 @@ class GPTQ(GPTBackend): self.model = AutoGPTQForCausalLM.from_pretrained(self.model_dir, BaseQuantizeConfig()) self.tokenizer = AutoTokenizer.from_pretrained(self.model_dir, use_fast=True ) - - - def stop_generation(self): - self.model._grab_text_callback() - def generate(self, prompt:str, n_predict: int = 128, diff --git a/backends/hugging_face/__init__.py b/backends/hugging_face/__init__.py index b52ed874..e9630fc7 100644 --- a/backends/hugging_face/__init__.py +++ b/backends/hugging_face/__init__.py @@ -13,7 +13,7 @@ from accelerate import init_empty_weights from accelerate import load_checkpoint_and_dispatch from transformers import AutoTokenizer from transformers import AutoConfig, AutoModelForCausalLM -from pyGpt4All.backend import GPTBackend +from gpt4all_api.backend import GPTBackend import torch __author__ = "parisneo" @@ -39,10 +39,6 @@ class HuggingFace(GPTBackend): self.tokenizer = AutoTokenizer.from_pretrained(config["model"]) self.model = AutoModelForCausalLM.from_pretrained(config["model"], load_in_8bit=True, device_map='auto') - - def stop_generation(self): - self.model._grab_text_callback() - def generate(self, prompt:str, n_predict: int = 128, diff --git a/backends/llama_cpp/__init__.py b/backends/llama_cpp/__init__.py index 6c3024f8..769f307f 100644 --- a/backends/llama_cpp/__init__.py +++ b/backends/llama_cpp/__init__.py @@ -37,9 +37,6 @@ class LLAMACPP(GPTBackend): seed=self.config['seed'], ) - def stop_generation(self): - self.model._grab_text_callback() - def generate(self, prompt:str, n_predict: int = 128, diff --git a/gpt4all_api/api.py b/gpt4all_api/api.py index 8ed19b44..ca61b5b9 100644 --- a/gpt4all_api/api.py +++ b/gpt4all_api/api.py @@ -167,34 +167,39 @@ class ModelProcess: time.sleep(1) print(ex) def _generate(self, prompt, id, n_predict): - self.id = id - if self.config["override_personality_model_parameters"]: - self.model.generate( - prompt, - new_text_callback=self._callback, - n_predict=n_predict, - temp=self.config['temperature'], - top_k=self.config['top_k'], - top_p=self.config['top_p'], - repeat_penalty=self.config['repeat_penalty'], - repeat_last_n = self.config['repeat_last_n'], - seed=self.config['seed'], - n_threads=self.config['n_threads'] - ) + if self.model is not None: + self.id = id + if self.config["override_personality_model_parameters"]: + self.model.generate( + prompt, + new_text_callback=self._callback, + n_predict=n_predict, + temp=self.config['temperature'], + top_k=self.config['top_k'], + top_p=self.config['top_p'], + repeat_penalty=self.config['repeat_penalty'], + repeat_last_n = self.config['repeat_last_n'], + seed=self.config['seed'], + n_threads=self.config['n_threads'] + ) + else: + self.model.generate( + prompt, + new_text_callback=self._callback, + n_predict=n_predict, + temp=self.personality.model_temperature, + top_k=self.personality.model_top_k, + top_p=self.personality.model_top_p, + repeat_penalty=self.personality.model_repeat_penalty, + repeat_last_n = self.personality.model_repeat_last_n, + #seed=self.config['seed'], + n_threads=self.config['n_threads'] + ) else: - self.model.generate( - prompt, - new_text_callback=self._callback, - n_predict=n_predict, - temp=self.personality.model_temperature, - top_k=self.personality.model_top_k, - top_p=self.personality.model_top_p, - repeat_penalty=self.personality.model_repeat_penalty, - repeat_last_n = self.personality.model_repeat_last_n, - #seed=self.config['seed'], - n_threads=self.config['n_threads'] - ) - + print("No model is installed or selected. Please make sure to install a model and select it inside your configuration before attempting to communicate with the model.") + print("To do this: Install the model to your models/ folder.") + print("Then set your model information in your local configuration file that you can find in configs/local_default.yaml") + print("You can also use the ui to set your model in the settings page.") def _callback(self, text): if not self.ready: print(".",end="")