alt.freeweights.olmo / Molmo2-O-7B
From: allenai <huggingface.co/allenai>Newsgroups: alt.freeweights.olmoSubject:

Molmo2-O-7B

Date: 2026-11-14Commit: 7844106Signed: 2DC28CC7B26A283B ✓

Image text to text model with 7.8B parameters. Safetensors weights, 31.1 GB in all. Published by allenai under Apache-2.0.

7.8B params31.1GBMolmo2-O-7Bsafetensorspermissive
FactsParams7.8BSize31.1 GBFormatssafetensorsTaskimage text to textLicenseApache-2.0From sourcepermissive
$ fw get allenai/Molmo2-O-7B
# manifest sha256 83c9eb7cf773… · 31.1 GB · 28 files
$ fw verify ./Molmo2-O-7B allenai/Molmo2-O-7B
From sourceHosted (signed)allenai/Molmo2-O-7BLast check: 2026-11-14 21:13 UTC

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

Fine-tune of Olmo-3-7B-Instruct.

Works with

Overview

Size
31.1 GB
Weights
31.0 GB (safetensors)
Parameters
7.8B
Formats
safetensors
Task
image text to text
License
Apache-2.0 (permissive)
Files
28, each with a sha256
Publisher
allenai
Added
2026-11-14
Section
alt.freeweights.olmo
Lineage

Original release from the publisher.

Base model: allenai/Olmo-3-7B-Instruct

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-14 21:13 UTCpassed

Model card

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

Image: Logo for the Molmo2 Project

Molmo2#

Molmo2 is a family of open vision-language models developed by the Allen Institute for AI (Ai2) that support image, video and multi-image understanding and grounding. Molmo2 models are trained on publicly available third party datasets as referenced in our technical report and Molmo2 data, a collection of datasets with highly-curated image-text and video-text pairs. It has state-of-the-art performance among multimodal models with a similar size. You can find all models in the Molmo2 family here.

Learn more about the Molmo2 family in our announcement blog post.

Molmo2-O-7B is based on Olmo3-7B-Instruct and uses SigLIP 2 as vision backbone. It outperforms others in the class of open weight and data models on short videos, counting, and captioning, and is competitive on long-videos.

Ai2 is commited to open science. The Molmo2 datasets are available here. All other artifacts used in creating Molmo2 (training code, evaluations, intermediate checkpoints) will be made available at a later date, furthering our commitment to open-source AI development and reproducibility.

Quick links:

Quick Start#

Setup Conda Environment#
conda create --name transformers4571 python=3.11
conda activate transformers4571
pip install transformers==4.57.1
pip install torch pillow einops torchvision accelerate decord2 molmo_utils
General Video QA#
from transformers import AutoProcessor, AutoModelForImageTextToText
import torch

model_id="allenai/Molmo2-O-7B"

# load the processor
processor = AutoProcessor.from_pretrained(
    model_id,
    trust_remote_code=True,
    dtype="auto",
    device_map="auto"
)

# load the model
model = AutoModelForImageTextToText.from_pretrained(
     model_id,
     trust_remote_code=True,
     dtype="auto",
     device_map="auto"
)

# process the video and text
messages = [
    {
        "role": "user",
        "content": [
            dict(type="text", text="Which animal appears in the video?"),
            dict(type="video", video="https://storage.googleapis.com/oe-training-public/demo_videos/many_penguins.mp4"),
        ],
    }
]

inputs = processor.apply_chat_template(
    messages,
    tokenize=True,
    add_generation_prompt=True,
    return_tensors="pt",
    return_dict=True,
)

inputs = {k: v.to(model.device) for k, v in inputs.items()}

# generate output
with torch.inference_mode():
    generated_ids = model.generate(**inputs, max_new_tokens=2048)

# only get generated tokens; decode them to text
generated_tokens = generated_ids[0, inputs['input_ids'].size(1):]
generated_text = processor.tokenizer.decode(generated_tokens, skip_special_tokens=True)

# print the generated text
print(generated_text)
Pointing Video QA#
from transformers import AutoProcessor, AutoModelForImageTextToText
import torch
from molmo_utils import process_vision_info
import re

model_id="allenai/Molmo2-O-7B"

