Spaces:
Runtime error
Runtime error
File size: 8,526 Bytes
2a01fa1 7f73a1c 2a01fa1 7f73a1c 2a01fa1 74d6bf5 7f73a1c 2a01fa1 7f73a1c 2a01fa1 7f73a1c 2a01fa1 7f73a1c 2a01fa1 7f73a1c 1178a05 74d6bf5 7f73a1c 2a01fa1 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 |
import spaces
import re
import gradio as gr
from transformers import AutoTokenizer, AutoModelForCausalLM, GenerationConfig
import torch
title = """# ๐๐ปโโ๏ธWelcome to๐Tonic's๐ฎDeepSeekMath๐
You can build with this endpoint using๐ฎDeepSeekMath๐ available here : [deepseek-ai/deepseek-math-7b-instruct](https://huggingface.co/deepseek-ai/deepseek-math-7b-instruct). We're using ๐ค[introspector/unimath](https://huggingface.co/datasets/introspector/unimath) for cool examples, check it out below ! The demo is still a work in progress and we're looking forward to build downstream tasks that showcase outstanding mathematical reasoning. Have any ideas ? join us below !
You can also use ๐ฎDeepSeekMath๐ by cloning this space. Simply click here: <a style="display:inline-block" href="https://huggingface.co/spaces/Tonic/Math?duplicate=true"><img src="https://img.shields.io/badge/-Duplicate%20Space-blue?labelColor=white&style=flat&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAP5JREFUOE+lk7FqAkEURY+ltunEgFXS2sZGIbXfEPdLlnxJyDdYB62sbbUKpLbVNhyYFzbrrA74YJlh9r079973psed0cvUD4A+4HoCjsA85X0Dfn/RBLBgBDxnQPfAEJgBY+A9gALA4tcbamSzS4xq4FOQAJgCDwV2CPKV8tZAJcAjMMkUe1vX+U+SMhfAJEHasQIWmXNN3abzDwHUrgcRGmYcgKe0bxrblHEB4E/pndMazNpSZGcsZdBlYJcEL9Afo75molJyM2FxmPgmgPqlWNLGfwZGG6UiyEvLzHYDmoPkDDiNm9JR9uboiONcBXrpY1qmgs21x1QwyZcpvxt9NS09PlsPAAAAAElFTkSuQmCC&logoWidth=14" alt="Duplicate Space"></a></h3>
Join us : ๐TeamTonic๐ is always making cool demos! Join our active builder's ๐ ๏ธcommunity ๐ป [](https://discord.gg/GWpVpekp) On ๐คHuggingface: [TeamTonic](https://huggingface.co/TeamTonic) & [MultiTransformer](https://huggingface.co/MultiTransformer) Math with [introspector](https://huggingface.co/introspector) On ๐Github: [Tonic-AI](https://github.com/tonic-ai) & contribute to๐ [SciTonic](https://github.com/Tonic-AI/scitonic)๐คBig thanks to Yuvi Sharma and all the folks at huggingface for the community grant ๐ค
"""
additional_info_prompt = "Explain the above using mathematics, print entire answer in latex format:"
unimath1 = """Goal:
X : UU
Y : UU
P : UU
xp : (X โ P) โ P
yp : (Y โ P) โ P
X0 : X ร Y โ P
x : X
============================
(Y โ P)
DEBUG:Going to execute:
PTRDEBUGTAC<coq-core.plugins.ltac::intro@1> $1
DEBUG LTAC Evaluated term: yp
TcDebug (0) > NONE??? LtacNotationCall (no location),/mnt/data1/2024/01/05/UniMath/UniMath/Foundations/PartA.v:234
"""
# source : unimath/unimath/batch2/data08
unimath2 = """Goal:
R : ring M : module R
============================
(islinear (idfun M))
DEBUG:Going to execute:
PTRDEBUGTACapply pathsinv0; trivial
Level 0: Backtrace:
Proof is not complete.
Level 0: Backtrace:
Proof is not complete.
TcDebug (0) > NONE??? LtacNotationCall (no location),/mnt/data1/2024/01/05/UniMath/UniMath/MoreFoundations/Tactics.veasy:19, Tactics (UniMath.MoreFoundations),/mnt/data1/2024/01/05/UniMath/UniMath/Algebra/Modules/Examples.v:27
"""
# source : unimath/unimath/batch2/data_22/BATCH122007
unimath3 = """Goal:
X : UU i : nat b : hProptoType (i < S i) x : Vector X (S i) r : i = i
============================
(pr1 lastelement = pr1 (i,, b))
DEBUG:Going to execute:
PTRDEBUGTACsimpl
DEBUG LTAC Evaluated term: isinjstntonat
TcDebug (0) > /mnt/data1/2024/01/05/UniMath/UniMath/Combinatorics/FiniteSequences.v:114
"""
# source : unimath/unimath/batch2/data_12/BATCH112026
unimath4 = """Goal:
X : dcpo CX : continuous_dcpo_struct X x : pr1hSet X y : pr1hSet X
============================
(x โ y
โ (โ i : approximating_family CX x, approximating_family CX x i โ y))
DEBUG:Going to execute:
PTRDEBUGTACsimple refine (p _ _ _) ||
simple refine (p _ _ _ _) ||
simple refine (p _ _ _ _ _) ||
simple refine (p _ _ _ _ _ _) ||
simple refine (p _ _ _ _ _ _ _) ||
simple refine (p _ _ _ _ _ _ _ _) ||
simple refine (p _ _ _ _ _ _ _ _ _) ||
simple refine (p _ _ _ _ _ _ _ _ _ _) ||
simple refine (p _ _ _ _ _ _ _ _ _ _ _) ||
simple refine (p _ _ _ _ _ _ _ _ _ _ _ _) ||
simple refine (p _ _ _ _ _ _ _ _ _ _ _ _ _) ||
simple refine
(p _ _ _ _ _ _ _ _ _ _ _ _ _ _) || simple
refine (p _ _ _ _ _ _ _ _ _ _ _ _ _ _ _)
Level 0: Backtrace:
In environment
X : dcpo
CX : continuous_dcpo_struct X
x, y : X
The term "weqimplimpl ?f ?g" has type "isaprop ?X โ isaprop ?Y โ ?X โ ?Y"
while it is expected to have type
"x โ y โ (โ i : approximating_family CX x, approximating_family CX x i โ y)".
Level 0: Backtrace:
In environment
X : dcpo
CX : continuous_dcpo_struct X
x, y : X
The term "weqimplimpl ?f ?g" has type "isaprop ?X โ isaprop ?Y โ ?X โ ?Y"
while it is expected to have type
"x โ y โ (โ i : approximating_family CX x, approximating_family CX x i โ y)".
TcDebug (0) > NONE??? LtacNotationCall (no location),/mnt/data1/2024/01/05/UniMath/UniMath/Foundations/Init.vsimple_rapply:174, Init (UniMath.Foundations),/mnt/data1/2024/01/05/UniMath/UniMath/Foundations/Init.v??? LtacNotationCall:189, Init (UniMath.Foundations),/mnt/data1/2024/01/05/UniMath/UniMath/OrderTheory/DCPOs/Basis/Continuous.v:166
"""
# source : unimath/unimath/batch2/data_42/BATCH142042
unimath_examples = [unimath1, unimath2, unimath3, unimath4]
model_name = "deepseek-ai/deepseek-math-7b-instruct"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name, torch_dtype=torch.bfloat16, device_map="auto")
model.generation_config = GenerationConfig.from_pretrained(model_name)
model.generation_config.pad_token_id = model.generation_config.eos_token_id
def parse_full_answer(answer):
"""Parses the assistant's answer, excluding any text before 'Assistant :'."""
match = re.search(r"Assistant\s*:\s*(.*)", answer, re.DOTALL)
return match.group(1).strip() if match else "No assistant answer found."
def parse_final_answer(answer):
"""Extracts the final answer enclosed within \boxed{}."""
match = re.search(r"\\boxed\{([^}]+)\}", answer)
return match.group(1) if match else "No final answer found."
@spaces.GPU
def solve_math_problem(question, additional_info, max_tokens):
prompt = f"User: {question}\n{additional_info}.\nAssistant:"
input_ids = tokenizer(prompt, return_tensors="pt").input_ids.to(model.device)
outputs = model.generate(input_ids, max_length=max_tokens + input_ids.shape[1], pad_token_id=model.generation_config.pad_token_id)
result = tokenizer.decode(outputs[0], skip_special_tokens=True)
full_answer = parse_full_answer(result)
final_answer = parse_final_answer(result)
return full_answer, final_answer
def main():
with gr.Blocks() as demo:
gr.Markdown(title)
final_answer_output = gr.Textbox(label="๐ฎDeepSeekMath๐")
full_answer_output = gr.Code(label="๐ฎTonicsMathAssistant๐", interactive=False)
max_tokens = gr.Slider(minimum=150, maximum=1200, value=250, label="Max Tokens")
submit_button = gr.Button("๐Solve")
question = gr.Code(language='python', value='what is the integral of x^2 from 0 to 2?', label="๐คEnter your math problem")
additional_info = gr.Text(value='Please reason step by step, and put your final answer within \\boxed{{}}', label="๐ชOptional train-of-thought")
def set_example(example):
question_field.update(example)
additional_info_field.update(additional_info_prompt)
with gr.Accordion("๐ค UniMath Examples", open=False):
gr.Markdown("Click a ๐ค UniMath example to load it into the solver.")
for i, example in enumerate([unimath1, unimath2, unimath3, unimath4], start=1):
gr.Button(f"Example {i}", elem_id=f"example{i}").click(fn=set_example, inputs=example, outputs=[question_field, additional_info_field])
submit_button.click(fn=solve_math_problem, inputs=[question, additional_info, max_tokens], outputs=[full_answer_output, final_answer_output])
demo.launch()
if __name__ == "__main__":
main() |