> ## Documentation Index
> Fetch the complete documentation index at: https://arkor-92aeef0e-eng-353.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# メンタルモデル

> Arkor の背後にあるメンタルモデル: プロジェクト構成、トレーナー、ライフサイクルコールバック、Studio。

このセクションは [SDK リファレンス](/ja/sdk/overview) や [CLI リファレンス](/ja/cli/overview) に飛び込む前に必要なメンタルモデルを与えるためのものです。順番に読んでください。それぞれが前のものの上に積み重なります。

## 読む順番

* [**プロジェクト構成**](/ja/concepts/project-structure)。Arkor がコードを置くべきと考える場所（`src/arkor/index.ts`、`src/arkor/trainer.ts`）、`.arkor/` と `~/.arkor/` の役割、`arkor.config.ts` が今日できること（できないこと）。
* [**トレーナー**](/ja/concepts/trainer)。`createTrainer` の形: 必須フィールド、データセットソース、LoRA 設定、`Trainer.start / wait / cancel` のライフサイクル。
* [**ライフサイクルコールバック**](/ja/concepts/lifecycle)。5 つのコールバック（`onStarted`、`onLog`、`onCheckpoint`、`onCompleted`、`onFailed`）、それぞれの引数の形、いつ発火するか。TypeScript でファインチューニングする価値の大部分はここに集まっています。
* [**Studio**](/ja/concepts/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 に反映されます。
