File size: 2,751 Bytes
5efa561
 
8fd3cf8
5efa561
 
 
b96b830
 
2e9bb0a
65ae873
 
 
 
 
b96b830
 
 
 
65ae873
 
b96b830
 
 
 
9891f35
 
f56640a
9891f35
1a4049f
5efa561
 
 
 
65ae873
5efa561
 
65ae873
837474e
 
 
5efa561
837474e
5efa561
 
 
65ae873
 
 
5efa561
 
837474e
5efa561
 
d36c00f
5efa561
 
 
76a7dba
837474e
5efa561
837474e
 
2d5948c
 
837474e
5efa561
 
0b0f7fe
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import gradio as gr
import os
os.system('CMAKE_ARGS="-DLLAMA_OPENBLAS=on" FORCE_CMAKE=1 pip install llama-cpp-python')
import wget
from llama_cpp import Llama
import random
import os
import multiprocessing
from huggingface_hub import hf_hub_download #load from huggingfaces 

def get_num_cores():
    """Get the number of CPU cores."""
    return os.cpu_count()

def get_num_threads():
    """Get the number of threads available to the current process."""
    return multiprocessing.cpu_count()

if __name__ == "__main__":
    num_cores = get_num_cores()
    num_threads = get_num_threads()

    print(f"Number of CPU cores: {num_cores}")
    print(f"Number of threads available to the current process: {num_threads}")
#url = 'https://huggingface.co/TheBloke/Llama-2-7B-Chat-GGML/resolve/main/llama-2-7b-chat.ggmlv3.q2_K.bin'
#filename = wget.download(url)
model_path= hf_hub_download(repo_id="TheBloke/Airoboros-M-7B-3.1-GGUF", filename="airoboros-m-7b-3.1.Q2_K.gguf")

llm2 = Llama(model_path=model_path, seed=random.randint(1, 2**31), use_mlock=False, n_threads=4)
theme = gr.themes.Soft(
    primary_hue=gr.themes.Color("#ededed", "#fee2e2", "#fecaca", "#fca5a5", "#f87171", "#ef4444", "#dc2626", "#b91c1c", "#991b1b", "#7f1d1d", "#6c1e1e"),
    neutral_hue="red",
)
title = """<h1 align="center">Chat with awesome LLAMA 2 CHAT model!</h1><br>"""
with gr.Blocks(theme=theme) as demo:
    gr.HTML(title)
    gr.HTML("This model is awesome for its size! It is only 20th the size of Chatgpt but is still decent for chatting. However like all models, LLAMA-2-CHAT can hallucinate and provide incorrect information.")
    #chatbot = gr.Chatbot()
    #msg = gr.Textbox()
    #clear = gr.ClearButton([msg, chatbot])
    #instruction = gr.Textbox(label="Instruction", placeholder=)
    def bot(user_message):
        #token1 = llm.tokenize(b"### Instruction: ")
        #token2 = llm.tokenize(instruction.encode())
        #token3 = llm2.tokenize(b"USER: ")
        #tokens3 = llm2.tokenize(user_message.encode())
        #token4 = llm2.tokenize(b"\n\n### Response:")
        tokens = llm2.tokenize(user_message.encode())
        count = 0
        output = ""
        outputs = ""
        for token in llm2.generate(tokens, top_k=50, top_p=0.73, temp=0.72, repeat_penalty=1.1):
            text = llm2.detokenize([token])
            outputs += text.decode(errors='ignore')
            count += 1
            if count >= 500 or (token == llm2.token_eos()):
                break
            output += text.decode(errors='ignore')
            yield output
    gr.HTML("Thanks for checking out this app!")
    gr.Button("Answer").click(
        fn=bot, 
        inputs=gr.Textbox(),
        outputs=gr.Textbox(),
    )
demo.queue()
demo.launch(debug=True)