# load the processor
processor = AutoProcessor.from_pretrained(
    model_id,
    trust_remote_code=True,
    dtype="auto",
    device_map="auto"
)

# load the model
model = AutoModelForImageTextToText.from_pretrained(
    model_id,
    trust_remote_code=True,
    dtype="auto",
    device_map="auto"
)

COORD_REGEX = re.compile(rf"<(?:points|tracks).*? coords=\"([0-9\t:;, .]+)\"/?>")
FRAME_REGEX = re.compile(rf"(?:^|\t|:|,|;)([0-9\.]+) ([0-9\. ]+)")
POINTS_REGEX = re.compile(r"([0-9]+) ([0-9]{3,4}) ([0-9]{3,4})")

def _points_from_num_str(text, image_w, image_h, extract_ids=False):
    all_points = []
    for points in POINTS_REGEX.finditer(text):
        ix, x, y = points.group(1), points.group(2), points.group(3)
        # our points format assume coordinates are scaled by 1000
        x, y = float(x)/1000*image_w, float(y)/1000*image_h
        if 0 <= x <= image_w and 0 <= y <= image_h:
            yield ix, x, y


def extract_video_points(text, image_w, image_h, extract_ids=False):
    """Extract video pointing coordinates as a flattened list of (t, x, y) triplets from model output text."""
    all_points = []
    for coord in COORD_REGEX.finditer(text):
        for point_grp in FRAME_REGEX.finditer(coord.group(1)):
            frame_id = float(point_grp.group(1))
            w, h = (image_w, image_h)
            for idx, x, y in _points_from_num_str(point_grp.group(2), w, h):
                if extract_ids:
                    all_points.append((frame_id, idx, x, y))
                else:
                    all_points.append((frame_id, x, y))
    return all_points

messages = [
    {
        "role": "user",
        "content": [
            dict(type="text", text="Point to the penguins."),
            dict(type="video", video="https://storage.googleapis.com/oe-training-public/demo_videos/many_penguins.mp4"),
        ],
    }
]

# process the video using `molmo_utils.process_vision_info`
_, videos, video_kwargs = process_vision_info(messages)
videos, video_metadatas = zip(*videos)
videos, video_metadatas = list(videos), list(video_metadatas)

# apply the chat template to the input messages
text = processor.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)

# process the video and text
inputs = processor(
    videos=videos,
    video_metadata=video_metadatas,
    text=text,
    padding=True,
    return_tensors="pt",
    **video_kwargs,
)

inputs = {k: v.to(model.device) for k, v in inputs.items()}

# generate output
with torch.inference_mode():
    generated_ids = model.generate(**inputs, max_new_tokens=2048)

# only get generated tokens; decode them to text
generated_tokens = generated_ids[0, inputs['input_ids'].size(1):]
generated_text = processor.tokenizer.decode(generated_tokens, skip_special_tokens=True)

# decode video pointing outputs
points = extract_video_points(generated_text, image_w=video_metadatas[0]["width"], image_h=video_metadatas[0]["height"])
print(points)
Tracking Video QA#
from transformers import AutoProcessor, AutoModelForImageTextToText
import torch
from molmo_utils import process_vision_info
import re

model_id="allenai/Molmo2-O-7B"

# load the processor
processor = AutoProcessor.from_pretrained(
    model_id,
    trust_remote_code=True,
    dtype="auto",
    device_map="auto"
)

# load the model
model = AutoModelForImageTextToText.from_pretrained(
    model_id,
    trust_remote_code=True,
    dtype="auto",
    device_map="auto"
)

COORD_REGEX = re.compile(rf"<(?:points|tracks).*? coords=\"([0-9\t:;, .]+)\"/?>")
FRAME_REGEX = re.compile(rf"(?:^|\t|:|,|;)([0-9\.]+) ([0-9\. ]+)")
POINTS_REGEX = re.compile(r"([0-9]+) ([0-9]{3,4}) ([0-9]{3,4})")

def _points_from_num_str(text, image_w, image_h, extract_ids=False):
    all_points = []
    for points in POINTS_REGEX.finditer(text):
        ix, x, y = points.group(1), points.group(2), points.group(3)
        # our points format assume coordinates are scaled by 1000
        x, y = float(x)/1000*image_w, float(y)/1000*image_h
        if 0 <= x <= image_w and 0 <= y <= image_h:
            yield ix, x, y


