学習の開始とジョブの観察
Studio の Home ページ(#/)は左の Run training と右の Jobs リスト の 2 列で構成されます。一覧でジョブをクリックすると Job 詳細(#/jobs/:id)に遷移し、ライブイベントストリームと Loss チャートはここに置かれています。
Run training
Run training パネルはページ読み込み時に/api/manifest を 1 度呼びます。レスポンスはプロジェクトの createArkor({ trainer }) のサマリで、これをもとにアクションをラベル付けします:
- トレーナーが見つかれば
Run training: <trainer name>。 - バンドルは import されたが何も露出しない場合
No trainer in src/arkor/index.ts yet. Add createTrainer(...) and pass it to createArkor.(src/arkor/index.tsにトレーナーがまだありません。createTrainer(...)を追加してcreateArkorに渡してください)。 - ビルド自体が失敗(
src/arkor/の typo など)した場合Couldn't read manifest: <error>(マニフェストを読み取れませんでした:<error>)。
POST /api/train を送ります。バックエンドはサブプロセスで arkor start を spawn し、stdout / stderr を生テキストとしてストリーム返却します。整形済みログボックスは自動スクロールし、表示されるのはターミナルで arkor start を走らせたときの出力そのものです。
トレーナー選択やフラグを渡す入力フォームはありません: Studio は常に createArkor で登録されたトレーナーを走らせ、arkor start は .arkor/build/index.mjs があれば再利用します。同じページで複数回クリックする間に src/arkor/ の編集は自動では拾われません。編集の合間に Run training ページをリロード(あるいはターミナルから arkor build)してから次のクリックをしてください。具体的なリビルドルールは CLI § build / start を参照。
「最初のジョブ」で起きていること
Run training をクリックすると、2 つのフェーズが続きます:- GPU の確保。 ジョブは
Warming up GPUと表示されます。Loss チャートはWaiting for GPUのプレースホルダー、イベントリストは空のままで、Metadata サイドバーの Phase 行はWarming up GPU、GPU warm-up タイマーが動きます。このフェーズの時間は状況次第です。直前のジョブで warm な状態の GPU が残っていれば普通は 1 分以内ですが、cold な状態から立ち上げる必要がある場合は数分かかることがあります。なぜそうなるかは Quickstart を参照。 - 学習本体。
training.startedが届くとステータスがRunningに変わり、Loss チャートがtraining.logフレームから更新を始め、Phase 行がTraining runになります。これが Quickstart のテンプレート表にある 7〜12 分のウィンドウです。
Jobs リスト
Jobs リストはマウント時に 1 度、その後 5 秒ごとにGET /api/jobs をポーリングします。手動リフレッシュボタンはなく、間隔は固定です。
リストはバックエンドが返した順そのままを表示します。クライアント側のフィルタ、検索、ページングはありません。プロジェクトにジョブがまだ無いとき、パネルは
No jobs yet.(ジョブはまだありません)と読みます。
Job 詳細
#/jobs/:id は EventSource 経由で GET /api/jobs/:id/events への Server-Sent Events 接続を開きます。ページは 5 つの名前付きイベントとストリーム終端を待ち受けます。
下の各行で、イベントログはイベント名をメッセージとは別カラムで表示します。表内の「メッセージ」は JobDetail.pushEvent() が SSE ペイロードから生成する文字列です。
ストリームエラーは
Event stream interrupted. という別バナーが loss チャート / events ログのカード群の上に表示され(ログ行としては追加されません)、次の SSE フレーム到着でバナーは消えます。再接続はブラウザーの EventSource の retry 挙動に任されます。
イベントログは 直近 500 件 だけを保持します(新着につれて古いエントリが消えていきます)。SSE の名前付きイベントから描画するスクロールリストで、フォレンジック用ではなく素早い目視確認のためのものです。完全な履歴はクラウド API を直接見てください。
Loss チャートは training.log イベントから描画される SVG プロットです。Y 軸は最小値と最大値によるスケーリング、X 軸はステップ番号で、最大 2 系列を表示します:
- Training loss — 実線のティール色。数値
lossを含むイベントごとに 1 頂点。 - Eval loss — 破線のピンク色(点マーカー付き)。数値
evalLossを含むイベント(通常はevalSteps刻み)から描画。系列はイベントから直接構築するため、evalLossのみを持ちlossを含まない eval-only フレームも線・凡例・統計に反映されます。Eval ポイントが 1 つも来ていない間は凡例にも表示されません。
loss / evalLoss のうち存在する値が表示されます(eval-only ステップでは loss 値は出ず、その逆も同様)。チャートは loss または evalLoss のいずれかが数値であるイベントが 1 件以上届くまで Waiting for training.log events…(training.log イベント待ち)プレースホルダーを表示します。両方とも null / 省略の training.log フレームはカウントされません。
上級モード(Advanced metrics)
チャートヘッダーの Advanced トグルを ON にすると、系列ごとの統計パネルが現れます。各カードに表示される項目:- Mean loss ± 95% CI — Loss 値の標本平均と 95% 信頼区間の半幅(Student の t 分布。n > 31 では z = 1.96 にフォールバック)。
- Std dev と Variance — Bessel 補正済みの不偏推定量(
ddof=1)。 - p90 と p95 — numpy のデフォルトに合わせた線形補間パーセンタイル。
evalLoss を含む training.log イベントが届くまでは空のままです。
このページがしないこと
- キャンセルボタンなし。 動作中ジョブを止めるには、トレーナーを駆動する自前コードから
trainer.cancel()を呼んでください。Studio は今日 UI で公開していません。 - Artifact ブラウザーなし。 完了ジョブの artifact 数は出ますが、個別 artifact をリスト/リンクしません。完全な artifact アクセスにはクラウド API を、あるいは学習中の SDK の
onCompleted({ artifacts })コールバックを使ってください。 - 学習途中の推論なし。 Playground は完了ジョブ専用です(Playground 参照)。学習途中のライブ確認には SDK の
onCheckpoint({ infer })を使ってください。