zhman commited on
Commit
346b1be
·
1 Parent(s): de6cf9c

Deploy math solver

Browse files
Files changed (2) hide show
  1. app.py +127 -0
  2. requirements.txt +4 -0
app.py ADDED
@@ -0,0 +1,127 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ HuggingFace Spaces 推理应用
3
+ 使用 Gradio 创建交互式界面
4
+ """
5
+
6
+ import gradio as gr
7
+ from transformers import AutoModelForCausalLM, AutoTokenizer
8
+ import torch
9
+
10
+ # 模型配置
11
+ MODEL_NAME = "zhman/llama-SFT-GRPO"
12
+
13
+ # 加载模型和分词器
14
+ print("🔄 加载模型...")
15
+ tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
16
+ model = AutoModelForCausalLM.from_pretrained(
17
+ MODEL_NAME,
18
+ torch_dtype=torch.bfloat16,
19
+ device_map="auto"
20
+ )
21
+ print("✅ 模型加载完成!")
22
+
23
+
24
+ def solve_math_problem(question, max_length=512, temperature=0.7, top_p=0.9):
25
+ """
26
+ 解决数学问题
27
+
28
+ Args:
29
+ question: 数学问题
30
+ max_length: 最大生成长度
31
+ temperature: 温度参数
32
+ top_p: Top-p 采样参数
33
+
34
+ Returns:
35
+ str: 模型生成的答案
36
+ """
37
+ # 构造提示词
38
+ prompt = f"问题:{question}\n答案:"
39
+
40
+ # 编码输入
41
+ inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
42
+
43
+ # 生成回答
44
+ with torch.no_grad():
45
+ outputs = model.generate(
46
+ **inputs,
47
+ max_length=max_length,
48
+ temperature=temperature,
49
+ top_p=top_p,
50
+ do_sample=True,
51
+ pad_token_id=tokenizer.pad_token_id,
52
+ eos_token_id=tokenizer.eos_token_id
53
+ )
54
+
55
+ # 解码输出
56
+ generated_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
57
+
58
+ # 提取答案部分
59
+ if "答案:" in generated_text:
60
+ answer = generated_text.split("答案:", 1)[1].strip()
61
+ else:
62
+ answer = generated_text
63
+
64
+ return answer
65
+
66
+
67
+ # 创建 Gradio 界面
68
+ demo = gr.Interface(
69
+ fn=solve_math_problem,
70
+ inputs=[
71
+ gr.Textbox(
72
+ label="💬 请输入您的数学问题",
73
+ placeholder="例如:一个长方形的长是8厘米,宽是5厘米,它的周长是多少?",
74
+ lines=3
75
+ ),
76
+ gr.Slider(
77
+ minimum=50,
78
+ maximum=2048,
79
+ value=512,
80
+ step=50,
81
+ label="📏 最大长度"
82
+ ),
83
+ gr.Slider(
84
+ minimum=0.0,
85
+ maximum=2.0,
86
+ value=0.7,
87
+ step=0.1,
88
+ label="🌡️ Temperature"
89
+ ),
90
+ gr.Slider(
91
+ minimum=0.0,
92
+ maximum=1.0,
93
+ value=0.9,
94
+ step=0.05,
95
+ label="🎯 Top P"
96
+ )
97
+ ],
98
+ outputs=gr.Textbox(
99
+ label="✨ AI 回答",
100
+ lines=5
101
+ ),
102
+ title="🧮 数学问题求解 AI",
103
+ description="""
104
+ 基于 Llama-3.2-1B-Instruct 微调的数学问题求解模型。
105
+
106
+ **使用方法**:
107
+ 1. 在输入框中输入您的数学问题
108
+ 2. 调整推理参数(可选)
109
+ 3. 点击 Submit 获取答案
110
+
111
+ **模型信息**:
112
+ - 基础模型:Llama-3.2-1B-Instruct
113
+ - 微调任务:数学推理和问题求解
114
+ - 模型作者:zhman
115
+ """,
116
+ examples=[
117
+ ["2+2等于多少?", 512, 0.7, 0.9],
118
+ ["一个长方形的长是8厘米,宽是5厘米,它的周长是多少?", 512, 0.7, 0.9],
119
+ ["小明有5个苹果,小红给了他3个,小明现在有多少个苹果?", 512, 0.7, 0.9]
120
+ ],
121
+ theme=gr.themes.Soft(),
122
+ allow_flagging="never"
123
+ )
124
+
125
+ # 启动应用
126
+ if __name__ == "__main__":
127
+ demo.launch()
requirements.txt ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ transformers>=4.30.0
2
+ torch>=2.0.0
3
+ gradio>=4.0.0
4
+ accelerate>=0.20.0