YAML Metadata Warning: empty or missing yaml metadata in repo card (https://huggingface.co/docs/hub/model-cards#model-card-metadata)

RoboBrain-3B MoR 稀疏激活推理使用说明

本仓库(StyTJU/robobrain2.0-3b-mor-router-adapter)为 RoboBrain2.0-3B 的 MoR(Mixture-of-Recursions)稀疏激活路由器+lm_head 增量权重,需配合官方基座模型使用。

1. 环境准备

按照BAAI/RoboBrain2.0-3B的环境配置即可

pip install torch transformers safetensors

2. 加载基座模型与 MoR 适配器权重

from robobrain3b_mor_model import load_robobrain3b_with_mor
from transformers import AutoTokenizer, AutoProcessor
import torch, os, json
from safetensors.torch import load_file

# 1. 加载基座模型(官方原版)
model = load_robobrain3b_with_mor(
    model_path="BAAI/RoboBrain2.0-3B",
    device_map="auto",
    torch_dtype=torch.bfloat16
)

# 2. 加载MoR适配器权重(本仓库内容)
adapter_dir = "./outputs/mor-kv-sharerobot"  # 如 './outputs/mor-kv-sharerobot' 或 HF下载目录
index_file = os.path.join(adapter_dir, 'model.safetensors.index.json')
index = json.load(open(index_file, 'r', encoding='utf-8'))
weight_map = index["weight_map"]
from collections import defaultdict
grouped = defaultdict(list)
for k, v in weight_map.items():
    grouped[v].append(k)
for shard, keys in grouped.items():
    tens = load_file(os.path.join(adapter_dir, shard))
    sub = {k: tens[k] for k in keys if k in tens}
    model.load_state_dict(sub, strict=False)
model.to(model.device)
print("✅ MoR适配器权重加载完成")

3. 加载分词器与处理器

tokenizer = AutoTokenizer.from_pretrained("BAAI/RoboBrain2.0-3B", trust_remote_code=True)
processor = AutoProcessor.from_pretrained("BAAI/RoboBrain2.0-3B", trust_remote_code=True)

4. 多模态推理示例(图片+文本)

messages = [
    {
        "role": "user",
        "content": [
            {
                "type": "image",
                "image": "https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen-VL/assets/demo.jpeg",
            },
            {"type": "text", "text": "请描述这张图片。"},
        ],
    }
]

# 构建对话模板
text = processor.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
image_inputs = ["https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen-VL/assets/demo.jpeg"]
inputs = processor(
    text=[text],
    images=image_inputs,
    padding=True,
    return_tensors="pt",
)
inputs = {k: v.to(model.device) for k, v in inputs.items()}

# 推理,可调整超参数
generated_ids = model.generate(
    **inputs,
    max_new_tokens=128,
    temperature=0.2,   # 控制多样性
    top_p=0.95,        # nucleus采样
    do_sample=True,    # 启用采样
    pad_token_id=tokenizer.eos_token_id,
)
in_len = inputs['input_ids'].shape[1]
output_text = tokenizer.decode(generated_ids[0][in_len:], skip_special_tokens=True)
print(output_text)
Downloads last month

-

Downloads are not tracked for this model. How to track
Safetensors
Model size
1B params
Tensor type
F32
·
BF16
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support