alt.freeweights.smollm / SmolLM2-1.7B-Instruct
From: HuggingFaceTB <huggingface.co/HuggingFaceTB>Newsgroups: alt.freeweights.smollmSubject:

SmolLM2-1.7B-Instruct

Date: 2026-11-15Commit: 31b70e2Signed: 2DC28CC7B26A283B ✓

Text generation model with 1.7B parameters. Onnx and safetensors weights, 22.7 GB in all. Published by HuggingFaceTB under Apache-2.0.

1.7B params22.7GBSmolLM2-1.7B-Instructonnx safetensorspermissive
FactsParams1.7BSize22.7 GBFormatsonnx, safetensorsTasktext generationLicenseApache-2.0From sourcepermissive
$ fw get HuggingFaceTB/SmolLM2-1.7B-Instruct
# manifest sha256 dce348965cdf… · 22.7 GB · 28 files
$ fw verify ./SmolLM2-1.7B-Instruct HuggingFaceTB/SmolLM2-1.7B-Instruct
From sourceHosted (signed)HuggingFaceTB/SmolLM2-1.7B-InstructLast check: 2026-11-15 04:35 UTC

Get help: custom fine-tune or private deploy. We review your setup before we quote.

Quantized of SmolLM2-1.7B.

Works with

Overview

Size
22.7 GB
Weights
3.42 GB (safetensors)
Parameters
1.7B
Formats
onnx, safetensors
Task
text generation
License
Apache-2.0 (permissive)
Files
28, each with a sha256
Publisher
HuggingFaceTB
Added
2026-11-15
Section
alt.freeweights.smollm
Lineage

Original release from the publisher.

Base model: HuggingFaceTB/SmolLM2-1.7B

Where these bytes come from
Publisher at the pinned commit→You

Sources are tried in order. A file counts only when its size and sha256 match the manifest. Sources are checked when you ask for them, not on a timer.

Sources
BadgeHostLast checkResult
From sourcehuggingface.co2026-11-15 04:35 UTCpassed

Model card

From the publisher at commit 31b70e2. Shown as plain text with links; images open at the publisher.

SmolLM2#

Image: image/png

Table of Contents#

  1. Model Summary
  2. Evaluation
  3. Examples
  4. Limitations
  5. Training
  6. License
  7. Citation

Model Summary#

SmolLM2 is a family of compact language models available in three size: 135M, 360M, and 1.7B parameters. They are capable of solving a wide range of tasks while being lightweight enough to run on-device. More details in our paper: https://arxiv.org/abs/2502.02737v1

The 1.7B variant demonstrates significant advances over its predecessor SmolLM1-1.7B, particularly in instruction following, knowledge, reasoning, and mathematics. It was trained on 11 trillion tokens using a diverse dataset combination: FineWeb-Edu, DCLM, The Stack, along with new mathematics and coding datasets that we curated and will release soon. We developed the instruct version through supervised fine-tuning (SFT) using a combination of public datasets and our own curated datasets. We then applied Direct Preference Optimization (DPO) using UltraFeedback.

The instruct model additionally supports tasks such as text rewriting, summarization and function calling thanks to datasets developed by Argilla such as Synth-APIGen-v0.1. You can find the SFT dataset here: https://huggingface.co/datasets/HuggingFaceTB/smoltalk.

For more details refer to: https://github.com/huggingface/smollm. You will find pre-training, post-training, evaluation and local inference code.

How to use#
Transformers#
pip install transformers
from transformers import AutoModelForCausalLM, AutoTokenizer
checkpoint = "HuggingFaceTB/SmolLM2-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)

messages = [{"role": "user", "content": "What is the capital of France."}]
input_text=tokenizer.apply_chat_template(messages, tokenize=False)
inputs = tokenizer.encode(input_text, return_tensors="pt").to(device)
outputs = model.generate(inputs, max_new_tokens=50, temperature=0.2, top_p=0.9, do_sample=True)
print(tokenizer.decode(outputs[0]))
Chat in TRL#

