Duplicate from Open-Orca/OpenOrcaxOpenChat-Preview2-13B
Browse filesCo-authored-by: wing lian <winglian@users.noreply.huggingface.co>
- .gitattributes +35 -0
- README.md +13 -0
- app.py +116 -0
- requirements.txt +2 -0
.gitattributes
ADDED
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
*.7z filter=lfs diff=lfs merge=lfs -text
|
2 |
+
*.arrow filter=lfs diff=lfs merge=lfs -text
|
3 |
+
*.bin filter=lfs diff=lfs merge=lfs -text
|
4 |
+
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
5 |
+
*.ckpt filter=lfs diff=lfs merge=lfs -text
|
6 |
+
*.ftz filter=lfs diff=lfs merge=lfs -text
|
7 |
+
*.gz filter=lfs diff=lfs merge=lfs -text
|
8 |
+
*.h5 filter=lfs diff=lfs merge=lfs -text
|
9 |
+
*.joblib filter=lfs diff=lfs merge=lfs -text
|
10 |
+
*.lfs.* filter=lfs diff=lfs merge=lfs -text
|
11 |
+
*.mlmodel filter=lfs diff=lfs merge=lfs -text
|
12 |
+
*.model filter=lfs diff=lfs merge=lfs -text
|
13 |
+
*.msgpack filter=lfs diff=lfs merge=lfs -text
|
14 |
+
*.npy filter=lfs diff=lfs merge=lfs -text
|
15 |
+
*.npz filter=lfs diff=lfs merge=lfs -text
|
16 |
+
*.onnx filter=lfs diff=lfs merge=lfs -text
|
17 |
+
*.ot filter=lfs diff=lfs merge=lfs -text
|
18 |
+
*.parquet filter=lfs diff=lfs merge=lfs -text
|
19 |
+
*.pb filter=lfs diff=lfs merge=lfs -text
|
20 |
+
*.pickle filter=lfs diff=lfs merge=lfs -text
|
21 |
+
*.pkl filter=lfs diff=lfs merge=lfs -text
|
22 |
+
*.pt filter=lfs diff=lfs merge=lfs -text
|
23 |
+
*.pth filter=lfs diff=lfs merge=lfs -text
|
24 |
+
*.rar filter=lfs diff=lfs merge=lfs -text
|
25 |
+
*.safetensors filter=lfs diff=lfs merge=lfs -text
|
26 |
+
saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
27 |
+
*.tar.* filter=lfs diff=lfs merge=lfs -text
|
28 |
+
*.tar filter=lfs diff=lfs merge=lfs -text
|
29 |
+
*.tflite filter=lfs diff=lfs merge=lfs -text
|
30 |
+
*.tgz filter=lfs diff=lfs merge=lfs -text
|
31 |
+
*.wasm filter=lfs diff=lfs merge=lfs -text
|
32 |
+
*.xz filter=lfs diff=lfs merge=lfs -text
|
33 |
+
*.zip filter=lfs diff=lfs merge=lfs -text
|
34 |
+
*.zst filter=lfs diff=lfs merge=lfs -text
|
35 |
+
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
README.md
ADDED
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
---
|
2 |
+
title: OpenOrcaxOpenChat Preview2 13B
|
3 |
+
emoji: 🦀
|
4 |
+
colorFrom: purple
|
5 |
+
colorTo: green
|
6 |
+
sdk: gradio
|
7 |
+
sdk_version: 3.39.0
|
8 |
+
app_file: app.py
|
9 |
+
pinned: false
|
10 |
+
duplicated_from: Open-Orca/OpenOrcaxOpenChat-Preview2-13B
|
11 |
+
---
|
12 |
+
|
13 |
+
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
|
app.py
ADDED
@@ -0,0 +1,116 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import os
|
2 |
+
import re
|
3 |
+
import logging
|
4 |
+
import gradio as gr
|
5 |
+
import openai
|
6 |
+
|
7 |
+
print(os.environ)
|
8 |
+
openai.api_base = os.environ.get("OPENAI_API_BASE")
|
9 |
+
openai.api_key = os.environ.get("OPENAI_API_KEY")
|
10 |
+
|
11 |
+
BASE_SYSTEM_MESSAGE = """You are an AI assistant named OpenOrcaChat. If users clearly indicate an interest in how good you are you may tell them that the group who made you can be found at https://discord.gg/mhFWVbXUDh. The groups involved are OpenChat and OpenOrca"""
|
12 |
+
|
13 |
+
def make_prediction(prompt, max_tokens=None, temperature=None, top_p=None, top_k=None, repetition_penalty=None):
|
14 |
+
completion = openai.Completion.create(model="Open-Orca/OpenOrcaxOpenChat-Preview2-13B", prompt=prompt, max_tokens=max_tokens, temperature=temperature, top_p=top_p, top_k=top_k, repetition_penalty=repetition_penalty, stream=True)
|
15 |
+
for chunk in completion:
|
16 |
+
yield chunk["choices"][0]["text"]
|
17 |
+
|
18 |
+
|
19 |
+
def clear_chat(chat_history_state, chat_message):
|
20 |
+
chat_history_state = []
|
21 |
+
chat_message = ''
|
22 |
+
return chat_history_state, chat_message
|
23 |
+
|
24 |
+
|
25 |
+
def user(message, history):
|
26 |
+
history = history or []
|
27 |
+
# Append the user's message to the conversation history
|
28 |
+
history.append([message, ""])
|
29 |
+
return "", history
|
30 |
+
|
31 |
+
|
32 |
+
def chat(history, system_message, max_tokens, temperature, top_p, top_k, repetition_penalty):
|
33 |
+
history = history or []
|
34 |
+
|
35 |
+
messages = BASE_SYSTEM_MESSAGE + system_message.strip() + "\n" + \
|
36 |
+
"\n".join(["\n".join(["User: "+item[0]+"<|end_of_turn|>", "Assistant: "+item[1]+"<|end_of_turn|>"])
|
37 |
+
for item in history])
|
38 |
+
# strip the last `<|end_of_turn|>` from the messages
|
39 |
+
messages = messages.rstrip("<|end_of_turn|>")
|
40 |
+
# remove last space from assistant, some models output a ZWSP if you leave a space
|
41 |
+
messages = messages.rstrip()
|
42 |
+
|
43 |
+
prediction = make_prediction(
|
44 |
+
messages,
|
45 |
+
max_tokens=max_tokens,
|
46 |
+
temperature=temperature,
|
47 |
+
top_p=top_p,
|
48 |
+
top_k=top_k,
|
49 |
+
repetition_penalty=repetition_penalty,
|
50 |
+
)
|
51 |
+
for tokens in prediction:
|
52 |
+
tokens = re.findall(r'(.*?)(\s|$)', tokens)
|
53 |
+
for subtoken in tokens:
|
54 |
+
subtoken = "".join(subtoken)
|
55 |
+
answer = subtoken
|
56 |
+
history[-1][1] += answer
|
57 |
+
# stream the response
|
58 |
+
yield history, history, ""
|
59 |
+
|
60 |
+
|
61 |
+
start_message = ""
|
62 |
+
|
63 |
+
CSS ="""
|
64 |
+
.contain { display: flex; flex-direction: column; }
|
65 |
+
.gradio-container { height: 100vh !important; }
|
66 |
+
#component-0 { height: 100%; }
|
67 |
+
#chatbot { flex-grow: 1; overflow: auto; resize: vertical; }
|
68 |
+
"""
|
69 |
+
|
70 |
+
#with gr.Blocks() as demo:
|
71 |
+
with gr.Blocks(css=CSS) as demo:
|
72 |
+
with gr.Row():
|
73 |
+
with gr.Column():
|
74 |
+
gr.Markdown(f"""
|
75 |
+
## This demo is an unquantized GPU chatbot of [OpenOrcaxOpenChat-Preview2-13B](https://huggingface.co/Open-Orca/OpenOrcaxOpenChat-Preview2-13B)
|
76 |
+
Brought to you by your friends at Alignment Lab AI, OpenChat, and Open Access AI Collective!
|
77 |
+
""")
|
78 |
+
with gr.Row():
|
79 |
+
gr.Markdown("# 🐋 OpenOrca x OpenChat - Preview2 - 13B Playground Space! 🐋")
|
80 |
+
with gr.Row():
|
81 |
+
#chatbot = gr.Chatbot().style(height=500)
|
82 |
+
chatbot = gr.Chatbot(elem_id="chatbot")
|
83 |
+
with gr.Row():
|
84 |
+
message = gr.Textbox(
|
85 |
+
label="What do you want to chat about?",
|
86 |
+
placeholder="Ask me anything.",
|
87 |
+
lines=3,
|
88 |
+
)
|
89 |
+
with gr.Row():
|
90 |
+
submit = gr.Button(value="Send message", variant="secondary").style(full_width=True)
|
91 |
+
clear = gr.Button(value="New topic", variant="secondary").style(full_width=False)
|
92 |
+
stop = gr.Button(value="Stop", variant="secondary").style(full_width=False)
|
93 |
+
with gr.Accordion("Show Model Parameters", open=False):
|
94 |
+
with gr.Row():
|
95 |
+
with gr.Column():
|
96 |
+
max_tokens = gr.Slider(20, 1000, label="Max Tokens", step=20, value=500)
|
97 |
+
temperature = gr.Slider(0.2, 2.0, label="Temperature", step=0.1, value=0.8)
|
98 |
+
top_p = gr.Slider(0.0, 1.0, label="Top P", step=0.05, value=0.95)
|
99 |
+
top_k = gr.Slider(0, 100, label="Top K", step=1, value=40)
|
100 |
+
repetition_penalty = gr.Slider(0.0, 2.0, label="Repetition Penalty", step=0.1, value=1.1)
|
101 |
+
|
102 |
+
system_msg = gr.Textbox(
|
103 |
+
start_message, label="System Message", interactive=True, visible=True, placeholder="System prompt. Provide instructions which you want the model to remember.", lines=5)
|
104 |
+
|
105 |
+
chat_history_state = gr.State()
|
106 |
+
clear.click(clear_chat, inputs=[chat_history_state, message], outputs=[chat_history_state, message], queue=False)
|
107 |
+
clear.click(lambda: None, None, chatbot, queue=False)
|
108 |
+
|
109 |
+
submit_click_event = submit.click(
|
110 |
+
fn=user, inputs=[message, chat_history_state], outputs=[message, chat_history_state], queue=True
|
111 |
+
).then(
|
112 |
+
fn=chat, inputs=[chat_history_state, system_msg, max_tokens, temperature, top_p, top_k, repetition_penalty], outputs=[chatbot, chat_history_state, message], queue=True
|
113 |
+
)
|
114 |
+
stop.click(fn=None, inputs=None, outputs=None, cancels=[submit_click_event], queue=False)
|
115 |
+
|
116 |
+
demo.queue(max_size=128, concurrency_count=48).launch(debug=True, server_name="0.0.0.0", server_port=7860)
|
requirements.txt
ADDED
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
1 |
+
requests
|
2 |
+
openai
|