1. 下载发布权重
modelscope download --model gongjy/minimind-3v-pytorch --local_dir ./out
原生 PyTorch 权重放在 out/,视觉编码器仍需要放在 model/siglip2-base-p32-256-ve/。
2. 命令行推理
python eval_vlm.py --load_from model --weight sft_vlm
eval_vlm.py 会遍历 dataset/eval_images/ 下的图片,使用默认 prompt:
<image>
请描述这张图中的主要物体和场景。
脚本中 prompt.replace('<image>', image_special_token * image_token_len) 对应教程前面讲过的占位符展开。
3. Transformers 格式
git clone https://huggingface.co/jingyaogong/minimind-3v
python eval_vlm.py --load_from minimind-3v
当 --load_from 不是 model 时,脚本走 AutoModelForCausalLM.from_pretrained(..., trust_remote_code=True),然后补上本地视觉编码器。
4. 启动 WebUI
cp -r minimind-3v ./scripts/minimind-3v
cd scripts
python web_demo_vlm.py
scripts/web_demo_vlm.py 会扫描 scripts/ 下包含权重文件的模型目录,并在界面里提供模型切换。它使用 Gradio 的聊天组件,上传图片后把图像转成 pixel values,再走 model.generate。
5. 权重格式转换
scripts/convert_vlm.py 提供 PyTorch 权重与 Transformers 格式之间的转换。转换到 Transformers 时会注册 VLMConfig 与 MiniMindVLM,保存 tokenizer,并写入必要的 config 字段。
转换前确认路径:脚本默认从
../out/sft_vlm_768_moe.pth 这类文件读取,并依赖 ../model/siglip2-base-p32-256-ve。
6. 常用生成参数
| 参数 | 默认值 | 影响 |
|---|---|---|
--max_new_tokens | 512 | 回答最长生成 token 数。 |
--temperature | 0.7 | 越高越随机,越低越稳定。 |
--top_p | 0.85 | nucleus sampling 阈值。 |
--use_moe | 0 | 加载 MoE 权重时需要设为 1。 |
--open_thinking | 0 | 是否开启 tokenizer chat template 的 thinking 相关选项。 |
