dingw commited on
Commit
d0622de
·
verified ·
1 Parent(s): 638946d

Upload folder using huggingface_hub

Browse files
Files changed (6) hide show
  1. .github/workflows/update_space.yml +28 -0
  2. README.md +3 -9
  3. app.py +6 -0
  4. chatbot_hf.py +65 -0
  5. test.ipynb +75 -0
  6. transformer_hf_0.py +51 -0
.github/workflows/update_space.yml ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ name: Run Python script
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+
8
+ jobs:
9
+ build:
10
+ runs-on: ubuntu-latest
11
+
12
+ steps:
13
+ - name: Checkout
14
+ uses: actions/checkout@v2
15
+
16
+ - name: Set up Python
17
+ uses: actions/setup-python@v2
18
+ with:
19
+ python-version: '3.9'
20
+
21
+ - name: Install Gradio
22
+ run: python -m pip install gradio
23
+
24
+ - name: Log in to Hugging Face
25
+ run: python -c 'import huggingface_hub; huggingface_hub.login(token="${{ secrets.hf_token }}")'
26
+
27
+ - name: Deploy to Spaces
28
+ run: gradio deploy
README.md CHANGED
@@ -1,12 +1,6 @@
1
  ---
2
- title: Echo Chatbot
3
- emoji: ⚡
4
- colorFrom: gray
5
- colorTo: red
6
- sdk: gradio
7
- sdk_version: 5.5.0
8
  app_file: app.py
9
- pinned: false
 
10
  ---
11
-
12
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
1
  ---
2
+ title: echo-chatbot
 
 
 
 
 
3
  app_file: app.py
4
+ sdk: gradio
5
+ sdk_version: 5.0.2
6
  ---
 
 
