cmz1024 commited on
Commit
1772055
·
verified ·
1 Parent(s): f1a7d70

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +40 -52
app.py CHANGED
@@ -1,63 +1,51 @@
1
  import gradio as gr
2
- from huggingface_hub import InferenceClient
 
3
 
4
- # 修改为你的模型
5
- client = InferenceClient("cmz1024/minimind-zero")
 
 
 
6
 
7
- def respond(
8
- message,
9
- history: list[tuple[str, str]],
10
- system_message,
11
- max_tokens,
12
- temperature,
13
- top_p,
14
- ):
15
- messages = [{"role": "system", "content": system_message}]
16
 
17
- for val in history:
18
- if val[0]:
19
- messages.append({"role": "user", "content": val[0]})
20
- if val[1]:
21
- messages.append({"role": "assistant", "content": val[1]})
22
-
23
- messages.append({"role": "user", "content": message})
24
-
25
- try:
26
- response = ""
27
- for message in client.chat_completion(
28
- messages,
29
- max_tokens=max_tokens,
30
- stream=True,
31
  temperature=temperature,
32
  top_p=top_p,
33
- ):
34
- token = message.choices[0].delta.content
35
- response += token
36
- yield response
37
- except Exception as e:
38
- yield f"发生错误: {str(e)}"
 
39
 
40
- # 创建聊天界面
41
- demo = gr.ChatInterface(
42
- respond,
43
- chatbot=gr.Chatbot(height=400),
44
- textbox=gr.Textbox(placeholder="输入您的问题...", container=False, scale=7),
45
- title="MinimindZero 演示",
46
- description="这是一个牧之训练的中文语言模型演示,您可以通过对话来体验模型的能力。",
47
- additional_inputs=[
48
- gr.Textbox(value="你是一个友好的中文助手。", label="系统提示词"),
49
- gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="最大生成长度"),
50
- gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="温度"),
51
- gr.Slider(
52
- minimum=0.1,
53
- maximum=1.0,
54
- value=0.95,
55
- step=0.05,
56
- label="Top-p",
57
- ),
58
  ],
59
- theme="soft",
 
 
60
  )
61
 
62
  if __name__ == "__main__":
63
- demo.launch()
 
1
  import gradio as gr
2
+ from transformers import AutoTokenizer, AutoModelForCausalLM
3
+ import torch
4
 
5
+ # 加载模型和tokenizer
6
+ model_name = "cmz1024/minimind-zero" # 替换为你的模型路径
7
+ tokenizer = AutoTokenizer.from_pretrained(model_name)
8
+ model = AutoModelForCausalLM.from_pretrained(model_name, torch_dtype=torch.float16)
9
+ model.eval()
10
 
11
+ if torch.cuda.is_available():
12
+ model = model.cuda()
 
 
 
 
 
 
 
13
 
14
+ def generate_text(prompt, max_length=512, temperature=0.7, top_p=0.9):
15
+ # 对输入进行编码
16
+ inputs = tokenizer(prompt, return_tensors="pt")
17
+
18
+ if torch.cuda.is_available():
19
+ inputs = {k: v.cuda() for k, v in inputs.items()}
20
+
21
+ # 生成文本
22
+ with torch.no_grad():
23
+ outputs = model.generate(
24
+ inputs["input_ids"],
25
+ max_new_tokens=max_length,
 
 
26
  temperature=temperature,
27
  top_p=top_p,
28
+ pad_token_id=tokenizer.pad_token_id,
29
+ eos_token_id=tokenizer.eos_token_id,
30
+ )
31
+
32
+ # 解码输出
33
+ generated_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
34
+ return generated_text
35
 
36
+ # 创建Gradio界面
37
+ demo = gr.Interface(
38
+ fn=generate_text,
39
+ inputs=[
40
+ gr.Textbox(label="输入提示词", lines=3),
41
+ gr.Slider(minimum=1, maximum=1024, value=512, label="最大生成长度"),
42
+ gr.Slider(minimum=0.1, maximum=2.0, value=0.7, label="Temperature"),
43
+ gr.Slider(minimum=0.1, maximum=1.0, value=0.9, label="Top-p"),
 
 
 
 
 
 
 
 
 
 
44
  ],
45
+ outputs=gr.Textbox(label="生成结果", lines=10),
46
+ title="MiniMind 文本生成",
47
+ description="一个简单的文本生成demo"
48
  )
49
 
50
  if __name__ == "__main__":
51
+ demo.launch()