模型简介
模型特点
模型能力
使用案例
🚀 SmolVLM-Instruct GGUF模型
SmolVLM是一个紧凑的开源多模态模型,它可以接受任意的图像和文本输入序列,并生成文本输出。该模型专为高效设计,能够回答关于图像的问题、描述视觉内容、基于多张图像创作故事,甚至在没有视觉输入的情况下作为纯语言模型使用。其轻量级架构使其适用于设备端应用,同时在多模态任务上保持了强大的性能。
🚀 快速开始
你可以使用transformers
库来加载、推理和微调SmolVLM模型。以下是一个使用示例:
import torch
from PIL import Image
from transformers import AutoProcessor, AutoModelForVision2Seq
from transformers.image_utils import load_image
DEVICE = "cuda" if torch.cuda.is_available() else "cpu"
# 加载图像
image1 = load_image("https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg")
image2 = load_image("https://huggingface.co/spaces/merve/chameleon-7b/resolve/main/bee.jpg")
# 初始化处理器和模型
processor = AutoProcessor.from_pretrained("HuggingFaceTB/SmolVLM-Instruct")
model = AutoModelForVision2Seq.from_pretrained(
"HuggingFaceTB/SmolVLM-Instruct",
torch_dtype=torch.bfloat16,
_attn_implementation="flash_attention_2" if DEVICE == "cuda" else "eager",
).to(DEVICE)
# 创建输入消息
messages = [
{
"role": "user",
"content": [
{"type": "image"},
{"type": "image"},
{"type": "text", "text": "Can you describe the two images?"}
]
},
]
# 准备输入
prompt = processor.apply_chat_template(messages, add_generation_prompt=True)
inputs = processor(text=prompt, images=[image1, image2], return_tensors="pt")
inputs = inputs.to(DEVICE)
# 生成输出
generated_ids = model.generate(**inputs, max_new_tokens=500)
generated_texts = processor.batch_decode(
generated_ids,
skip_special_tokens=True,
)
print(generated_texts[0])
"""
Assistant: The first image shows a green statue of the Statue of Liberty standing on a stone pedestal in front of a body of water.
The statue is holding a torch in its right hand and a tablet in its left hand. The water is calm and there are no boats or other objects visible.
The sky is clear and there are no clouds. The second image shows a bee on a pink flower.
The bee is black and yellow and is collecting pollen from the flower. The flower is surrounded by green leaves.
"""
✨ 主要特性
- 多模态处理:能够接受图像和文本的任意序列输入,并生成文本输出。
- 高效轻量:适合设备端应用,在多模态任务上仍保持强大性能。
- 功能多样:可回答图像相关问题、描述视觉内容、创作故事等。
📦 安装指南
文档未提及具体安装步骤,可参考transformers
库的官方安装指南进行安装。
💻 使用示例
基础用法
# 上述快速开始中的代码示例即为基础用法示例
高级用法
模型优化
精度优化:如果你的硬件支持,可以使用半精度(torch.float16
或torch.bfloat16
)加载和运行模型,以获得更好的性能。
from transformers import AutoModelForVision2Seq
import torch
model = AutoModelForVision2Seq.from_pretrained(
"HuggingFaceTB/SmolVLM-Instruct",
torch_dtype=torch.bfloat16
).to("cuda")
你还可以使用bitsandbytes
、torchao
或Quanto
对SmolVLM进行4/8位量化。更多选项请参考此页面。
from transformers import AutoModelForVision2Seq, BitsAndBytesConfig
import torch
quantization_config = BitsAndBytesConfig(load_in_8bit=True)
model = AutoModelForVision2Seq.from_pretrained(
"HuggingFaceTB/SmolVLM-Instruct",
quantization_config=quantization_config,
)
视觉编码器效率优化:在初始化处理器时,通过设置size={"longest_edge": N*384}
来调整图像分辨率,其中N
是你期望的值。默认N=4
,对应输入图像大小为1536x1536。对于文档处理,N=5
可能更合适。减小N
可以节省GPU内存,适用于低分辨率图像,也可用于视频微调。
📚 详细文档
模型生成细节
该模型使用llama.cpp在提交版本5787b5da
时生成。
超越IMatrix的量化方法
测试一种新的量化方法,使用规则将重要层的量化级别提升到标准IMatrix之上。标准IMatrix在低比特量化和MOE模型中表现不佳,因此使用llama.cpp --tensor-type
来提升选定层的量化级别。详情见使用llama.cpp进行层提升。这种方法会增加模型文件大小,但能提高给定模型大小下的精度。
选择合适的模型格式
选择正确的模型格式取决于你的硬件能力和内存限制。
模型格式 | 精度 | 内存使用 | 设备要求 | 最佳使用场景 |
---|---|---|---|---|
BF16 | 非常高 | 高 | 支持BF16的GPU/CPU | 减少内存的高速推理 |
F16 | 高 | 高 | 支持FP16的GPU/CPU | BF16不可用时的推理 |
Q4_K | 中低 | 低 | CPU或低显存设备 | 内存受限的推理 |
Q6_K | 中等 | 适中 | 内存较多的CPU | 量化下更好的精度 |
Q8_0 | 高 | 适中 | 显存适中的GPU/CPU | 量化模型中最高的精度 |
IQ3_XS | 低 | 非常低 | 超低内存设备 | 最大内存效率,低精度 |
IQ3_S | 低 | 非常低 | 低内存设备 | 比IQ3_XS更可用 |
IQ3_M | 中低 | 低 | 低内存设备 | 比IQ3_S精度更好 |
Q4_0 | 低 | 低 | 基于ARM的/嵌入式设备 | Llama.cpp自动优化ARM推理 |
超低比特(IQ1/2_*) | 非常低 | 极低 | 小型边缘/嵌入式设备 | 在极紧内存中适配模型;低精度 |
混合(如bf16_q8_0 ) |
中高 | 中等 | 支持混合精度的硬件 | 平衡性能和内存,关键层接近FP精度 |
模型总结
- 开发者:Hugging Face
- 模型类型:多模态模型(图像+文本)
- 语言(NLP):英语
- 许可证:Apache 2.0
- 架构:基于Idefics3
资源
用途
SmolVLM可用于多模态(图像+文本)任务的推理,输入可以是文本查询和一个或多个图像的任意组合。支持图像描述、视觉问答、基于图像的故事创作等任务,但不支持图像生成。若要对SmolVLM进行特定任务的微调,可参考微调教程(待添加链接)。
滥用和超出范围的使用
SmolVLM不适用于高风险场景或影响个人福祉和生计的关键决策过程。该模型可能会生成看似事实但不准确的内容。滥用情况包括但不限于:
- 禁止用途:
- 评估或评分个人(如就业、教育、信贷方面)
- 关键自动化决策
- 生成不可靠的事实内容
- 恶意活动:
- 垃圾邮件生成
- 虚假信息传播
- 骚扰或滥用
- 未经授权的监控
训练细节
训练数据
训练数据来自The Cauldron和Docmatix数据集,重点关注文档理解(25%)和图像描述(18%),同时在视觉推理、图表理解和一般指令遵循等其他关键能力方面保持平衡覆盖。
评估
模型 | MMMU(验证集) | MathVista(测试迷你集) | MMStar(验证集) | DocVQA(测试集) | TextVQA(验证集) | 最小GPU显存要求(GB) |
---|---|---|---|---|---|---|
SmolVLM | 38.8 | 44.6 | 42.1 | 81.6 | 72.7 | 5.02 |
Qwen-VL 2B | 41.1 | 47.8 | 47.5 | 90.1 | 79.7 | 13.70 |
InternVL2 2B | 34.3 | 46.3 | 49.8 | 86.9 | 73.4 | 10.52 |
PaliGemma 3B 448px | 34.9 | 28.7 | 48.3 | 32.2 | 56.0 | 6.72 |
moondream2 | 32.4 | 24.3 | 40.3 | 70.5 | 65.2 | 3.87 |
MiniCPM-V-2 | 38.2 | 39.8 | 39.1 | 71.9 | 74.1 | 7.88 |
MM1.5 1B | 35.8 | 37.2 | 0.0 | 81.0 | 72.5 | NaN |
🔧 技术细节
SmolVLM利用轻量级的SmolLM2语言模型,提供紧凑而强大的多模态体验。与之前的Idefics模型相比,它有以下改进:
- 图像压缩:引入比Idefics3更激进的图像压缩方法,使模型推理更快,使用的RAM更少。
- 视觉令牌编码:使用81个视觉令牌对384x384大小的图像块进行编码。较大的图像会被分割成块,分别进行编码,在不影响性能的前提下提高了效率。
📄 许可证
SmolVLM基于形状优化的SigLIP作为图像编码器,SmolLM2作为文本解码器。SmolVLM的检查点以Apache 2.0许可证发布。
📖 引用信息
你可以按以下方式引用我们:
@article{marafioti2025smolvlm,
title={SmolVLM: Redefining small and efficient multimodal models},
author={Andrés Marafioti and Orr Zohar and Miquel Farré and Merve Noyan and Elie Bakouch and Pedro Cuenca and Cyril Zakka and Loubna Ben Allal and Anton Lozhkov and Nouamane Tazi and Vaibhav Srivastav and Joshua Lochner and Hugo Larcher and Mathieu Morlon and Lewis Tunstall and Leandro von Werra and Thomas Wolf},
journal={arXiv preprint arXiv:2504.05299},
year={2025}
}
🔍 量子网络监控测试相关
测试说明
如果你觉得这些模型有用,可以帮助测试AI驱动的量子网络监控助手,进行量子就绪安全检查。
- 量子网络监控器:量子网络监控器
- 源代码:量子网络监控服务的完整开源代码可在GitHub仓库找到,你还能找到用于量化模型的代码GGUFModelBuilder。
测试方法
选择一种AI助手类型:
TurboLLM
(GPT - 4.1 - mini)HugLLM
(Huggingface开源模型)TestLLM
(仅支持CPU的实验性模型)
测试内容
正在测试小型开源模型在AI网络监控方面的极限,具体包括:
- 针对实时网络服务的函数调用
- 模型在处理以下任务时的最小规模:
- 自动化Nmap安全扫描
- 量子就绪检查
- 网络监控任务
各助手特点
TestLLM
当前的实验性模型(在Huggingface Docker空间的2个CPU线程上运行llama.cpp):
- 零配置设置
- 加载时间约30秒(推理慢,但无API成本),无令牌限制,因为成本低。
- 寻求帮助:如果你对边缘设备AI感兴趣,欢迎合作!
TurboLLM
使用gpt - 4.1 - mini:
- 性能出色,但OpenAI按令牌收费,因此令牌使用受限。
- 可创建自定义cmd处理器,在量子网络监控代理上运行.NET代码。
- 支持实时网络诊断和监控、安全审计、渗透测试(Nmap/Metasploit)。
HugLLM
使用最新的开源模型,在Hugging Face推理API上运行,使用Novita托管的最新模型时表现良好。
测试命令示例
"Give me info on my websites SSL certificate"
"Check if my server is using quantum safe encyption for communication"
"Run a comprehensive security audit on my server"
"Create a cmd processor to .. (what ever you want)"
注意,你需要安装量子网络监控代理才能运行.NET代码,这是一个非常灵活和强大的功能,请谨慎使用!
结束语
创建这些模型文件和运行量子网络监控服务的服务器费用由本人承担。