def extract_video_points(text, image_w, image_h, extract_ids=False):
    """Extract video pointing coordinates as a flattened list of (t, x, y) triplets from model output text."""
    all_points = []
    for coord in COORD_REGEX.finditer(text):
        for point_grp in FRAME_REGEX.finditer(coord.group(1)):
            frame_id = float(point_grp.group(1))
            w, h = (image_w, image_h)
            for idx, x, y in _points_from_num_str(point_grp.group(2), w, h):
                if extract_ids:
                    all_points.append((frame_id, idx, x, y))
                else:
                    all_points.append((frame_id, x, y))
    return all_points

# use higher max fps for tracking
messages = [
    {
        "role": "user",
        "content": [
            dict(type="text", text="Track the player who is dunking"),
            dict(type="video", video="https://storage.googleapis.com/oe-training-public/demo_videos/arena_basketball.mp4", max_fps=8),
        ],
    }
]

# process the video using `molmo_utils.process_vision_info`
_, videos, video_kwargs = process_vision_info(messages)
videos, video_metadatas = zip(*videos)
videos, video_metadatas = list(videos), list(video_metadatas)

# apply the chat template to the input messages
text = processor.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)

# process the video and text
inputs = processor(
    videos=videos,
    video_metadata=video_metadatas,
    text=text,
    padding=True,
    return_tensors="pt",
    **video_kwargs,
)

inputs = {k: v.to(model.device) for k, v in inputs.items()}

# generate output
with torch.inference_mode():
    generated_ids = model.generate(**inputs, max_new_tokens=2048)

# only get generated tokens; decode them to text
generated_tokens = generated_ids[0, inputs['input_ids'].size(1):]
generated_text = processor.tokenizer.decode(generated_tokens, skip_special_tokens=True)

# decode video pointing outputs
points = extract_video_points(generated_text, image_w=video_metadatas[0]["width"], image_h=video_metadatas[0]["height"])
print(points)
Multi-image QA#
from transformers import AutoProcessor, AutoModelForImageTextToText
import torch
import requests
from PIL import Image

model_id="allenai/Molmo2-O-7B"

# load the processor
processor = AutoProcessor.from_pretrained(
    model_id,
    trust_remote_code=True,
    dtype="auto",
    device_map="auto",
)

# load the model
model = AutoModelForImageTextToText.from_pretrained(
    model_id,
    trust_remote_code=True,
    dtype="auto",
    device_map="auto",
)

# process the image and text
messages = [
    {
        "role": "user",
        "content": [
            dict(type="text", text="Compare these images."),
            dict(type="image", image=Image.open(requests.get("https://picsum.photos/id/237/536/354", stream=True).raw)),
            dict(type="image", image=Image.open(requests.get("https://vllm-public-assets.s3.us-west-2.amazonaws.com/vision_model_images/cherry_blossom.jpg", stream=True).raw))
        ],
    }
]

inputs = processor.apply_chat_template(
    messages,
    tokenize=True,
    add_generation_prompt=True,
    return_tensors="pt",
    return_dict=True,
)

inputs = {k: v.to(model.device) for k, v in inputs.items()}

# generate output
with torch.inference_mode():
    generated_ids = model.generate(**inputs, max_new_tokens=448)

# only get generated tokens; decode them to text
generated_tokens = generated_ids[0, inputs['input_ids'].size(1):]
generated_text = processor.tokenizer.decode(generated_tokens, skip_special_tokens=True)

# print the generated text
print(generated_text)
Multi-Image Point QA#
from transformers import AutoProcessor, AutoModelForImageTextToText
import torch
import re
from PIL import Image
import requests

model_id="allenai/Molmo2-O-7B"

# load the processor
processor = AutoProcessor.from_pretrained(
    model_id,
    trust_remote_code=True,
    dtype="auto",
    device_map="auto",
    token=True
)

# load the model
model = AutoModelForImageTextToText.from_pretrained(
    model_id,
    trust_remote_code=True,
    dtype="auto",
    device_map="auto",
    token=True
)

