From: mistral-community <huggingface.co/mistral-community>Newsgroups: alt.freeweights.mistralSubject:

pixtral-12b

Date: 2026-11-15Commit: c2756cbSigned: 2DC28CC7B26A283B ✓

Image text to text model with 12.7B parameters. Safetensors weights, 25.4 GB in all. Published by mistral-community under Apache-2.0.

12.7B params25.4GBpixtral-12bsafetensorspermissive
FactsParams12.7BSize25.4 GBFormatssafetensorsTaskimage text to textLicenseApache-2.0From sourcepermissive
$ fw get mistral-community/pixtral-12b
# manifest sha256 51e85c2fe369… · 25.4 GB · 17 files
$ fw verify ./pixtral-12b mistral-community/pixtral-12b
From sourceHosted (signed)mistral-community/pixtral-12bLast check: 2026-11-15 02:29 UTC

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

Works with

Overview

Size
25.4 GB
Weights
25.4 GB (safetensors)
Parameters
12.7B
Formats
safetensors
Task
image text to text
License
Apache-2.0 (permissive)
Files
17, each with a sha256
Publisher
mistral-community
Added
2026-11-15
Section
alt.freeweights.mistral
Lineage

Original release from the publisher.

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 02:29 UTCpassed

Model card

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

Model Card for Model ID#

Transformers compatible pixtral checkpoints. Make sure to install from source or wait for v4.45!

Usage example#
from PIL import Image
from transformers import AutoProcessor, LlavaForConditionalGeneration
model_id = "mistral-community/pixtral-12b"
model = LlavaForConditionalGeneration.from_pretrained(model_id)
processor = AutoProcessor.from_pretrained(model_id)

IMG_URLS = [
"https://picsum.photos/id/237/400/300", 
"https://picsum.photos/id/231/200/300", 
"https://picsum.photos/id/27/500/500",
"https://picsum.photos/id/17/150/600",
]
PROMPT = "<s>[INST]Describe the images.\n[IMG][IMG][IMG][IMG][/INST]"

inputs = processor(text=PROMPT, images=IMG_URLS, return_tensors="pt").to("cuda")
generate_ids = model.generate(**inputs, max_new_tokens=500)
output = processor.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]

You should get an output similar to the below:


"""
Describe the images.
Sure, let's break down each image description:

1. **Image 1:**
   - **Description:** A black dog with a glossy coat is sitting on a wooden floor. The dog has a focused expression and is looking directly at the camera.
   - **Details:** The wooden floor has a rustic appearance with visible wood grain patterns. The dog's eyes are a striking color, possibly brown or amber, which contrasts with its black fur.

2. **Image 2:**
   - **Description:** A scenic view of a mountainous landscape with a winding road cutting through it. The road is surrounded by lush green vegetation and leads to a distant valley.
   - **Details:** The mountains are rugged with steep slopes, and the sky is clear, indicating good weather. The winding road adds a sense of depth and perspective to the image.

3. **Image 3:**
   - **Description:** A beach scene with waves crashing against the shore. There are several people in the water and on the beach, enjoying the waves and the sunset.
   - **Details:** The waves are powerful, creating a dynamic and lively atmosphere. The sky is painted with hues of orange and pink from the setting sun, adding a warm glow to the scene.

4. **Image 4:**
   - **Description:** A garden path leading to a large tree with a bench underneath it. The path is bordered by well-maintained grass and flowers.
   - **Details:** The path is made of small stones or gravel, and the tree provides a shaded area with the bench invitingly placed beneath it. The surrounding area is lush and green, suggesting a well-kept garden.

Each image captures a different scene, from a close-up of a dog to expansive natural landscapes, showcasing various elements of nature and human interaction with it.
"""
Usage with chat template#

You can also use a chat template to format your chat history for Pixtral. Make sure that the images argument to the processor contains the images in the order that they appear in the chat, so that the model understands where each image is supposed to go.

Here's an example with text and multiple images interleaved in the same message:

from PIL import Image
from transformers import AutoProcessor, LlavaForConditionalGeneration
model_id = "mistral-community/pixtral-12b"
model = LlavaForConditionalGeneration.from_pretrained(model_id)
processor = AutoProcessor.from_pretrained(model_id)

url_dog = "https://picsum.photos/id/237/200/300"
url_mountain = "https://picsum.photos/seed/picsum/200/300"

chat = [
    {
      "role": "user", "content": [
        {"type": "text", "content": "Can this animal"}, 
        {"type": "image"}, 
        {"type": "text", "content": "live here?"}, 
        {"type": "image"}
      ]
    }
]

