|
|
--- |
|
|
license: mit |
|
|
datasets: |
|
|
- xl-zhao/PromptCoT-DS-Dataset |
|
|
language: |
|
|
- en |
|
|
base_model: |
|
|
- deepseek-ai/DeepSeek-R1-Distill-Qwen-7B |
|
|
--- |
|
|
# **PromptCoT: Synthesizing Olympiad-Level Problems for Mathematical Reasoning in Large Language Models** |
|
|
|
|
|
[](http://arxiv.org/abs/2503.02324) |
|
|
[](https://github.com/zhaoxlpku/PromptCoT) |
|
|
|
|
|
--- |
|
|
|
|
|
## 🚀 **Overview** |
|
|
The **PromptCoT-DS** series models are distilled mathematical reasoning models trained using **more challenging problem sets generated by the PromptCoT pipeline**. These models are derived from **DeepSeek-R1-Distill-Qwen** and benefit from an enhanced training dataset designed to improve mathematical reasoning capabilities. |
|
|
|
|
|
✔ **PromptCoT-DS-1.5B** → Distilled from **DeepSeek-R1-Distill-Qwen-7B** (1.5B parameters) |
|
|
✔ **PromptCoT-DS-7B** → Distilled from **DeepSeek-R1-Distill-Qwen-7B** (7B parameters) |
|
|
|
|
|
For more details, refer to our **paper on ArXiv**: [🔗 PromptCoT: Synthesizing Olympiad-Level Problems for Mathematical Reasoning in Large Language Models](http://arxiv.org/abs/2503.02324). |
|
|
|
|
|
--- |
|
|
|
|
|
|
|
|
## 🔥 **Quick Start: Using the Model** |
|
|
|
|
|
### **1️⃣ Install Dependencies** |
|
|
```bash |
|
|
pip install transformers vllm torch accelerate |
|
|
``` |
|
|
|
|
|
### **2️⃣ Load the Model with Hugging Face Transformers** |
|
|
You can use **PromptCoT-DS** models to solve **mathematical problems** using Hugging Face’s `generate` API: |
|
|
|
|
|
```python |
|
|
from transformers import AutoModelForCausalLM, AutoTokenizer |
|
|
|
|
|
model_name = "xl-zhao/PromptCoT-DS-7B" |
|
|
tokenizer = AutoTokenizer.from_pretrained(model_name) |
|
|
model = AutoModelForCausalLM.from_pretrained(model_name).to("cuda") |
|
|
|
|
|
problem_statement = ( |
|
|
"A robe takes 2 bolts of blue fiber and half that much white fiber. How many bolts in total does it take?" |
|
|
) |
|
|
|
|
|
prompt = ( |
|
|
"<|begin▁of▁sentence|>Please reason step by step, and put your final answer within \\boxed{{}}." |
|
|
"<|User|>" + problem_statement + "<|Assistant|>" |
|
|
) |
|
|
|
|
|
inputs = tokenizer(prompt, return_tensors="pt").to("cuda") |
|
|
|
|
|
with torch.no_grad(): |
|
|
output = model.generate(**inputs, max_length=32768, temperature=0.6) |
|
|
|
|
|
generated_solution = tokenizer.decode(output[0], skip_special_tokens=True) |
|
|
print(generated_solution) |
|
|
``` |
|
|
|
|
|
--- |
|
|
|
|
|
## ⚡ **Using vLLM for Fast Inference** |
|
|
For optimized inference, use `vLLM`: |
|
|
```python |
|
|
from vllm import LLM, SamplingParams |
|
|
|
|
|
model_name = "xl-zhao/PromptCoT-DS-7B" |
|
|
llm = LLM(model=model_name, tensor_parallel_size=1) |
|
|
|
|
|
problem_statement = ( |
|
|
"A robe takes 2 bolts of blue fiber and half that much white fiber. How many bolts in total does it take?" |
|
|
) |
|
|
|
|
|
prompt = ( |
|
|
"<|begin▁of▁sentence|>Please reason step by step, and put your final answer within \\boxed{{}}." |
|
|
"<|User|>" + problem_statement + "<|Assistant|>" |
|
|
) |
|
|
|
|
|
sampling_params = SamplingParams(temperature=0.6, max_tokens=32768) |
|
|
outputs = llm.generate([prompt], sampling_params) |
|
|
|
|
|
print(outputs[0].outputs[0].text) |
|
|
``` |
|
|
|
|
|
--- |
|
|
|
|
|
## 🔗 **Full Usage & Advanced Options** |
|
|
For advanced usage, including batch inference and evaluation on mathematical benchmarks, refer to the **full repository on GitHub**: |
|
|
🔹 [GitHub: PromptCoT](https://github.com/zhaoxlpku/PromptCoT) |
|
|
|
|
|
--- |
|
|
|
|
|
## 📜 **Citation** |
|
|
If you use **PromptCoT**, please consider citing: |
|
|
``` |
|
|
@article{zhao2025promptcot, |
|
|
author = {Zhao, Xueliang and Wu, Wei and Guan, Jian and Kong, Lingpeng}, |
|
|
title = {PromptCoT: Synthesizing Olympiad-Level Problems for Mathematical Reasoning in Large Language Models}, |
|
|
year = {2025}, |
|
|
journal = {arXiv preprint arXiv:2503.02324}, |
|
|
url = {http://arxiv.org/abs/2503.02324} |
|
|
} |
|
|
``` |
|
|
|
|
|
|
|
|
|