Spaces:
Runtime error
Runtime error
Commit ·
5ec7b76
1
Parent(s): d13f3dd
added airLLM
Browse files- .DS_Store +0 -0
- AirLLM.py +52 -0
- RBotReloaded.py +6 -2
- agent_llama_ui.py +2 -1
- requirements.txt +2 -1
- start_agent.sh +22 -0
.DS_Store
ADDED
|
Binary file (8.2 kB). View file
|
|
|
AirLLM.py
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from typing import Any, List, Mapping, Optional
|
| 2 |
+
|
| 3 |
+
from langchain.callbacks.manager import CallbackManagerForLLMRun
|
| 4 |
+
from langchain.llms.base import LLM
|
| 5 |
+
|
| 6 |
+
from airllm import AirLLMLlama2
|
| 7 |
+
|
| 8 |
+
class AirLLM(LLM):
|
| 9 |
+
max_len: int
|
| 10 |
+
model: AirLLMLlama2
|
| 11 |
+
|
| 12 |
+
def __init__(self, llama2_model_id : str, max_len : int, compression = ""):
|
| 13 |
+
# could use hugging face model repo id:
|
| 14 |
+
self.model = AirLLMLlama2(llama2_model_id,compression=compression)
|
| 15 |
+
self.max_len = max_len
|
| 16 |
+
|
| 17 |
+
@property
|
| 18 |
+
def _llm_type(self) -> str:
|
| 19 |
+
return "custom"
|
| 20 |
+
|
| 21 |
+
def _call(
|
| 22 |
+
self,
|
| 23 |
+
prompt: str,
|
| 24 |
+
stop: Optional[List[str]] = None,
|
| 25 |
+
run_manager: Optional[CallbackManagerForLLMRun] = None,
|
| 26 |
+
**kwargs: Any,
|
| 27 |
+
) -> str:
|
| 28 |
+
if stop is not None:
|
| 29 |
+
raise ValueError("stop kwargs are not permitted.")
|
| 30 |
+
|
| 31 |
+
input_tokens = model.tokenizer(input_text,
|
| 32 |
+
return_tensors="pt",
|
| 33 |
+
return_attention_mask=False,
|
| 34 |
+
truncation=True,
|
| 35 |
+
max_length=self.max_len,
|
| 36 |
+
padding=True)
|
| 37 |
+
|
| 38 |
+
generation_output = model.generate(
|
| 39 |
+
input_tokens['input_ids'].cuda(),
|
| 40 |
+
max_new_tokens=20,
|
| 41 |
+
use_cache=True,
|
| 42 |
+
return_dict_in_generate=True)
|
| 43 |
+
|
| 44 |
+
output = model.tokenizer.decode(generation_output.sequences[0])
|
| 45 |
+
return output
|
| 46 |
+
|
| 47 |
+
|
| 48 |
+
@property
|
| 49 |
+
def _identifying_params(self) -> Mapping[str, Any]:
|
| 50 |
+
"""Get the identifying parameters."""
|
| 51 |
+
return {"max_len": self.max_len}
|
| 52 |
+
|
RBotReloaded.py
CHANGED
|
@@ -34,12 +34,13 @@ from typing import Any, Dict, List
|
|
| 34 |
import torch
|
| 35 |
from diffusers.pipelines.stable_diffusion.convert_from_ckpt import download_from_original_stable_diffusion_ckpt
|
| 36 |
import inspect
|
|
|
|
| 37 |
|
| 38 |
# Config
|
| 39 |
EMBD_CHUNK_SIZE = 512
|
| 40 |
AI_NAME = "Agent Llama"
|
| 41 |
USER_NAME = "Buddy"
|
| 42 |
-
MODELS_DIR = "models"
|
| 43 |
|
| 44 |
def validate_and_fix_params(tool_name, params_list):
|
| 45 |
try:
|
|
@@ -66,7 +67,7 @@ def validate_and_fix_params(tool_name, params_list):
|
|
| 66 |
return []
|
| 67 |
|
| 68 |
# Helper to load LM
|
| 69 |
-
def create_llm(model_id=f"{MODELS_DIR}/
|
| 70 |
if (model_id.startswith("http")):
|
| 71 |
print(f"Creating TextGen LLM base_url:{model_id}")
|
| 72 |
return TextGen(model_url=model_id, callbacks=[StreamingStdOutCallbackHandler()])
|
|
@@ -89,6 +90,9 @@ def create_llm(model_id=f"{MODELS_DIR}/mistral-7b-instruct-v0.1.Q4_K_M.gguf", lo
|
|
| 89 |
except Exception as ex:
|
| 90 |
print(f"Load Error {str(ex)}")
|
| 91 |
return None
|
|
|
|
|
|
|
|
|
|
| 92 |
|
| 93 |
# Class to store pages and run queries
|
| 94 |
class StorageRetrievalLLM:
|
|
|
|
| 34 |
import torch
|
| 35 |
from diffusers.pipelines.stable_diffusion.convert_from_ckpt import download_from_original_stable_diffusion_ckpt
|
| 36 |
import inspect
|
| 37 |
+
import AirLLM
|
| 38 |
|
| 39 |
# Config
|
| 40 |
EMBD_CHUNK_SIZE = 512
|
| 41 |
AI_NAME = "Agent Llama"
|
| 42 |
USER_NAME = "Buddy"
|
| 43 |
+
MODELS_DIR = "./models"
|
| 44 |
|
| 45 |
def validate_and_fix_params(tool_name, params_list):
|
| 46 |
try:
|
|
|
|
| 67 |
return []
|
| 68 |
|
| 69 |
# Helper to load LM
|
| 70 |
+
def create_llm(model_id=f"{MODELS_DIR}/deepseek-coder-6.7b-instruct.Q5_K_M.gguf", load_4bit=False, load_8bit=False, ctx_len = 8192, temperature=0.5, top_p=0.95):
|
| 71 |
if (model_id.startswith("http")):
|
| 72 |
print(f"Creating TextGen LLM base_url:{model_id}")
|
| 73 |
return TextGen(model_url=model_id, callbacks=[StreamingStdOutCallbackHandler()])
|
|
|
|
| 90 |
except Exception as ex:
|
| 91 |
print(f"Load Error {str(ex)}")
|
| 92 |
return None
|
| 93 |
+
else:
|
| 94 |
+
print(f"Trying AirLLM to load model_id:{model_id}")
|
| 95 |
+
return AirLLM(llama2_model_id=model_id, max_len=ctx_len, compression=("4bit" if load_4bit else "8bit" if load_8bit else ""))
|
| 96 |
|
| 97 |
# Class to store pages and run queries
|
| 98 |
class StorageRetrievalLLM:
|
agent_llama_ui.py
CHANGED
|
@@ -15,7 +15,7 @@ from langchain.schema import AIMessage, HumanMessage
|
|
| 15 |
load_dotenv()
|
| 16 |
|
| 17 |
|
| 18 |
-
default_model = "
|
| 19 |
default_context = 8192
|
| 20 |
default_load_type = "Auto"
|
| 21 |
default_iterations = 2
|
|
@@ -43,6 +43,7 @@ def get_models():
|
|
| 43 |
models = os.listdir(models_directory)
|
| 44 |
# Filter out any subdirectories, if any
|
| 45 |
models = [model for model in models if (model.lower().split(".")[-1] in supported_extensions) and os.path.isfile(os.path.join(models_directory, model))]
|
|
|
|
| 46 |
if len(models) == 0:
|
| 47 |
st.write("Downloading models")
|
| 48 |
from huggingface_hub import hf_hub_download
|
|
|
|
| 15 |
load_dotenv()
|
| 16 |
|
| 17 |
|
| 18 |
+
default_model = ""
|
| 19 |
default_context = 8192
|
| 20 |
default_load_type = "Auto"
|
| 21 |
default_iterations = 2
|
|
|
|
| 43 |
models = os.listdir(models_directory)
|
| 44 |
# Filter out any subdirectories, if any
|
| 45 |
models = [model for model in models if (model.lower().split(".")[-1] in supported_extensions) and os.path.isfile(os.path.join(models_directory, model))]
|
| 46 |
+
|
| 47 |
if len(models) == 0:
|
| 48 |
st.write("Downloading models")
|
| 49 |
from huggingface_hub import hf_hub_download
|
requirements.txt
CHANGED
|
@@ -42,4 +42,5 @@ Pillow
|
|
| 42 |
langchain
|
| 43 |
googletrans
|
| 44 |
python-dotenv
|
| 45 |
-
omegaconf
|
|
|
|
|
|
| 42 |
langchain
|
| 43 |
googletrans
|
| 44 |
python-dotenv
|
| 45 |
+
omegaconf
|
| 46 |
+
airllm
|
start_agent.sh
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/bin/bash
|
| 2 |
+
|
| 3 |
+
# Define the name of your virtual environment
|
| 4 |
+
ENV_NAME="myenv"
|
| 5 |
+
|
| 6 |
+
# Check if the virtual environment folder exists
|
| 7 |
+
if [ ! -d "$ENV_NAME" ]; then
|
| 8 |
+
# Create a new virtual environment
|
| 9 |
+
python -m venv $ENV_NAME
|
| 10 |
+
fi
|
| 11 |
+
|
| 12 |
+
# Activate the virtual environment
|
| 13 |
+
source $ENV_NAME/bin/activate
|
| 14 |
+
|
| 15 |
+
# Install the required packages from requirements.txt
|
| 16 |
+
python -m pip install -r requirements.txt
|
| 17 |
+
|
| 18 |
+
# Run your Streamlit application
|
| 19 |
+
python -m streamlit run agent_llama_ui.py
|
| 20 |
+
|
| 21 |
+
# Deactivate the virtual environment
|
| 22 |
+
deactivate
|