COORD_REGEX = re.compile(rf"<(?:points|tracks).*? coords=\"([0-9\t:;, .]+)\"/?>")
FRAME_REGEX = re.compile(rf"(?:^|\t|:|,|;)([0-9\.]+) ([0-9\. ]+)")
POINTS_REGEX = re.compile(r"([0-9]+) ([0-9]{3,4}) ([0-9]{3,4})")

def _points_from_num_str(text, image_w, image_h, extract_ids=False):
    all_points = []
    for points in POINTS_REGEX.finditer(text):
        ix, x, y = points.group(1), points.group(2), points.group(3)
        # our points format assume coordinates are scaled by 1000
        x, y = float(x)/1000*image_w, float(y)/1000*image_h
        if 0 <= x <= image_w and 0 <= y <= image_h:
            yield ix, x, y


def extract_multi_image_points(text, image_w, image_h, extract_ids=False):
    """Extract pointing coordinates as a flattened list of (frame_id, x, y) triplets from model output text."""
    all_points = []
    if isinstance(image_w, (list, tuple)) and isinstance(image_h, (list, tuple)):
        assert len(image_w) == len(image_h)
        diff_res = True
    else:
        diff_res = False
    for coord in COORD_REGEX.finditer(text):
        for point_grp in FRAME_REGEX.finditer(coord.group(1)):
            frame_id = int(point_grp.group(1)) if diff_res else float(point_grp.group(1))
            w, h = (image_w[frame_id-1], image_h[frame_id-1]) if diff_res else (image_w, image_h)
            for idx, x, y in _points_from_num_str(point_grp.group(2), w, h):
                if extract_ids:
                    all_points.append((frame_id, idx, x, y))
                else:
                    all_points.append((frame_id, x, y))
    return all_points

# process the image and text
images = [
    Image.open(requests.get("https://storage.googleapis.com/oe-training-public/demo_images/boat1.jpeg", stream=True).raw),
    Image.open(requests.get("https://storage.googleapis.com/oe-training-public/demo_images/boat2.jpeg", stream=True).raw)
]

messages = [
    {
        "role": "user",
        "content": [
            dict(type="text", text="Point to the boats"),
            dict(type="image", image=images[0]),
            dict(type="image", image=images[1]),
        ],
    }
]

inputs = processor.apply_chat_template(
    messages,
    tokenize=True,
    add_generation_prompt=True,
    return_tensors="pt",
    return_dict=True,
)

inputs = {k: v.to(model.device) for k, v in inputs.items()}

# generate output
with torch.inference_mode():
    generated_ids = model.generate(**inputs, max_new_tokens=2048)

# only get generated tokens; decode them to text
generated_tokens = generated_ids[0, inputs['input_ids'].size(1):]
generated_text = processor.tokenizer.decode(generated_tokens, skip_special_tokens=True)

points = extract_multi_image_points(
    generated_text,
    [images[0].width, images[1].width],
    [images[0].height, images[1].height],
)
print(points)

Evaluations#

We report the Average Score on 15 Academic Benchmarks here. For details on the evals, refer to the main video results table in our technical report.

ModelAverage Score on 15 Academic Benchmarks
GPT-570.6
GPT-5 mini65.0
Gemini 3 Pro70.0
Gemini 2.5 Pro71.2
Gemini 2.5 Flash66.7
Claude Sonnet 4.559.6
InternVL3.5-4B53.4
InternVL3.5-8B54.1
Qwen3-VL-4B58.1
Qwen3-VL-8B59.5
Keye-VL-1.5-8B55.7
GLM-4.1V-9B56.9
MiniCPM-V-4.5-8B56.6
Eagle2.5-8B60.7
PLM-3B53.9
PLM-8B56.2
LLaVA-Video-7B52.7
VideoChat-Flash-7B56.1
Molmo2-4B62.8
Molmo2-8B63.1
Molmo2-O-7B (this model)59.7

License and Use#

This model is licensed under Apache 2.0. It is intended for research and educational use in accordance with Ai2’s Responsible Use Guidelines. This model is trained on third party datasets that are subject to academic and non-commercial research use only. Please review the sources to determine if this model is appropriate for your use case.

Files

