Spaces:
Runtime error
Runtime error
File size: 8,640 Bytes
2a01fa1 7f73a1c 2a01fa1 7f73a1c 2a01fa1 74d6bf5 7f73a1c 2a01fa1 7f73a1c 2a01fa1 7f73a1c 2a01fa1 7f73a1c 2a01fa1 308aac1 7f73a1c 308aac1 7d46004 1178a05 7d46004 74d6bf5 308aac1 7d46004 308aac1 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 168 169 170 171 |
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)
question_field = gr.Code(language='python', label="๐คEnter your math problem")
additional_info_field = gr.Text(value=additional_info_prompt, label="๐ชOptional train-of-thought")
max_tokens = gr.Slider(minimum=150, maximum=1200, value=250, label="Max Tokens")
submit_button = gr.Button("๐Solve")
full_answer_output = gr.Code(label="๐ฎTonicsMathAssistant๐", interactive=False)
final_answer_output = gr.Textbox(label="Final Answer")
# Define a function to update the question and additional info fields
def set_example(example_index):
examples = [unimath1, unimath2, unimath3, unimath4]
question_field.update(examples[example_index])
additional_info_field.update(additional_info_prompt)
return "", "" # Return empty strings as placeholders
with gr.Accordion("๐ค UniMath Examples", open=False):
gr.Markdown("Click an example to load it into the solver.")
for i in range(len([unimath1, unimath2, unimath3, unimath4])):
example_button = gr.Button(f"Example {i+1}")
example_button.click(fn=set_example, inputs=[i], outputs=[question_field, additional_info_field])
submit_button.click(fn=solve_math_problem, inputs=[question_field, additional_info_field, max_tokens], outputs=[full_answer_output, final_answer_output])
demo.launch()
if __name__ == "__main__":
main() |