prompt = processor.apply_chat_template(chat)
inputs = processor(text=prompt, images=[url_dog, url_mountain], return_tensors="pt").to(model.device)
generate_ids = model.generate(**inputs, max_new_tokens=500)
output = processor.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]

From transformers>=v4.48, you can also pass image url or local path to the conversation history, and let the chat template handle the rest. Chat template will load the image for you and return inputs in torch.Tensor which you can pass directly to model.generate().

chat = [
    {
      "role": "user", "content": [
        {"type": "text", "content": "Can this animal"}, 
        {"type": "image", "url": url_dog}, 
        {"type": "text", "content": "live here?"}, 
        {"type": "image", "url" : url_mountain}
      ]
    }
]

inputs = processor.apply_chat_template(chat, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors"pt").to(model.device)
generate_ids = model.generate(**inputs, max_new_tokens=500)
output = processor.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]

You should get something like this:

Can this animallive here?Certainly! Here are some details about the images you provided:

### First Image
- **Description**: The image shows a black dog lying on a wooden surface. The dog has a curious expression with its head tilted slightly to one side.
- **Details**: The dog appears to be a young puppy with soft, shiny fur. Its eyes are wide and alert, and it has a playful demeanor.
- **Context**: This image could be used to illustrate a pet-friendly environment or to showcase the dog's personality.

### Second Image
- **Description**: The image depicts a serene landscape with a snow-covered hill in the foreground. The sky is painted with soft hues of pink, orange, and purple, indicating a sunrise or sunset.
- **Details**: The hill is covered in a blanket of pristine white snow, and the horizon meets the sky in a gentle curve. The scene is calm and peaceful.
- **Context**: This image could be used to represent tranquility, natural beauty, or a winter wonderland.

### Combined Context
If you're asking whether the dog can "live here," referring to the snowy landscape, it would depend on the breed and its tolerance to cold weather. Some breeds, like Huskies or Saint Bernards, are well-adapted to cold environments, while others might struggle. The dog in the first image appears to be a breed that might prefer warmer climates.

Would you like more information on any specific aspect?

While it may appear that spacing in the input is disrupted, this is caused by us skipping special tokens for display, and actually "Can this animal" and "live here" are correctly separated by image tokens. Try decoding with special tokens included to see exactly what the model sees!

Files

17 files · 25.4 GBWeights 25.4 GB (safetensors). Sizes and sha256 from the signed manifest.
Hide all 17 files with their sha256
FileSizesha256
.gitattributes1.52 KB11ad7efa24975ee4b0c3c3a38ed18737f0658a5f75a0a96787b576a78a023361
README.md6.70 KB55c6e89ac2d5fef709f23c88b1f2193072b7f409a475ee23372ffa3c306e10c8
chat_template.json1.38 KB765af2de6e6013ac90dd0042324fb170d55f0e70403d78e66125c9d02f55ba20
config.json997 Bda97ae391681b319832fe8121f77bee3df837fdefdffd2223c772040b7d7b5cc
generation_config.json116 Bb10e074267ec10c1cfed2f0cdbb9edff3f03aa739b9cc493af6b94e20b4149dc
model-00001-of-00006.safetensors4.99 GBea4644275d194e959b3fa47742b4719c80ebce63051a737f261c493cfb076a92
model-00002-of-00006.safetensors4.96 GBa040f77850fad5867332f08567e2331fd6ae9eb68f24d0d6584e6b2fba20cd7d
model-00003-of-00006.safetensors4.91 GB57e9ebe6f3c168415abe19c954fd4a23a93fbc0fedf1d16a38187bc5fa208299
model-00004-of-00006.safetensors4.91 GB8f98940380e57c4f9d567dfebe33de6d81076c91cdfbbf4955b80fd48e5969ba
model-00005-of-00006.safetensors4.26 GBe2a77995872e79c5d9d8d60395d50cee180ed5461a413de5acc37992a3533150
model-00006-of-00006.safetensors1.34 GBb8c9d03cd084f621896d137613209fcee96e2f528cbdb80723e1eea3c68cb176
model.safetensors.index.json57.9 KB6e50c1ff619bea918d144b00a7dc9282de73368cebef5d7c5f0c030bce62fbfc
preprocessor_config.json483 B519f21adb05f945c2d380b550eaac6e84ebbb8a9be2a6f6e72d8f9242ba9d274
processor_config.json162 B4ef9d7939b2bf2aaa39af0c6e57c31186c0efc24b1948d14047b90e143e676dc
special_tokens_map.json414 B6fa06efa2785e450051989a6f8fb4416b10149ded485ddd3f127a40734f5cfd0
tokenizer.json9.26 MBfdb1cdb68da106563ceabbb28cdea566b7bec624d4520e48ee922a5335d948fb
tokenizer_config.json177 KB34960da695af0a4b38fb46e819cfc718099a2b9c3d85923c0a02e7dde0c760e3
VersionsEach time the pinned upstream commit or file list changed in this repo. Newest first.
Upstream commitDateContents
c2756cbbb9 pinned now2026-11-15 02:29 UTC17 files · 25.4 GB