28 files · 31.1 GBWeights 31.0 GB (safetensors). Sizes and sha256 from the signed manifest.
Show all 28 files with their sha256
FileSizesha256
.gitattributes1.52 KB11ad7efa24975ee4b0c3c3a38ed18737f0658a5f75a0a96787b576a78a023361
README.md16.3 KBf41a022d2f1e0c33829dd62e8aaf0ac81144bbc6afdeb990bf7c43691566d5dc
added_tokens.json247 Ba095ac062971e2eb99b00e8044e0576e74d68b52ac75a249be7bf220bf604aa5
chat_template.jinja3.17 KBec66862fda57dc1aef90a21b2a0f64c18a280e2483206449bd251a73b8993101
config.json2.97 KB918491a079e7c26062393a95b3eb5ee25e4b0ab7d4dbd262edc7b1c6b613a159
configuration_molmo2.py13.9 KB1405b6760579de537521829b9641c8362d5d50e7ef2bdbe3434d2de4a2fc6416
generation_config.json117 B27b93746ce5b6d57e999cec810501d9cefb494cb69fbe69db2646764b9ae8ae7
image_processing_molmo2.py21.1 KB613bc2436936cebb1ebf0bfddda666b5c979573ba503fb904eed6eb56a706181
merges.txt917 KBb6fe424e334903f7fb84d3a106d9730455f4744b9fe3c21ee136d97a00e72502
model-00001-of-00007.safetensors4.88 GBc59d83290b402186c5f07dbc1d3824049b7c45e2bf5f699d0149292370c834c1
model-00002-of-00007.safetensors4.86 GB78cc21ba267dda59d9f4c861e7210c8ae349ec32c9b1b0b7c2d2d611618c3ade
model-00003-of-00007.safetensors4.86 GB431192bae063707006a111b4fcd0d9a4f3728c84b31e9acaf477198063d29d5a
model-00004-of-00007.safetensors4.86 GBd2dfac91d5ce48477afd12741ccd6e3985094208bf59eebbe6854b9d139bdb68
model-00005-of-00007.safetensors4.86 GB924470fc671372515ed78e7badd7aa50e0fd30ae4e7d9f2d0afd516c25d19874
model-00006-of-00007.safetensors4.86 GB537acbfd6608f7ebc9c1a51452f98462b34d80986ac2a64fc0e20cbbd5022a28
model-00007-of-00007.safetensors1.87 GB3f3ec2f54f58925598edcccef2ec19b4d97e28a459d663eaea1e9491a52fb286
model.safetensors.index.json72.8 KBdc8d217f46ece0d2de31b795e39da9fe8b95e3a3ba879fb442507ecab3dfd4d1
modeling_molmo2.py71.6 KBd3cafcb5300dee41dc9b6d6e8b59e7d3b710bce0408672e8fd78a3bcb28669ce
molmo_2_logo_RGB.png26.7 KBeae441fb7cca5389e030cf2e39cdc16b725b70840cfc075e3982c64b81a11592
preprocessor_config.json555 B026ee03897ff86cb0d3f7c638145a04a253d4c0722fc5bcc3cf996bb0ebed211
processing_molmo2.py16.6 KB61ef1329d8a02caebaa5e5acd07a329fdbf9772e18ff32cd7256c09a3231360b
processor_config.json301 B1a976bcab088bcc4601906c345898558daa18f5e69ec4b1df8ab23a389db8bf2
special_tokens_map.json802 B70a0439bd4b4258c49ef9fa394a52166f6494ef99a331c5b013ca0e7600d9a11
tokenizer.json7.14 MB76db5197ad57a8adef3ed045b5b503fb1e6182e02960a0b736e206148a215ed4
tokenizer_config.json6.43 KB0bfaf75fcb0332acb1329c6a40bdf9dd3619e18e57b875ce018b5e586544860b
video_preprocessor_config.json984 Bab16df7a17cb94cf57daeab7c6760a8be8cfad1fa37258cb86ad48d09ffd1815
video_processing_molmo2.py37.0 KB91c4c6404f58dde3213b060874ce35c7f3695002f761fadf5af3f2515f770ba3
vocab.json1.61 MBd8eb44d0d51f5e39c9b14825ca8bd10a2500f99c438ca81d4462f0263acd3b53
VersionsEach time the pinned upstream commit or file list changed in this repo. Newest first.
Upstream commitDateContents
784410650d pinned now manifest updated, same commit2026-11-14 21:13 UTC28 files · 31.1 GB
784410650d2026-11-14 21:13 UTC28 files · 31.1 GB