You can also use the TRL CLI to chat with the model from the terminal:

pip install trl
trl chat --model_name_or_path HuggingFaceTB/SmolLM2-1.7B-Instruct --device cpu
Transformers.js#
npm i @huggingface/transformers
import { pipeline } from "@huggingface/transformers";

// Create a text generation pipeline
const generator = await pipeline(
  "text-generation",
  "HuggingFaceTB/SmolLM2-1.7B-Instruct",
);

// Define the list of messages
const messages = [
  { role: "system", content: "You are a helpful assistant." },
  { role: "user", content: "Tell me a joke." },
];

// Generate a response
const output = await generator(messages, { max_new_tokens: 128 });
console.log(output[0].generated_text.at(-1).content);
// "Why don't scientists trust atoms?\n\nBecause they make up everything!"

Evaluation#

In this section, we report the evaluation results of SmolLM2. All evaluations are zero-shot unless stated otherwise, and we use lighteval to run them.

Base Pre-Trained Model#

MetricSmolLM2-1.7BLlama-1BQwen2.5-1.5BSmolLM1-1.7B
HellaSwag68.761.266.462.9
ARC (Average)60.549.258.559.9
PIQA77.674.876.176.0
MMLU-Pro (MCF)19.411.713.710.8
CommonsenseQA43.641.234.138.0
TriviaQA36.728.120.922.5
Winogrande59.457.859.354.7
OpenBookQA42.238.440.042.4
GSM8K (5-shot)31.07.261.35.5

Instruction Model#

MetricSmolLM2-1.7B-InstructLlama-1B-InstructQwen2.5-1.5B-InstructSmolLM1-1.7B-Instruct
IFEval (Average prompt/inst)56.753.547.423.1
MT-Bench6.135.486.524.33
OpenRewrite-Eval (micro_avg RougeL)44.939.246.9NaN
HellaSwag66.156.160.955.5
ARC (Average)51.741.646.243.7
PIQA74.472.373.271.6
MMLU-Pro (MCF)19.312.724.211.7
BBH (3-shot)32.227.635.325.7
GSM8K (5-shot)48.226.842.84.62

Examples#

Below are some system and instruct prompts that work well for special tasks

Text rewriting#
system_prompt_rewrite = "You are an AI writing assistant. Your task is to rewrite the user's email to make it more professional and approachable while maintaining its main points and key message. Do not return any text other than the rewritten message."
user_prompt_rewrite = "Rewrite the message below to make it more friendly and approachable while maintaining its main points and key message. Do not add any new information or return any text other than the rewritten message\nThe message:"
messages = [{"role": "system", "content": system_prompt_rewrite}, {"role": "user", "content":f"{user_prompt_rewrite} The CI is failing after your last commit!"}]
input_text=tokenizer.apply_chat_template(messages, tokenize=False)
inputs = tokenizer.encode(input_text, return_tensors="pt").to(device)
outputs = model.generate(inputs, max_new_tokens=50, temperature=0.2, top_p=0.9, do_sample=True)
print(tokenizer.decode(outputs[0]))
Hey there! I noticed that the CI isn't passing after your latest commit. Could you take a look and let me know what's going on? Thanks so much for your help!
Summarization#
system_prompt_summarize = "Provide a concise, objective summary of the input text in up to three sentences, focusing on key actions and intentions without using second or third person pronouns."
messages = [{"role": "system", "content": system_prompt_summarize}, {"role": "user", "content": INSERT_LONG_EMAIL}]
input_text=tokenizer.apply_chat_template(messages, tokenize=False)
inputs = tokenizer.encode(input_text, return_tensors="pt").to(device)
outputs = model.generate(inputs, max_new_tokens=50, temperature=0.2, top_p=0.9, do_sample=True)
print(tokenizer.decode(outputs[0]))
Function calling#

SmolLM2-1.7B-Instruct can handle function calling, it scores 27% on the BFCL Leaderboard. Here's how you can leverage it:

