Setup

环境与资源

MiniMind-O 不是只装 Python 包就能跑。它依赖冻结的语音 encoder、视觉 encoder、音频 codec、speaker encoder,以及训练/推理权重。先把目录摆对,后面的问题会少很多。

硬件与软件

快速推理

CPU 可以尝试文本或小样例,语音/图像推理建议用 CUDA 设备。

mini 训练

README 给出的参考是单张 RTX 3090 跑通 mini SFT 约 2 小时。

full 训练

更适合多卡,`trainer/train.sh` 提供 4 卡 dense/MoE 参考管线。

pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

`requirements.txt` 包括 datasets、transformers、funasr、onnxruntime、gradio、flask、modelscope 等。Torch/torchvision/torchaudio 通常要按你的 CUDA 版本单独安装。

必须下载的资源

资源放置路径作用
SenseVoice-Small`./model/SenseVoiceSmall`语音输入 encoder,训练和语音推理都用。
SigLIP2 base-p32-256`./model/siglip2-base-p32-256-ve`图像输入 encoder。
Mimi`./model/mimi`把 Talker 生成的 codes 解码成 24 kHz 音频。
CAMPPlus`./model/campplus`提取 speaker embedding,支持音色条件和克隆。
MiniMind LLM 权重`./out/llm_768.pth`从语言模型底座开始训练 Omni。
MiniMind-O 发布权重`./out` 或 transformers 目录直接运行 `eval_omni.py` 或 WebUI。
modelscope download --model gongjy/SenseVoiceSmall --local_dir ./model/SenseVoiceSmall
modelscope download --model gongjy/siglip2-base-p32-256-ve --local_dir ./model/siglip2-base-p32-256-ve
modelscope download --model gongjy/mimi --local_dir ./model/mimi
modelscope download --model gongjy/campplus --local_dir ./model/campplus
modelscope download --model gongjy/minimind-3o-pytorch --local_dir ./out

推荐目录结构

minimind-o/
├── model/
│   ├── SenseVoiceSmall/
│   ├── siglip2-base-p32-256-ve/
│   ├── mimi/
│   ├── campplus/
│   └── speaker/
├── out/
│   ├── llm_768.pth
│   └── sft_omni_768.pth
├── dataset/
│   ├── sft_t2a_mini.parquet
│   ├── sft_a2a_mini.parquet
│   └── eval_omni/
└── trainer/
路径很关键:源码里很多默认路径是相对项目根目录写死的,例如 `./model/mimi`、`./dataset/eval_omni/`、`../model/SenseVoiceSmall`。运行脚本前先确认当前工作目录。

最小验证

启动教程网站

python3 serve.py --port 8765
# 浏览器访问 http://127.0.0.1:8765/

检查 CUDA

python - <<'PY'
import torch
print("cuda:", torch.cuda.is_available())
print("device:", torch.cuda.get_device_name(0) if torch.cuda.is_available() else "cpu")
PY

命令行推理

python eval_omni.py --load_from model --weight sft_omni --mode 0 --prompt_lang 2

transformers 权重推理

git clone https://huggingface.co/jingyaogong/minimind-3o
python eval_omni.py --load_from minimind-3o --mode 0

常见卡点

权重格式混淆

`--load_from model` 表示加载原生 PyTorch 权重;传入 transformers 模型目录时会走 `AutoModelForCausalLM.from_pretrained`。

WebUI 扫描目录

`scripts/web_demo_omni.py` 会扫描 `scripts/` 里的 transformers 模型子目录,README 提醒要先复制模型目录。

音频解码失败

确认 `model/mimi` 存在,并且生成的 8 路 codes 没有全为空。

图像路径缺失

图像推理需要 SigLIP2 目录和 `dataset/eval_omni` 下的图片样例。