☎️

Moshiをファインチューニングしてみる

Kyutai Labs が公開した moshi-finetune のリポジトリを使って、Google Colab 上でファインチューニングから推論まで行う記事です。
Kyutai Labsが公開しているGoogle Colabに従っています。

🔧 動作環境

  • Google Colab(A100。⚠️メモリ 40GB 以上ないと動きません

1. リポジトリをクローン

git clone https://github.com/kyutai-labs/moshi-finetune.git
cd moshi-finetune

2. パッケージのインストール

%pip install -e /content/moshi-finetune

✅ GPU が認識されているかチェック

import tensorflow as tf
device = tf.test.gpu_device_name()
if device:
    print(f"✅ GPU 利用可: {device}")
else:
    print("❌ GPU が認識されていません。ランタイムを GPU に設定してください。")

3. データセットのダウンロード

Kyutai Labs 提供の DailyTalkContiguous を使用します。今回は検証用に 10 ファイルだけ取得しました。

from pathlib import Path
from huggingface_hub import snapshot_download

dst = Path("/content/data/daily-talk-contiguous")
dst.mkdir(parents=True, exist_ok=True)

snapshot_download(
    repo_id="kyutai/DailyTalkContiguous",
    repo_type="dataset",
    local_dir=dst,
    allow_patterns=["**/*.wav", "**/*.json"],
    num_threads=4,
)

4. 独自データセットを使う場合

上記のデータセットの場合はすでに整理されているため必要ありませんが、持参したデータの場合は準備が必要です。

フォーマット要件

要素 仕様
音声 ステレオ .wav(CH1: moshi音声, CH2: ユーザ音声)
.json タイムスタンプ付き転写データ(例: {"alignments": [["Hello", [0.1, 0.8], "SPEAKER_MAIN"], ...]})
.jsonl 各 .wav に対するパスと長さ(秒)を記載

.jsonと.jsonlは自動生成できます。

ディレクトリ構造

data/
├── my_dataset.jsonl
└── data_stereo/
    ├── a.wav
    ├──a.json
    ├── b.wav
    ├──b.json
    └── ...

.jsonl 自動生成スクリプト

import json, sphn
from pathlib import Path

wav_dir = Path("data_stereo")
with open("my_dataset.jsonl", "w") as f:
    for p in wav_dir.glob("*.wav"):
        dur = sphn.duration(str(p))
        if dur:
            json.dump({"path": str(p), "duration": dur}, f)
            f.write("\n")

タイムスタンプ付き .json を生成する場合

python annotate.py path/to/my_dataset.jsonl

5. トレーニング実行

設定はREADMEに従って実行します。

推奨設定例(example.yaml)

lora:
  enable: true
  rank: 128
  scaling: 2.0

duration_sec: 100
batch_size: 16
max_steps: 2000

トレーニング実行コマンド

torchrun --nproc-per-node=1 -m train /content/example.yaml --master_port=$((RANDOM+10000))

💡 T4 (16GB) では OOM に注意。40GB 以上の GPU でないと動きません

6. 推論を実行してみる

GUIからMoshiを操作します。

!pip install gradio

LoRA アダプタを用いてgradioを起動します。--lora-weight、--config-pathでチェックポイントを指定します。

!python -m moshi.server --gradio-tunnel --lora-weight=/content/test/checkpoints/checkpoint_000300/consolidated/lora.safetensors --config-path=/content/test/checkpoints/checkpoint_000300/consolidated/config.json

ブラウザで https://<your-colab-url>:7860 にアクセスすると、GUIからMoshiを利用できます。

最後に

nocall株式会社では、MoshiやSesameなどのSpeech to Speechを作りたい機械科学習エンジニアを募集しています

Xをフォローしてください!

https://x.com/1MoNo2Prod

カジュアル面談はここから👇

https://nocall.notion.site/?pvs=105

nocall株式会社テックブログ

Discussion