import json
import re
from typing import Optional

from jinja2 import Template
import torch 
from transformers import AutoModelForCausalLM, AutoTokenizer
from transformers.utils import get_json_schema


system_prompt = Template("""You are an expert in composing functions. You are given a question and a set of possible functions. 
Based on the question, you will need to make one or more function/tool calls to achieve the purpose. 
If none of the functions can be used, point it out and refuse to answer. 
If the given question lacks the parameters required by the function, also point it out.

You have access to the following tools:
<tools>{{ tools }}</tools>

The output MUST strictly adhere to the following format, and NO other text MUST be included.
The example format is as follows. Please make sure the parameter type is correct. If no function call is needed, please make the tool calls an empty list '[]'.
<tool_call>[
{"name": "func_name1", "arguments": {"argument1": "value1", "argument2": "value2"}},
... (more tool calls as required)
]</tool_call>""")


def prepare_messages(
    query: str,
    tools: Optional[dict[str, any]] = None,
    history: Optional[list[dict[str, str]]] = None
) -> list[dict[str, str]]:
    """Prepare the system and user messages for the given query and tools.
    
    Args:
        query: The query to be answered.
        tools: The tools available to the user. Defaults to None, in which case if a
            list without content will be passed to the model.
        history: Exchange of messages, including the system_prompt from
            the first query. Defaults to None, the first message in a conversation.
    """
    if tools is None:
        tools = []
    if history:
        messages = history.copy()
        messages.append({"role": "user", "content": query})
    else:
        messages = [
            {"role": "system", "content": system_prompt.render(tools=json.dumps(tools))},
            {"role": "user", "content": query}
        ]
    return messages


def parse_response(text: str) -> str | dict[str, any]:
    """Parses a response from the model, returning either the
    parsed list with the tool calls parsed, or the
    model thought or response if couldn't generate one.

    Args:
        text: Response from the model.
    """
    pattern = r"<tool_call>(.*?)</tool_call>"
    matches = re.findall(pattern, text, re.DOTALL)
    if matches:
        return json.loads(matches[0])
    return text


model_name_smollm = "HuggingFaceTB/SmolLM2-1.7B-Instruct"
model = AutoModelForCausalLM.from_pretrained(model_name_smollm, device_map="auto", torch_dtype="auto", trust_remote_code=True)
tokenizer = AutoTokenizer.from_pretrained(model_name_smollm)

from datetime import datetime
import random

def get_current_time() -> str:
    """Returns the current time in 24-hour format.

    Returns:
        str: Current time in HH:MM:SS format.
    """
    return datetime.now().strftime("%H:%M:%S")


def get_random_number_between(min: int, max: int) -> int:
    """
    Gets a random number between min and max.

    Args:
        min: The minimum number.
        max: The maximum number.

    Returns:
        A random number between min and max.
    """
    return random.randint(min, max)


tools = [get_json_schema(get_random_number_between), get_json_schema(get_current_time)]

toolbox = {"get_random_number_between": get_random_number_between, "get_current_time": get_current_time}

query = "Give me a number between 1 and 300"

messages = prepare_messages(query, tools=tools)

inputs = tokenizer.apply_chat_template(messages, add_generation_prompt=True, return_tensors="pt").to(model.device)
outputs = model.generate(inputs, max_new_tokens=512, do_sample=False, num_return_sequences=1, eos_token_id=tokenizer.eos_token_id)
result = tokenizer.decode(outputs[0][len(inputs[0]):], skip_special_tokens=True)

tool_calls = parse_response(result)
# [{'name': 'get_random_number_between', 'arguments': {'min': 1, 'max': 300}}

# Get tool responses
tool_responses = [toolbox.get(tc["name"])(*tc["arguments"].values()) for tc in tool_calls]
# [63]

# For the second turn, rebuild the history of messages:
history = messages.copy()
# Add the "parsed response"
history.append({"role": "assistant", "content": result})
query = "Can you give me the hour?"
history.append({"role": "user", "content": query})

