ershadsarabi commited on
Commit
38976e1
1 Parent(s): 18b1356

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +50 -46
app.py CHANGED
@@ -1,62 +1,66 @@
1
  import gradio as gr
2
  from huggingface_hub import InferenceClient
 
 
3
 
4
- """
5
- For more information on `huggingface_hub` Inference API support, please check the docs: https://huggingface.co/docs/huggingface_hub/v0.22.2/en/guides/inference
6
- """
7
- client = InferenceClient("ViraIntelligentDataMining/PersianLLaMA-13B-Instruct")
 
 
 
8
 
9
 
10
- def respond(
11
- message,
12
- history: list[tuple[str, str]],
13
- system_message,
14
- max_tokens,
15
- temperature,
16
- top_p,
17
- ):
18
- messages = [{"role": "system", "content": system_message}]
19
 
20
- for val in history:
21
- if val[0]:
22
- messages.append({"role": "user", "content": val[0]})
23
- if val[1]:
24
- messages.append({"role": "assistant", "content": val[1]})
25
 
26
- messages.append({"role": "user", "content": message})
 
 
 
 
 
 
27
 
28
- response = ""
 
 
 
29
 
30
- for message in client.chat_completion(
31
- messages,
32
- max_tokens=max_tokens,
33
- stream=True,
34
- temperature=temperature,
35
- top_p=top_p,
36
- ):
37
- token = message.choices[0].delta.content
38
 
39
- response += token
40
- yield response
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
41
 
 
 
 
 
 
 
 
42
  """
43
- For information on how to customize the ChatInterface, peruse the gradio docs: https://www.gradio.app/docs/chatinterface
44
  """
45
- demo = gr.ChatInterface(
46
- respond,
47
- additional_inputs=[
48
- gr.Textbox(value="You are a friendly Chatbot.", label="System message"),
49
- gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Max new tokens"),
50
- gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperature"),
51
- gr.Slider(
52
- minimum=0.1,
53
- maximum=1.0,
54
- value=0.95,
55
- step=0.05,
56
- label="Top-p (nucleus sampling)",
57
- ),
58
- ],
59
- )
60
 
61
 
62
  if __name__ == "__main__":
 
1
  import gradio as gr
2
  from huggingface_hub import InferenceClient
3
+ import torch
4
+ from transformers import LlamaTokenizer, LlamaForCausalLM
5
 
6
+ prompt_input = (
7
+ "Below is an instruction that describes a task. "
8
+ "Write a response that appropriately completes the request.\n\n"
9
+ "### Instruction:\n\n{instruction}\n\n### Response:\n\n"
10
+ )
11
+ load_type = torch.float16
12
+ device = torch.device(0)
13
 
14
 
15
+ def generate_prompt(instruction, input=None):
16
+ if input:
17
+ instruction = instruction + '\n' + input
18
+ return prompt_input.format_map({'instruction': instruction})
 
 
 
 
 
19
 
 
 
 
 
 
20
 
21
+ model_path = "ViraIntelligentDataMining/PersianLLaMA-13B-Instruct"
22
+ tokenizer = LlamaTokenizer.from_pretrained(model_path)
23
+ base_model = LlamaForCausalLM.from_pretrained(
24
+ model_path,
25
+ torch_dtype=load_type,
26
+ device_map='cpu',
27
+ ).cuda()
28
 
29
+ model_vocab_size = base_model.get_input_embeddings().weight.size(0)
30
+ tokenizer_vocab_size = len(tokenizer)
31
+ if model_vocab_size != tokenizer_vocab_size:
32
+ base_model.resize_token_embeddings(tokenizer_vocab_size)
33
 
 
 
 
 
 
 
 
 
34
 
35
+ def generate_answer(base_model, instruction, input=None):
36
+ generation_config = dict(
37
+ temperature=0.5,
38
+ top_k=40,
39
+ top_p=0.9,
40
+ repetition_penalty=1.1,
41
+ max_new_tokens=1024)
42
+ input_text = generate_prompt(instruction, input)
43
+ inputs = tokenizer(input_text, return_tensors="pt")
44
+ generation_output = base_model.generate(
45
+ input_ids=inputs["input_ids"].to(device),
46
+ eos_token_id=tokenizer.eos_token_id,
47
+ pad_token_id=tokenizer.pad_token_id,
48
+ **generation_config)
49
+ s = generation_output[0]
50
+ output = tokenizer.decode(s, skip_special_tokens=True)
51
+ response = output.split("### Response:")[1].strip()
52
+ return response
53
 
54
+
55
+ instruction = "تصور کنید در حال نوشتن داستانی درباره یک شهر که تمام ساکنانش ربات هستند. این ربات‌ها توانایی‌های ویژه‌ای دارند که زندگی روزمره آن‌ها را از انسان‌ها متمایز می‌کند. شرح دهید که این ربات‌ها چگونه به کارهای روزانه خود می‌پردازند و چه چالش‌هایی با آن‌ها روبه‌رو هستند. همچنین، توضیح دهید که چگونه معماری شهر برای نیازهای خاص آن‌ها طراحی شده است."
56
+
57
+ response = generate_answer(base_model,
58
+ instruction=instruction,
59
+ input="")
60
+ print(response)
61
  """
62
+ در این شهر، همه ساکنان ربات هستند که دارای توانایی های منحصر به فرد هستند که زندگی روزمره آنها را از انسان ها متمایز می کند. هر روز صبح، ربات ها بیدار می شوند و برنامه های خود را برای روز تنظیم می کنند. برخی از آنها ممکن است برای کار بروند، در حالی که دیگران ممکن است برای انجام وظایف خانگی یا مراقبت از خانواده خود وقت صرف کنند. ربات ها بسیار کارآمد هستند و می توانند چندین کار را همزمان انجام دهند، بنابراین زمان زیادی برای استراحت ندارند. آنها همچنین به طور منظم برای نگهداری و تعمیر نیاز دارند، زیرا آنها مانند انسان ها مستعد خرابی هستند. بسیاری از ربات ها به دنبال سرگرمی هستند و ممکن است برای شرکت در فعالیت هایی مانند ورزش، خواندن یا نقاشی وقت صرف کنند. برخی از ربات ها حتی ممکن است برای یادگیری یا بهبود مهارت های خود در زمینه های مختلف مانند هنر، موسیقی یا آشپزی تلاش کنند. ربات ها همچنین به طور مداوم به پیشرفت های تکنولوژیکی جدید علاقه مند هستند و اغلب به دنبال راه حل های جدید برای مشکلات موجود در جامعه هستند. در این شهر، همه ساکنان ربات هستند که دارای توانایی های منحصر به فرد هستند که زندگی روزمره آنها را از انسان ها متمایز می کند.
63
  """
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
64
 
65
 
66
  if __name__ == "__main__":