🚀 图像文本转换模型 Pixtral-12b-NF4
本项目是一个图像文本转换模型,基于 mistral-community/pixtral-12b
模型转换而来,采用了 BitsAndBytes 的 NF4(4 位)量化技术,无需双重量化。该模型可用于图像描述生成等任务,具有一定的性能和效果。
🚀 快速开始
本模型由 mistral-community/pixtral-12b 使用 BitsAndBytes 结合 NF4(4 位)量化转换而来,未使用双重量化。加载此模型需要安装 bitsandbytes
库。
💻 使用示例
基础用法
以下是一个图像描述生成的示例代码:
from transformers import LlavaForConditionalGeneration, AutoProcessor, BitsAndBytesConfig
from PIL import Image
import time
model_id = "SeanScripts/pixtral-12b-nf4"
model = LlavaForConditionalGeneration.from_pretrained(
model_id,
use_safetensors=True,
device_map="cuda:0"
)
processor = AutoProcessor.from_pretrained(model_id)
IMG_URLS = [Image.open("test.png").convert("RGB")]
PROMPT = "<s>[INST]Caption this image:\n[IMG][/INST]"
inputs = processor(images=IMG_URLS, text=PROMPT, return_tensors="pt").to("cuda")
prompt_tokens = len(inputs['input_ids'][0])
print(f"Prompt tokens: {prompt_tokens}")
t0 = time.time()
generate_ids = model.generate(**inputs, max_new_tokens=512)
t1 = time.time()
total_time = t1 - t0
generated_tokens = len(generate_ids[0]) - prompt_tokens
time_per_token = generated_tokens/total_time
print(f"Generated {generated_tokens} tokens in {total_time:.3f} s ({time_per_token:.3f} tok/s)")
output = processor.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
print(output)
性能表现
在 4090 显卡上,该模型每秒大约能生成 10 - 12 个 token(未使用 Flash Attention),生成的图像描述效果不错,不过测试样本数量有限。模型运行大约需要 10GB 的显存。
相关资源
你可以从以下链接获取用于运行此模型的 ComfyUI 自定义节点:
https://github.com/SeanScripts/ComfyUI-PixtralLlamaVision
📄 许可证
本项目采用 Apache-2.0 许可证。
属性 |
详情 |
基础模型 |
mistral-community/pixtral-12b |
任务类型 |
图像文本到文本 |
库名称 |
transformers |
许可证 |
Apache-2.0 |