/ Модель

Характеристики

Контекст
40 960 токенов
Параметры
19,6 млн
Размер весов
40,2 МБ
Архитектура
minicpmv · dense
Базовая модель
MiniCPM-V-4_5
Библиотека
transformers
Опубликована
24 окт 2025

tiny-random-minicpm-v-4_5

Генерация текстаТекст → текст3 профессии

Это отладочная мультимодальная модель tiny-random-minicpm-v-4_5, опубликованная в пространстве optimum-intel-internal-testing и созданная на основе конфигурации openbmb/MiniCPM-V-4_5.

6 117скачиваний за 30 дней0лайковвеса обновлены30 окт 2025

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

Модель предназначена для тестирования и отладки интеграции с библиотекой Transformers, а не для прикладного использования или получения качественных ответов: её параметры инициализированы случайным образом.

Модель работает в формате image-text-to-text и рассчитана на обработку изображений и текста, включая диалоговые сценарии с несколькими ходами. В README приведён пример визуального вопросно-ответного взаимодействия и последующего вопроса с использованием истории диалога. Конфигурация существенно уменьшена для отладки: текстовая часть имеет hidden size 128, 2 слоя, 2 attention heads и 1 key-value head; визуальная часть — hidden size 64, 2 слоя и 2 attention heads. Другие характеристики, включая точный размер в параметрах, поддерживаемые языки и длину контекста, не указаны.

Сильная сторона модели — компактность и пригодность для проверки загрузки, инференса и мультимодального API в Transformers. Главное ограничение — случайная инициализация, из-за которой модель не обладает обученными знаниями и не предназначена для надёжного распознавания изображений или генерации текста. В README условия лицензирования не указаны.

Для каких профессий подходит3

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

This tiny model is for debugging. It is randomly initialized with the config adapted from openbmb/MiniCPM-V-4_5.

Example usage:

import numpy as np
import torch
from PIL import Image
from transformers import AutoModel, AutoTokenizer

model_id = "tiny-random/minicpm-v-4_5"
model = AutoModel.from_pretrained(model_id, trust_remote_code=True,
                                  attn_implementation='sdpa', torch_dtype=torch.bfloat16)
model = model.eval().cuda()
tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True)

image = Image.fromarray(np.random.randint(0, 255, (224, 224, 3), dtype=np.uint8), 'RGB')
question = "What is the landform in the picture?"
msgs = [{'role': 'user', 'content': [image, question]}]
answer = model.chat(
    msgs=msgs,
    image=image,
    tokenizer=tokenizer,
    max_new_tokens=32,
)
print(answer)

# Second round chat, pass history context of multi-turn conversation
msgs.append({"role": "assistant", "content": [answer]})
msgs.append({"role": "user", "content": [
            "What should I pay attention to when traveling here?"]})
answer = model.chat(
    msgs=msgs,
    image=None,
    tokenizer=tokenizer,
    max_new_tokens=32,
)
print(answer)

Codes to create this repo:

import json
from pathlib import Path

import accelerate
import torch
from huggingface_hub import hf_hub_download
from transformers import (
    AutoConfig,
    AutoModel,
    AutoModelForCausalLM,
    AutoProcessor,
    AutoTokenizer,
    GenerationConfig,
    set_seed,
)

source_model_id = "openbmb/MiniCPM-V-4_5"
save_folder = "/tmp/tiny-random/minicpm-v-4_5"

processor = AutoProcessor.from_pretrained(source_model_id, trust_remote_code=True)
processor.save_pretrained(save_folder)

with open(hf_hub_download(source_model_id, filename='config.json', repo_type='model',), 'r', encoding='utf-8') as f:
    config_json = json.load(f)
for k, v in config_json['auto_map'].items():
    config_json['auto_map'][k] = f'{source_model_id}--{v}'
automap = config_json['auto_map']

config_json['head_dim'] = 32
config_json["hidden_size"] = 128  # required by Sampler -- num_heads=embed_dim // 128
config_json['intermediate_size'] = 128
config_json['num_attention_heads'] = 2
config_json['num_key_value_heads'] = 1
config_json['num_hidden_layers'] = 2
config_json['tie_word_embeddings'] = True

# factor = config_json['rope_scaling']['long_factor']
# config_json['rope_scaling']['long_factor'] = factor[:16]
# config_json['rope_scaling']['short_factor'] = factor[:16]

config_json['vision_config']['intermediate_size'] = 128
config_json['vision_config']['hidden_size'] = 64
config_json['vision_config']['num_attention_heads'] = 2
config_json['vision_config']['num_hidden_layers'] = 2

with open(f"{save_folder}/config.json", "w", encoding='utf-8') as f:
    json.dump(config_json, f, indent=2)

config = AutoConfig.from_pretrained(
    save_folder,
    trust_remote_code=True,
)
print(config)
torch.set_default_dtype(torch.bfloat16)
model = AutoModel.from_config(config, trust_remote_code=True)
torch.set_default_dtype(torch.float32)
model.generation_config = GenerationConfig.from_pretrained(
    source_model_id, trust_remote_code=True,
)
set_seed(42)
num_params = sum(p.numel() for p in model.parameters())
with torch.no_grad():
    for name, p in sorted(model.named_parameters()):
        torch.nn.init.normal_(p, 0, 0.1)
        print(name, p.shape, p.dtype, p.device, f'{p.numel() / num_params * 100: .2f}%')
        pass
model.save_pretrained(save_folder)

def modify_automap(path, source_model_id):
    import json
    with open(path, 'r', encoding='utf-8') as f:
        content = json.load(f)
    automap = {}
    if content.get('auto_map', None) is not None:
        for key, value in content.get('auto_map').items():
            if isinstance(value, str):
                value = source_model_id + '--' + value.split('--')[-1]
            else:
                value = [(source_model_id + '--' + v.split('--')[-1]) for v in value]
            automap[key] = value
        with open(path, 'w', encoding='utf-8') as f:
            json.dump({**content, 'auto_map': automap}, f, indent=2)

modify_automap(f"{save_folder}/config.json", source_model_id)
modify_automap(f'{save_folder}/processor_config.json', source_model_id)
modify_automap(f'{save_folder}/preprocessor_config.json', source_model_id)
modify_automap(f'{save_folder}/tokenizer_config.json', source_model_id)
for f in Path(save_folder).glob('*.py'):
    f.unlink()

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм · transformers

Нельзя запустить

Модели нужен код из репозитория; автор пока не в списке доверенных организаций.

Класс архитектуры
MiniCPMV
Ревизия весов
67088cf

0 моделей