app.py ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+
3
+ def slow_echo(message, history):
4
+ return message
5
+
6
+ demo = gr.ChatInterface(slow_echo).queue().launch()
chatbot_hf.py ADDED
@@ -0,0 +1,65 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from huggingface_hub import InferenceClient
2
+ import gradio as gr
3
+
4
+ client = InferenceClient(token="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")
5
+
6
+ def respond(
7
+ prompt: str,
8
+ history,
9
+ ):
10
+ if not history:
11
+ history = [{"role": "system", "content": "You are a friendly chatbot"}]
12
+ history.append({"role": "user", "content": prompt})
13
+
14
+ yield history
15
+
16
+ response = {"role": "assistant", "content": ""}
17
+ for message in client.chat_completion(
18
+ history,
19
+ temperature=0.95,
20
+ top_p=0.9,
21
+ max_tokens=512,
22
+ stream=True,
23
+ model="HuggingFaceH4/zephyr-7b-beta"
24
+ ):
25
+ response["content"] += message.choices[0].delta.content or ""
26
+
27
+ yield history + [response]
28
+
29
+ def handle_undo(history, undo_data: gr.UndoData):
30
+ return history[:undo_data.index], history[undo_data.index]['content']
31
+
32
+ def handle_retry(history, retry_data: gr.RetryData):
33
+ new_history = history[:retry_data.index]
34
+ previous_prompt = history[retry_data.index]['content']
35
+ yield from respond(previous_prompt, new_history)
36
+
37
+ def handle_like(data: gr.LikeData):
38
+ if data.liked:
39
+ print("You upvoted this response: ", data.value)
40
+ else:
41
+ print("You downvoted this response: ", data.value)
42
+
43
+
44
+ with gr.Blocks() as demo:
45
+ gr.Markdown("# Chat with Hugging Face Zephyr 7b 🤗")
46
+ chatbot = gr.Chatbot(
47
+ label="Agent",
48
+ type="messages",
49
+ avatar_images=(
50
+ None,
51
+ "https://em-content.zobj.net/source/twitter/376/hugging-face_1f917.png",
52
+ ),
53
+ )
54
+
55
+ prompt = gr.Textbox(max_lines=1, label="Chat Message")
56
+ prompt.submit(respond, [prompt, chatbot], [chatbot])
57
+ prompt.submit(lambda: "", None, [prompt])
58
+ chatbot.undo(handle_undo, chatbot, [chatbot, prompt])
59
+ chatbot.retry(handle_retry, chatbot, [chatbot])
60
+ chatbot.like(handle_like, None, None)
61
+
62
+
63
+
64
+ if __name__ == "__main__":
65
+ demo.launch()
test.ipynb ADDED
@@ -0,0 +1,75 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "code",
5
+ "execution_count": 13,
6
+ "metadata": {},
7
+ "outputs": [
8
+ {
9
+ "name": "stdout",
10
+ "output_type": "stream",
11
+ "text": [
12
+ "I am going to yield something!\n",
13
+ "<generator object numberGenerator at 0x7e9ba9d18d60>\n",
14
+ "I am going to yield something!\n",
15
+ "<generator object numberGenerator at 0x7e9ba9d18d60>\n",
16
+ "I am going to yield something!\n",
17
+ "<generator object numberGenerator at 0x7e9ba9d18d60>\n",
18
+ "I am going to yield something!\n",
19
+ "<generator object numberGenerator at 0x7e9ba9d18d60>\n",
20
+ "I am going to yield something!\n",
21
+ "<generator object numberGenerator at 0x7e9ba9d18d60>\n",
22
+ "I am going to yield something!\n",
23
+ "<generator object numberGenerator at 0x7e9ba9d18d60>\n"
24
+ ]
25
+ }
26
+ ],
27
+ "source": [
28
+ "def numberGenerator(number_range: int):\n",
29
+ "\tfor i in range(number_range+1):\n",
30
+ "\t\tyield i\n",
31
+ "\n",
32
+ "\n",
33
+ "def loudNumberGenerator(number_range: int):\n",
34
+ "\tnormal_number_generator = numberGenerator(number_range=number_range)\n",
35
+ "\twhile True:\n",
36
+ "\t\tprint('I am going to yield something!')\n",
37
+ "\t\tyield normal_number_generator\n",
38
+ "\n",
39
+ "\n",
40
+ "zero_to_five = loudNumberGenerator(5)\n",
41
+ "\n",
42
+ "for _ in range(6):\n",
43
+ "\tprint(next(zero_to_five))"
44
+ ]
45
+ },
46
+ {
47
+ "cell_type": "code",
48
+ "execution_count": null,
49
+ "metadata": {},
50
+ "outputs": [],
51
+ "source": []
52
+ }
53
+ ],
54
+ "metadata": {
55
+ "kernelspec": {
56
+ "display_name": "Python 3",
57
+ "language": "python",
58
+ "name": "python3"
59
+ },
60
+ "language_info": {
61
+ "codemirror_mode": {
62
+ "name": "ipython",
63
+ "version": 3
64
+ },
65
+ "file_extension": ".py",
66
+ "mimetype": "text/x-python",
67
+ "name": "python",
68
+ "nbconvert_exporter": "python",
69
+ "pygments_lexer": "ipython3",
70
+ "version": "3.10.12"
71
+ }
72
+ },
73
+ "nbformat": 4,
74
+ "nbformat_minor": 2
75
+ }
transformer_hf_0.py ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ Need GPU!
3
+ """
4
+
5
+ import gradio as gr
6
+ import torch
7
+ from transformers import AutoModelForCausalLM, AutoTokenizer, StoppingCriteria, StoppingCriteriaList, TextIteratorStreamer
8
+ from threading import Thread
9
+
10
+ tokenizer = AutoTokenizer.from_pretrained("togethercomputer/RedPajama-INCITE-Chat-3B-v1")
11
+ model = AutoModelForCausalLM.from_pretrained("togethercomputer/RedPajama-INCITE-Chat-3B-v1", torch_dtype=torch.float16)
12
+ model = model.to('cuda:0')
13
+
14
+ class StopOnTokens(StoppingCriteria):
15
+ def __call__(self, input_ids: torch.LongTensor, scores: torch.FloatTensor, **kwargs) -> bool:
16
+ stop_ids = [29, 0]
17
+ for stop_id in stop_ids:
18
+ if input_ids[0][-1] == stop_id:
19
+ return True
20
+ return False
21
+
22
+ def predict(message, history):
23
+ history_transformer_format = list(zip(history[:-1], history[1:])) + [[message, ""]]
24
+ stop = StopOnTokens()
25
+
26
+ messages = "".join(["".join(["\n<human>:"+item[0], "\n<bot>:"+item[1]])
27
+ for item in history_transformer_format])
28
+
29
+ model_inputs = tokenizer([messages], return_tensors="pt").to("cuda")
30
+ streamer = TextIteratorStreamer(tokenizer, timeout=10., skip_prompt=True, skip_special_tokens=True)
31
+ generate_kwargs = dict(
32
+ model_inputs,
33
+ streamer=streamer,
34
+ max_new_tokens=1024,
35
+ do_sample=True,
36
+ top_p=0.95,
37
+ top_k=1000,
38
+ temperature=1.0,
39
+ num_beams=1,
40
+ stopping_criteria=StoppingCriteriaList([stop])
41
+ )
42
+ t = Thread(target=model.generate, kwargs=generate_kwargs)
43
+ t.start()
44
+
45
+ partial_message = ""
46
+ for new_token in streamer:
47
+ if new_token != '<':
48
+ partial_message += new_token
49
+ yield partial_message
50
+
51
+ gr.ChatInterface(predict).launch()