Use it

$ fw get allenai/Molmo2-O-7B
# manifest sha256 83c9eb7cf773… · 31.1 GB · 28 files
$ fw verify ./Molmo2-O-7B allenai/Molmo2-O-7B
fw.pyChecks the signature and every sha256, tries each source in order, resumes.
$ python3 fw.py get https://freeweights.allternit.com/manifests/allenai/Molmo2-O-7B.json --dir ./Molmo2-O-7B $ python3 fw.py verify ./Molmo2-O-7B ./allenai__Molmo2-O-7B.json
hfThe Hugging Face CLI with one setting. Same repo id.
$ HF_ENDPOINT=https://freeweights.allternit.com hf download allenai/Molmo2-O-7B --revision 784410650d12be9bc086118fdefa32d2c3bced86 --local-dir ./Molmo2-O-7B
transformersLoad the weights in Python.
import os os.environ["HF_ENDPOINT"] = "https://freeweights.allternit.com" from transformers import AutoModelForImageTextToText, AutoProcessor processor = AutoProcessor.from_pretrained("allenai/Molmo2-O-7B", revision="784410650d12be9bc086118fdefa32d2c3bced86") model = AutoModelForImageTextToText.from_pretrained("allenai/Molmo2-O-7B", revision="784410650d12be9bc086118fdefa32d2c3bced86", device_map="auto")
vLLMServe an OpenAI-compatible API.
$ HF_ENDPOINT=https://freeweights.allternit.com vllm serve allenai/Molmo2-O-7B --revision 784410650d12be9bc086118fdefa32d2c3bced86

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-14
Text in
README.md
Text sha256
f41a022d2f1e0c33829dd62e8aaf0ac81144bbc6afdeb990bf7c43691566d5dc
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: allenai <huggingface.co/allenai>Newsgroups: alt.freeweights.olmoSubject: Molmo2-O-7BDate: 2026-11-14Commit: 7844106Signed: 2DC28CC7B26A283B ✓
Upstream
allenai/Molmo2-O-7B
Pinned commit
784410650d12be9bc086118fdefa32d2c3bced86
Manifest
Molmo2-O-7B.json · .minisig
Manifest sha256
83c9eb7cf7738d6d51e64376c8ea4f350f21ede56f6ccc218f506a699bbe0b2d
Signature
minisign, Ed25519, key 2DC28CC7B26A283B
Created
2026-11-14 21:13 UTC
Generator
freeweights-manifest/0.1.0
Takedowns
None.

How to verify

$ curl -O https://freeweights.allternit.com/manifests/allenai/Molmo2-O-7B.json $ curl -O https://freeweights.allternit.com/manifests/allenai/Molmo2-O-7B.json.minisig $ minisign -Vm Molmo2-O-7B.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

allenai/Olmo-3-7B-Instruct · this model is a finetune of it

No model in the catalog names this one as its parent.

Get it
Download
$ HF_ENDPOINT=https://freeweights.allternit.com hf download allenai/Molmo2-O-7B
Open in Freeweights Studio

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

Signed manifest
minisign, key 2DC28CC7B26A283B. Molmo2-O-7B.json. Provenance. Takedown history: none.
From: bartowski <huggingface.co/bartowski>Subject: allenai_Olmo-3-7B-Instruct-GGUF
From: bartowski <huggingface.co/bartowski>Subject: allenai_Olmo-3-7B-Think-GGUF
From: bartowski <huggingface.co/bartowski>Subject: allenai_Olmo-3.1-32B-Instruct-GGUF
From: bartowski <huggingface.co/bartowski>Subject: allenai_Olmo-3.1-32B-Think-GGUF
From: bartowski <huggingface.co/bartowski>Subject: allenai_olmOCR-2-7B-1025-GGUF
From: bartowski <huggingface.co/bartowski>Subject: allenai_olmOCR-7B-0225-preview-GGUF