jingyaogong/minimind-o

🎙️ A 0.1B Omni model trained from scratch, capable of listening, speaking, and seeing!

MiniMind‑O – 초소형 엔드투엔드 옴니 모델 (약 0.1 B 파라미터)

무엇인가요 – MiniMind‑O는 오픈소스이며, 텍스트 + 음성 + 이미지의 다중 모달 입력을 처리하고, 텍스트 및 스트리밍 음성 출력을 생성하는 다중 모달 모델입니다. "Thinker → Talker" 파이프라인은 PyTorch로 완전히 재구현되었으며, 고수준 프레임워크의 마법 없이, 훈련 스크립트, 데이터, 사전 학습된 가중치, 데모 인터페이스를 함께 제공합니다.


주요 기능 (README에 기술됨)

  • 옴니 기능 – 하나의 가중치 파일이 텍스트, 음성, 시각 입력 3가지 모달리티와 텍스트, 실시간 음성 출력 2가지 모달리티를 모두 처리합니다.
  • 초소형 크기 – 기본 모델 "minimind‑3o"는 약 113 M의 학습 가능한 파라미터(≈0.1 B)입니다. MoE 버전(≈315 M)도 제공됩니다. 이로 인해 mini 데이터셋을 사용하면 단일 RTX‑3090에서 약 2시간 내에 전체 체인 훈련이 가능합니다.
  • Thinker–Talker 이중 경로 아키텍처
    • Thinker: 다중 모달 임베딩을 융합하고 텍스트 응답을 생성하는 MiniMind 트랜스포머입니다.
    • Talker: Thinker의 은닉 상태를 조건으로 하여 MTP(Multi‑Token Prediction)를 통해 여러 레이어의 Mimi 음성 코드를 예측합니다. 코드는 실시간으로 24 kHz 음성으로 디코딩되어, 바지인(barge-in)과 근접 이중화 상호작용을 가능하게 합니다.
  • 모달리티 프로젝터 – 고정된 외부 인코더(SenseVoice‑Small: 음성용, SigLIP‑2: 시각용)가 2층 MLP 프로젝터를 통해 특징을 MiniMind의 은닉 공간에 매핑합니다.
  • 보이스 클로닝 및 프롬프트 – 스피커 임베딩(CAM++)과 참조 음성 코드를 사용한 컨텍스트 내 보이스 클로닝. 실험용으로 5개의 내장 보이스 프롬프트와 7개의 미사용 프롬프트가 제공됩니다.
  • 훈련 데이터 – 두 가지 패키지:
    • mini: 영어 전용 소규모 서브셋으로 전체 파이프라인을 약 2시간 내에 실행 가능합니다.
    • full: 공개된 가중치에 사용된 완전한 다국어(중국어 + 영어) 데이터셋입니다.
  • 풀스택 코드 – 데이터 로딩(train_sft_omni.py)에서 평가(eval_omni.py)까지, 데모 UI(Gradio 웹 UI 및 실시간 전화 모드 UI)까지 포함합니다.
  • 제3자 추상화 없음 – 모든 핵심 레이어는 PyTorch 텐서로 직접 작성되었으며, 편의를 위해 HuggingFace 토크나이저도 사용 가능합니다.

일반적인 사용 사례

시나리오 MiniMind‑O의 도움
연구 및 교육 – 옴니 모델이 어떻게 처음부터 구축되고 훈련되는지 배우기. 0.1 B의 최소 모델, 완전한 훈련 스크립트, 단일 GPU에서 실행 가능한 작은 데이터셋을 제공합니다.
다중 모달 어시스턴트 프로토타이핑 – 텍스트로 대화하거나, 모델에게 말하거나, 이미지를 보여주고 음성으로 응답을 받기. 제공된 CLI(eval_omni.py) 또는 Gradio/WebUI를 사용하여 실시간으로 상호작용 가능하며, 바지인 지원이 있습니다.
보이스 스타일 실험 – 컨텍스트 내 보이스 클로닝을 테스트하거나, 다양한 스피커 임베딩을 비교하기. 내장된 보이스 프롬프트 + 임의의 참조 음성 코드 제공 기능.
초소형 옴니 모델 벤치마킹 – 더 큰 오픈 모델과 비교하여 파라미터 효율성, CER/WER, 보이스 클로닝 유사도를 평가하기. 기술 보고서에 공개된 평가 곡선, CER/WER 수치, 스피커 유사성 표가 포함되어 있습니다.

빠른 시작 (README에서)

  1. 클론 및 설치
    git clone --depth 1 https://github.com/jingyaogong/minimind-o
    cd minimind-o
    pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
    
  2. 필요한 모델 및 데이터 다운로드 (ModelScope 또는 HuggingFace LFS)
    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 llm_768.pth --local_dir ./out   # 기본 LLM 가중치
    
  3. 추론 실행 (CLI 예제)
    python eval_omni.py --load_from model --weight sft_omni
    
    또는 Gradio 데모 시작:
    cp -r minimind-3o ./scripts/minimind-3o   # 트랜스포머 형식 가중치 복사
    cd scripts && python web_demo_omni.py
    
  4. mini 데이터셋에서 훈련 (단일 GPU 예제)
    cd trainer
    CUDA_VISIBLE_DEVICES=0 torchrun --master_port 29560 --nproc_per_node 1 \
        train_sft_omni.py --learning_rate 5e-4 \
        --data_path ../dataset/sft_t2a_mini.parquet --epochs 1 \
        --batch_size 40 --use_compile 1 --from_weight llm --save_weight sft_zero \
        --max_seq_len 512 --use_wandb 0 --use_moe 0
    
    (이후 음성 프로젝터 및 전체 파이프라인 단계도 동일한 패턴을 따릅니다.)

더 많은 정보 찾기

  • 기술 보고서 – arXiv: 2605.03937 (README 상단에 링크됨).
  • 모델 가중치 및 컬렉션 – ModelScope 및 HuggingFace의 MiniMind‑O 컬렉션에서 확인 가능.
  • 데모 영상 및 실시간 Gradio 데모 – README에 링크 제공.
  • 관련 프로젝트 – 기반 트랜스포머 백본인 MiniMind (LLM) 및 MiniMind‑V (시각언어) 참조.

TL;DR

MiniMind‑O는 보통의 GPU를 가진 누구나, 텍스트 + 음성 + 이미지의 완전한 엔드투엔드 다중 모달 모델을 처음부터 훈련하거나 즉시 사용할 수 있도록 합니다. 초소형 0.1 B 크기, 오픈소스 코드, 그리고 함께 제공되는 데이터 덕분에, 옴니모달 AI의 학습이나 프로토타이핑에 실용적인 입문점이 됩니다.

관련

  • 프로젝트
  • 프로젝트
  • Dispatch
  • 프로젝트
  • 프로젝트