Use it

$ fw get mistral-community/pixtral-12b
# manifest sha256 51e85c2fe369… · 25.4 GB · 17 files
$ fw verify ./pixtral-12b mistral-community/pixtral-12b
fw.pyChecks the signature and every sha256, tries each source in order, resumes.
$ python3 fw.py get https://freeweights.allternit.com/manifests/mistral-community/pixtral-12b.json --dir ./pixtral-12b $ python3 fw.py verify ./pixtral-12b ./mistral-community__pixtral-12b.json
hfThe Hugging Face CLI with one setting. Same repo id.
$ HF_ENDPOINT=https://freeweights.allternit.com hf download mistral-community/pixtral-12b --revision c2756cbbb9422eba9f6c5c439a214b0392dfc998 --local-dir ./pixtral-12b
transformersLoad the weights in Python.
import os os.environ["HF_ENDPOINT"] = "https://freeweights.allternit.com" from transformers import AutoModelForImageTextToText, AutoProcessor processor = AutoProcessor.from_pretrained("mistral-community/pixtral-12b", revision="c2756cbbb9422eba9f6c5c439a214b0392dfc998") model = AutoModelForImageTextToText.from_pretrained("mistral-community/pixtral-12b", revision="c2756cbbb9422eba9f6c5c439a214b0392dfc998", device_map="auto")
vLLMServe an OpenAI-compatible API.
$ HF_ENDPOINT=https://freeweights.allternit.com vllm serve mistral-community/pixtral-12b --revision c2756cbbb9422eba9f6c5c439a214b0392dfc998

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
55c6e89ac2d5fef709f23c88b1f2193072b7f409a475ee23372ffa3c306e10c8
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: mistral-community <huggingface.co/mistral-community>Newsgroups: alt.freeweights.mistralSubject: pixtral-12bDate: 2026-11-15Commit: c2756cbSigned: 2DC28CC7B26A283B ✓
Upstream
mistral-community/pixtral-12b
Pinned commit
c2756cbbb9422eba9f6c5c439a214b0392dfc998
Manifest
pixtral-12b.json · .minisig
Manifest sha256
51e85c2fe369ecbf2585420b696c3dc4adc34707c2d749c0c38a15d4279c5f7a
Signature
minisign, Ed25519, key 2DC28CC7B26A283B
Created
2026-11-15 02:29 UTC
Generator
freeweights-manifest/0.1.0
Takedowns
None.

How to verify

$ curl -O https://freeweights.allternit.com/manifests/mistral-community/pixtral-12b.json $ curl -O https://freeweights.allternit.com/manifests/mistral-community/pixtral-12b.json.minisig $ minisign -Vm pixtral-12b.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

No related models in this catalog.Nothing here lists this model as its parent, and it names no parent.
Get it
Download
$ HF_ENDPOINT=https://freeweights.allternit.com hf download mistral-community/pixtral-12b
Open in Freeweights Studio

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

Signed manifest
minisign, key 2DC28CC7B26A283B. pixtral-12b.json. Provenance. Takedown history: none.
From: bartowski <huggingface.co/bartowski>Subject: alamios_Mistral-Small-3.1-DRAFT-0.5B-GGUF
From: microsoft <huggingface.co/microsoft>Subject: chatbench-mistral-7b
From: NousResearch <huggingface.co/NousResearch>Subject: DeepHermes-3-Mistral-24B-Preview
From: mistralai <huggingface.co/mistralai>Subject: Devstral-Small-2-24B-Instruct-2512
From: mlx-community <huggingface.co/mlx-community>Subject: Devstral-Small-2-24B-Instruct-2512-4bit
From: mlx-community <huggingface.co/mlx-community>Subject: Devstral-Small-2-24B-Instruct-2512-6bit