読む順番
- プロジェクト構成。Arkor がコードを置くべきと考える場所(
src/arkor/index.ts、src/arkor/trainer.ts)、.arkor/と~/.arkor/の役割、arkor.config.tsが現状できること(できないこと)。 - トレーナー。
createTrainerの形: 必須フィールド、データセットソース、LoRA 設定、Trainer.start / wait / cancelのライフサイクル。 - ライフサイクルコールバック。5 つのコールバック(
onStarted、onLog、onCheckpoint、onCompleted、onFailed)、それぞれの引数の形、発火するタイミング。TypeScript でファインチューニングする意義の多くはここにあります。 - Studio。ローカル Web UI が何のためにあり、なぜループバックで動き、開発ループにどう組み込まれるのか。
1 段落で言うと
src/arkor/trainer.ts の中で createTrainer({ name, model, dataset, ... }) を使って Trainer を定義し、src/arkor/index.ts の createArkor({ trainer }) で登録します。arkor dev でブラウザーにローカル Studio が開き、Studio の Run training をクリックすると arkor start がサブプロセスとして起動し、trainer.start() と trainer.wait() が呼び出されます。wait() の実行中は SSE イベントストリームからコールバックがディスパッチされ、Arkor のマネージド GPU から学習の進捗がストリーミングされて、同じ内容が Studio にも反映されます。