inputs = tokenizer.apply_chat_template(history, add_generation_prompt=True, return_tensors="pt").to(model.device)
outputs = model.generate(inputs, max_new_tokens=512, do_sample=False, num_return_sequences=1, eos_token_id=tokenizer.eos_token_id)
result = tokenizer.decode(outputs[0][len(inputs[0]):], skip_special_tokens=True)

tool_calls = parse_response(result)
tool_responses = [toolbox.get(tc["name"])(*tc["arguments"].values()) for tc in tool_calls]
# ['07:57:25']

More details such as parallel function calls and tools not available can be found here

Limitations#

SmolLM2 models primarily understand and generate content in English. They can produce text on a variety of topics, but the generated content may not always be factually accurate, logically consistent, or free from biases present in the training data. These models should be used as assistive tools rather than definitive sources of information. Users should always verify important information and critically evaluate any generated content.

Training#

Model#
  • Architecture: Transformer decoder
  • Pretraining tokens: 11T
  • Precision: bfloat16
Hardware#
  • GPUs: 256 H100
Software#

License#

Apache 2.0

Citation#

@misc{allal2025smollm2smolgoesbig,
      title={SmolLM2: When Smol Goes Big -- Data-Centric Training of a Small Language Model}, 
      author={Loubna Ben Allal and Anton Lozhkov and Elie Bakouch and Gabriel Martín Blázquez and Guilherme Penedo and Lewis Tunstall and Andrés Marafioti and Hynek Kydlíček and Agustín Piqueres Lajarín and Vaibhav Srivastav and Joshua Lochner and Caleb Fahlgren and Xuan-Son Nguyen and Clémentine Fourrier and Ben Burtenshaw and Hugo Larcher and Haojun Zhao and Cyril Zakka and Mathieu Morlon and Colin Raffel and Leandro von Werra and Thomas Wolf},
      year={2025},
      eprint={2502.02737},
      archivePrefix={arXiv},
      primaryClass={cs.CL},
      url={https://arxiv.org/abs/2502.02737}, 
}

Files

28 files · 22.7 GBWeights 3.42 GB (safetensors). Sizes and sha256 from the signed manifest.
Show all 28 files with their sha256
FileSizesha256
.gitattributes1.64 KB11766e5171641f6c68b9f14099fdb4e7b3d610f0a69451893e356c8334812257
README.md14.9 KBb00c0570dbc43674a0028d088fc72f40d83eea90f47cd987706ca2f95ed114c0
all_results.json785 B1908cf6a24c3d69aff2ab1d2a9c0366dc882a1fe7f91e0555f8e9df6612fac39
config.json908 B994f50b16abb4ae00880baefe03c10260b5bd608d2bf586f7056ca05a534feea
eval_results.json587 Bfb82804b504f34c680f766dcb2b22da23cc7f93cd37f23186900559c8ee33109
generation_config.json132 B87b916edaaab66b3899b9d0dd0752727dff6666686da0504d89ae0a6e055a013
instructions_function_calling.md7.28 KBdd266c8ca7f329682d17c1bfb72e2b870ac849f17a79a0bc23ccc897e4917134
merges.txt466 KB0b54e8aa4e53d5383e2e4bc635a56b43f9647f7b13832d5d9ecd8f82dac4f510
model.safetensors3.42 GBf55217be716b6a997b97b9d8d7eb6fad02e00858f5010ec24f64603c3a98a0e8
onnx/model.onnx166 KBc538daa78f811830dc9028aa228a63a218147ab478c0c65ef6e2d8cab532380a
onnx/model.onnx_data6.85 GB023686a59a534e45af70bc5f99ae70e592481701680591f9844fc140a3db220a
onnx/model_bnb4.onnx1.31 GBac7400ca170e6644d95d26394846d2cce8083298e8519b1df7ac1eaa0ab2b5b6
onnx/model_fp16.onnx1.33 GB3d891d77661f6339f727b3188f1c21b1429a1e4e55c40d1f60f85048b00a4348
onnx/model_fp16.onnx_data2.10 GB5f48c05c14ed97738f8dc5854c20c229ddc8661f43fa914085843901a4ba8740
onnx/model_int8.onnx1.71 GBdb5cb9057f4e7014f00c38fd9764f0103e60bb4d145ad600b7144625f0d56930
onnx/model_q4.onnx1.41 GB467b7b8f62d99f184d3628d24b8d65c151e331695f6e9ea997616c4e279e9a51
onnx/model_q4f16.onnx1.11 GBd94946187fb5f27579f3db4ba21fb7f7466c7cbd18956bd420d3981f75282f9c
onnx/model_quantized.onnx1.71 GBb1110061268f161512c234c4d43cd9dbe61eeb1454e9b94b652edf4de55ae51c
onnx/model_uint8.onnx1.71 GBb1110061268f161512c234c4d43cd9dbe61eeb1454e9b94b652edf4de55ae51c
runs/Oct31_06-24-59_ip-26-0-174-36/events.out.tfevents.1730356365.ip-26-0-174-36.3169719.0115 KBe6bfce1916438dd2e6553aa0a62d418087b3ae04f8af75e714ad1f01b7663db6
runs/Oct31_06-24-59_ip-26-0-174-36/events.out.tfevents.1730363825.ip-26-0-174-36.3169719.1828 Bb3d7723fd0715ce6dcbccf7bb2097f59490b0ac670f798f5378ef5abb7d1301d
special_tokens_map.json655 B2b7379f3ae813529281a5c602bc5a11c1d4e0a99107aaa597fe936c1e813ca52
tokenizer.json2.10 MB9ca9acddb6525a194ec8ac7a87f24fbba7232a9a15ffa1af0c1224fcd888e47c
tokenizer_config.json3.76 KB4ec77d44f62efeb38d7e044a1db318f6a939438425312dfa333b8382dbad98df
train_results.json232 B0a1575a24263963c53c634f6f40a3e8127e69f05c97039461f590e4ee2a91324
trainer_state.json86.4 KBe33c4af76d28551752fc40189bff99ea69dba5234b1bf4857e4db136ecdd04a1
training_args.bin6.52 KB7649586c424c337f6c403fdb617ac9d954daf9a7192f3afe5b6318f37e9bb19e
vocab.json801 KB82b84012e3add4d01d12ba14442026e49b8cbbaead1f79ecf3d919784f82dc79
VersionsEach time the pinned upstream commit or file list changed in this repo. Newest first.
Upstream commitDateContents
31b70e2e86 pinned now2026-11-15 04:35 UTC28 files · 22.7 GB

Use it

$ fw get HuggingFaceTB/SmolLM2-1.7B-Instruct
# manifest sha256 dce348965cdf… · 22.7 GB · 28 files
$ fw verify ./SmolLM2-1.7B-Instruct HuggingFaceTB/SmolLM2-1.7B-Instruct
fw.pyChecks the signature and every sha256, tries each source in order, resumes.
$ python3 fw.py get https://freeweights.allternit.com/manifests/HuggingFaceTB/SmolLM2-1.7B-Instruct.json --dir ./SmolLM2-1.7B-Instruct $ python3 fw.py verify ./SmolLM2-1.7B-Instruct ./HuggingFaceTB__SmolLM2-1.7B-Instruct.json
hfThe Hugging Face CLI with one setting. Same repo id.
$ HF_ENDPOINT=https://freeweights.allternit.com hf download HuggingFaceTB/SmolLM2-1.7B-Instruct --revision 31b70e2e869a7173562077fd711b654946d38674 --local-dir ./SmolLM2-1.7B-Instruct
transformersLoad the weights in Python.
import os os.environ["HF_ENDPOINT"] = "https://freeweights.allternit.com" from transformers import AutoModelForCausalLM, AutoTokenizer tok = AutoTokenizer.from_pretrained("HuggingFaceTB/SmolLM2-1.7B-Instruct", revision="31b70e2e869a7173562077fd711b654946d38674") model = AutoModelForCausalLM.from_pretrained("HuggingFaceTB/SmolLM2-1.7B-Instruct", revision="31b70e2e869a7173562077fd711b654946d38674", device_map="auto")
vLLMServe an OpenAI-compatible API.
$ HF_ENDPOINT=https://freeweights.allternit.com vllm serve HuggingFaceTB/SmolLM2-1.7B-Instruct --revision 31b70e2e869a7173562077fd711b654946d38674

License

Name
Apache License 2.0
Id
Apache-2.0
Class
Permissive
Redistribution
yes
Listing
Hosted (signed)
Decided
License as declared by the publisher. No person read it. 2026-11-15
Text in
README.md
Text sha256
b00c0570dbc43674a0028d088fc72f40d83eea90f47cd987706ca2f95ed114c0
Terms gate
No extra terms beyond the license.

Read the license text

Licenses are checked against the license table. A custom license passes only after a person reads it.

Provenance

From: HuggingFaceTB <huggingface.co/HuggingFaceTB>Newsgroups: alt.freeweights.smollmSubject: SmolLM2-1.7B-InstructDate: 2026-11-15Commit: 31b70e2Signed: 2DC28CC7B26A283B ✓
Upstream
HuggingFaceTB/SmolLM2-1.7B-Instruct
Pinned commit
31b70e2e869a7173562077fd711b654946d38674
Manifest
SmolLM2-1.7B-Instruct.json · .minisig
Manifest sha256
dce348965cdfcb4c297019766c5c566e1663b6bcdcd96e1b99cccea4aa2fec42
Signature
minisign, Ed25519, key 2DC28CC7B26A283B
Created
2026-11-15 04:35 UTC
Generator
freeweights-manifest/0.1.0
Takedowns
None.

How to verify

$ curl -O https://freeweights.allternit.com/manifests/HuggingFaceTB/SmolLM2-1.7B-Instruct.json $ curl -O https://freeweights.allternit.com/manifests/HuggingFaceTB/SmolLM2-1.7B-Instruct.json.minisig $ minisign -Vm SmolLM2-1.7B-Instruct.json -P RWQ7KGqyx4zCLXtUFOqvfv8L3g+8fpKJ1FsuxPyOYMF+4KufbUxKq1Oq $ shasum -a 256 <file> # compare with the Files tab

A manifest whose signature fails must be rejected. A file whose size or sha256 does not match must be discarded. Verify a download

Model tree

Parent

HuggingFaceTB/SmolLM2-1.7B · this model is a quantization of it

11 models in the catalog name this one as their parent.

Fine-tunes
3
Adapters
1
Quantizations
7
Get it
Download
$ HF_ENDPOINT=https://freeweights.allternit.com hf download HuggingFaceTB/SmolLM2-1.7B-Instruct
Open in Freeweights Studio

Pull, verify and run it in the Allternit app on Desktop, web or phone.

Signed manifest
minisign, key 2DC28CC7B26A283B. SmolLM2-1.7B-Instruct.json. Provenance. Takedown history: none.

Variants

8 quantized or adapter builds of SmolLM2-1.7B-Instruct. Each has its own license check and page.

From: HuggingFaceTB <huggingface.co/HuggingFaceTB>Subject: 135M-lc-100k-rope-12B
From: nisten <huggingface.co/nisten>Subject: Biggie-SmoLlm-0.4B
From: onnx-community <huggingface.co/onnx-community>Subject: Biggie-SmoLlm-0.4B-ONNX
From: unsloth <huggingface.co/unsloth>Subject: SmolLM-1.7B-bnb-4bit
From: unsloth <huggingface.co/unsloth>Subject: SmolLM-1.7B-Instruct
From: unsloth <huggingface.co/unsloth>Subject: SmolLM-135M-bnb-4bit