Text Generation
Transformers
Safetensors
English
llama
Tulu3
Smollm
SLMs
Small
Huggingface
Allenai
SFT
DPO
GGUF
conversational
Eval Results (legacy)
text-generation-inference
Instructions to use SultanR/SmolTulu-1.7b-Instruct with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use SultanR/SmolTulu-1.7b-Instruct with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="SultanR/SmolTulu-1.7b-Instruct") messages = [ {"role": "user", "content": "Who are you?"}, ] pipe(messages)# Load model directly from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("SultanR/SmolTulu-1.7b-Instruct") model = AutoModelForCausalLM.from_pretrained("SultanR/SmolTulu-1.7b-Instruct") messages = [ {"role": "user", "content": "Who are you?"}, ] inputs = tokenizer.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=40) print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use SultanR/SmolTulu-1.7b-Instruct with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "SultanR/SmolTulu-1.7b-Instruct" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "SultanR/SmolTulu-1.7b-Instruct", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/SultanR/SmolTulu-1.7b-Instruct
- SGLang
How to use SultanR/SmolTulu-1.7b-Instruct with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "SultanR/SmolTulu-1.7b-Instruct" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "SultanR/SmolTulu-1.7b-Instruct", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "SultanR/SmolTulu-1.7b-Instruct" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "SultanR/SmolTulu-1.7b-Instruct", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Docker Model Runner
How to use SultanR/SmolTulu-1.7b-Instruct with Docker Model Runner:
docker model run hf.co/SultanR/SmolTulu-1.7b-Instruct
| license: apache-2.0 | |
| language: | |
| - en | |
| library_name: transformers | |
| tags: | |
| - Tulu3 | |
| - Smollm | |
| - SLMs | |
| - Small | |
| - Huggingface | |
| - Allenai | |
| - SFT | |
| - DPO | |
| - GGUF | |
| base_model: | |
| - HuggingFaceTB/SmolLM2-1.7B | |
| datasets: | |
| - allenai/tulu-3-sft-mixture | |
| - allenai/llama-3.1-tulu-3-8b-preference-mixture | |
| pipeline_tag: text-generation | |
| model-index: | |
| - name: SmolTulu-1.7b-Instruct | |
| results: | |
| - task: | |
| type: text-generation | |
| name: Text Generation | |
| dataset: | |
| name: IFEval (0-Shot) | |
| type: HuggingFaceH4/ifeval | |
| args: | |
| num_few_shot: 0 | |
| metrics: | |
| - type: inst_level_strict_acc and prompt_level_strict_acc | |
| value: 65.41 | |
| name: strict accuracy | |
| source: | |
| url: https://huggingface.co/spaces/open-llm-leaderboard/open_llm_leaderboard?query=SultanR/SmolTulu-1.7b-Instruct | |
| name: Open LLM Leaderboard | |
| - task: | |
| type: text-generation | |
| name: Text Generation | |
| dataset: | |
| name: BBH (3-Shot) | |
| type: BBH | |
| args: | |
| num_few_shot: 3 | |
| metrics: | |
| - type: acc_norm | |
| value: 12.26 | |
| name: normalized accuracy | |
| source: | |
| url: https://huggingface.co/spaces/open-llm-leaderboard/open_llm_leaderboard?query=SultanR/SmolTulu-1.7b-Instruct | |
| name: Open LLM Leaderboard | |
| - task: | |
| type: text-generation | |
| name: Text Generation | |
| dataset: | |
| name: MATH Lvl 5 (4-Shot) | |
| type: hendrycks/competition_math | |
| args: | |
| num_few_shot: 4 | |
| metrics: | |
| - type: exact_match | |
| value: 2.64 | |
| name: exact match | |
| source: | |
| url: https://huggingface.co/spaces/open-llm-leaderboard/open_llm_leaderboard?query=SultanR/SmolTulu-1.7b-Instruct | |
| name: Open LLM Leaderboard | |
| - task: | |
| type: text-generation | |
| name: Text Generation | |
| dataset: | |
| name: GPQA (0-shot) | |
| type: Idavidrein/gpqa | |
| args: | |
| num_few_shot: 0 | |
| metrics: | |
| - type: acc_norm | |
| value: 2.57 | |
| name: acc_norm | |
| source: | |
| url: https://huggingface.co/spaces/open-llm-leaderboard/open_llm_leaderboard?query=SultanR/SmolTulu-1.7b-Instruct | |
| name: Open LLM Leaderboard | |
| - task: | |
| type: text-generation | |
| name: Text Generation | |
| dataset: | |
| name: MuSR (0-shot) | |
| type: TAUR-Lab/MuSR | |
| args: | |
| num_few_shot: 0 | |
| metrics: | |
| - type: acc_norm | |
| value: 1.92 | |
| name: acc_norm | |
| source: | |
| url: https://huggingface.co/spaces/open-llm-leaderboard/open_llm_leaderboard?query=SultanR/SmolTulu-1.7b-Instruct | |
| name: Open LLM Leaderboard | |
| - task: | |
| type: text-generation | |
| name: Text Generation | |
| dataset: | |
| name: MMLU-PRO (5-shot) | |
| type: TIGER-Lab/MMLU-Pro | |
| config: main | |
| split: test | |
| args: | |
| num_few_shot: 5 | |
| metrics: | |
| - type: acc | |
| value: 7.89 | |
| name: accuracy | |
| source: | |
| url: https://huggingface.co/spaces/open-llm-leaderboard/open_llm_leaderboard?query=SultanR/SmolTulu-1.7b-Instruct | |
| name: Open LLM Leaderboard | |
| # SmolLM2 1.7b Instruction Tuned & DPO Aligned through Tulu 3! | |
|  | |
| SmolTulu-1.7b-Instruct is the first model in a series of models meant to leverage [AllenAI's Tulu 3 post-training pipeline](https://arxiv.org/abs/2411.15124) to tune the [base version of Huggingface's SmolLM2-1.7b](https://huggingface.co/HuggingFaceTB/SmolLM2-1.7B)! The post training pipeline AllenAI came up with seemed like something perfect to apply here. | |
| This model scores the highest current score in both IFEval and GSM8k (after SmolTulu-1.7b-Reinforced) while maintaining the extremely low contamination levels in Tulu 3 and SmolLM2! I've listed the datasets used to do both the SFT (supervised finetuning) and DPO (direct preference optimization) stages. | |
| Something important to note, this model has only undergone SFT and DPO! Find the RLVR version here, [SmolTulu-1.7b-Reinforced](https://huggingface.co/SultanR/SmolTulu-1.7b-Reinforced) | |
| ## Evaluation | |
| I ran these evaluations using [SmolLM2's evaluation code](https://github.com/huggingface/smollm/tree/main/evaluation) for a more fair comparison. | |
| | Metric | SmolTulu-1.7b-Instruct | SmolTulu-1.7b-Reinforced | SmolLM2-1.7B-Instruct | Llama-1B-Instruct | Qwen2.5-1.5B-Instruct | SmolLM1-1.7B-Instruct | | |
| |:----------------------------|:---------------------:|:---------------------:|:---------------------:|:---------------------:|:---------------------:|:---------------------:| | |
| | ARC (Average) | 51.5 | 51.1 | **51.7** | 41.6 | 46.2 | 43.7 | | |
| | BBH (3-shot) | 33.8 | 33.4 | 32.2 | 27.6 | **35.3** | 25.7 | | |
| | GSM8K (5-shot) | 51.6 | **61.0** | 48.2 | 26.8 | 42.8 | 4.6 | | |
| | HellaSwag | 61.1 | 60.4 | **66.1** | 56.1 | 60.9 | 55.5 | | |
| | IFEval (Average prompt/inst) | 67.7 | **69.3** | 56.7 | 53.5 | 47.4 | 23.1 | | |
| | MMLU-Pro (MCF) | 17.4 | 17.3 | 19.3 | 12.7 | **24.2** | 11.7 | | |
| | PIQA | 72.2 | 72.1 | **74.4** | 72.3 | 73.2 | 71.6 | | |
| ## Training Details | |
| The model was trained using Direct Preference Optimization (DPO) with the following configuration: | |
| - Base model: SmolLM2-1.7B with AllenAI's SFT pipeline ran | |
| - Mixed precision: bfloat16 | |
| - Learning rate: 8e-7 with linear scheduler | |
| - Warmup ratio: 0.1 | |
| - Training epochs: 1 | |
| - Effective batch size: 12 | |
| - Sequence length: 4096 tokens | |
| - DPO loss: Length-normalized DPO | |
| - DPO beta: 5.0 | |
| - Gradient checkpointing enabled | |
| - DeepSpeed Stage 3 for memory optimization | |
| ## Usage | |
| Just like any Huggingface model, just run it using the transformers library: | |
| ```python | |
| # pip install transformers | |
| from transformers import AutoModelForCausalLM, AutoTokenizer | |
| checkpoint = "SultanR/SmolTulu-1.7b-Instruct" | |
| device = "cuda" # for GPU usage or "cpu" for CPU usage | |
| tokenizer = AutoTokenizer.from_pretrained(checkpoint) | |
| # for multiple GPUs install accelerate and do `model = AutoModelForCausalLM.from_pretrained(checkpoint, device_map="auto")` | |
| model = AutoModelForCausalLM.from_pretrained(checkpoint).to(device) | |
| inputs = tokenizer.encode("Gravity is", return_tensors="pt").to(device) | |
| outputs = model.generate(inputs) | |
| print(tokenizer.decode(outputs[0])) | |
| ``` | |
| You can also use the model in llama.cpp through the [gguf version](https://huggingface.co/SultanR/SmolTulu-1.7b-Instruct-GGUF)! | |
| ## [Open LLM Leaderboard Evaluation Results](https://huggingface.co/spaces/open-llm-leaderboard/open_llm_leaderboard) | |
| Detailed results can be found [here](https://huggingface.co/datasets/open-llm-leaderboard/details_SultanR__SmolTulu-1.7b-Instruct) | |
| To give a more holistic overview, I also added the Open LLM Leaderboard results, which differ a lot from the script that was used to benchmark SmolLM2-Instruct. | |
| As of writing this, the number 1 ranking model in IFEval for any model under 2 billion parameters :) | |
| | Metric |Value| | |
| |-------------------|----:| | |
| |Avg. |15.45| | |
| |IFEval (0-Shot) |65.41| | |
| |BBH (3-Shot) |12.26| | |
| |MATH Lvl 5 (4-Shot)| 2.64| | |
| |GPQA (0-shot) | 2.57| | |
| |MuSR (0-shot) | 1.92| | |
| |MMLU-PRO (5-shot) | 7.89| | |
| ## Citation | |
| ``` | |
| @misc{alrashed2024smoltuluhigherlearningrate, | |
| title={SmolTulu: Higher Learning Rate to Batch Size Ratios Can Lead to Better Reasoning in SLMs}, | |
| author={Sultan Alrashed}, | |
| year={2024}, | |
| eprint={2412.08347}, | |
| archivePrefix={arXiv}, | |
| primaryClass={cs.CL}, | |
| url={https://arxiv.org/abs/2412.08347}, | |
| } | |
| ``` | |
| The training methodology follows the Tulu 3 paper: | |
| ``` | |
| @article{lambert2024tulu3, | |
| title={TÜLU 3: Pushing Frontiers in Open Language Model Post-Training}, | |
| author={Lambert, Nathan and Morrison, Jacob and Pyatkin, Valentina and others}, | |
| year={2024}, | |
| journal={arXiv preprint arXiv:2411.15124} | |
| } | |
| ``` |