メインコンテンツへスキップ

Documentation Index

Fetch the complete documentation index at: https://arkor-92aeef0e-eng-736.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

学習の開始とジョブの観察

学習関連の画面は 3 ルートに分かれています: Overview#/)に Run training アクション、Jobs#/jobs)は検索・フィルタ・自動更新付きの一覧、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>)。
ボタンは学習の進行中、およびトレーナー未解決のとき無効化されます。 クリックすると Studio は POST /api/train を送ります。バックエンドはサブプロセスで arkor start を起動し、stdout / stderr を生テキストとしてストリーミングで返します。整形済みログボックスは自動スクロールし、表示されるのはターミナルで arkor start を走らせたときの出力そのものです。 トレーナー選択やフラグを渡す入力フォームはありません: Studio は常に createArkor で登録されたトレーナーを走らせ、arkor start.arkor/build/index.mjs があれば再利用します。同じページで複数回クリックする間に src/arkor/ の編集は自動では拾われません。編集の合間に Run training ページをリロード(あるいはターミナルから arkor build)してから次のクリックをしてください。具体的なリビルドルールは CLI § build / start を参照。

Jobs リスト

Jobs ページ(#/jobs)はマウント時に 1 度、その後 5 秒ごとに GET /api/jobs をポーリングします。カードヘッダーの Refresh アイコンで手動でも即座に再読込できます(リクエスト中はアイコンが回転します)。 クライアント側で 2 段階のフィルタが働きます:
  • Search(名前 or ID、大文字小文字を無視)。テキスト入力で Job.name または Job.id がクエリを含む行に絞ります。
  • Status フィルタチップ: All / Running / Completed / Queued / Failed / Cancelled。常に 1 つだけアクティブ。
空状態は 2 種類を区別します: No jobs yet(プロジェクトに本当にジョブが 1 件も無い。説明文で Overview に作成導線がある旨を平文で言及するのみで、ボタンやリンクは設けていません)と No matches(検索 / フィルタで全行が隠れている。条件を緩めるかクエリをクリア)。
ソース
StatusJob.statusqueued / running / completed / failed / cancelled)。セルは色付け用の CSS クラスを持つ。
NameJob.name#/jobs/<id> にリンク。
Creatednew Date(Job.createdAt).toLocaleString()
IDJob.id、等幅フォント。
リストはバックエンドが返した順をそのまま表示します。クライアント側のページングはありません(可視行レデューサーはサーバーが完全な一覧を返す前提です)。

Job 詳細

#/jobs/:idEventSource 経由で GET /api/jobs/:id/events への Server-Sent Events 接続を開きます。ページは 5 つの名前付きイベントとストリーム終端を待ち受けます。 下の各行で、イベントログはイベント名をメッセージとは別カラムで表示します。表内の「メッセージ」は JobDetail.pushEvent() が SSE ペイロードから生成する文字列です。
イベントページへの効果
training.startedステータスが running に変わる。イベントログのメッセージは生の JSON ペイロード(イベントごとの整形なし)。
training.logsteploss、そして(含まれていれば)evalLoss が Loss チャートのデータ配列に追加。イベントログのメッセージは step=<n> で始まり、そのステップで数値である方だけ loss=<value> evalLoss=<value> が追記される(null / 非数値のフィールドはセグメントごと省略)。eval-only フレームでは step=<n> evalLoss=<value> のように描画される。
checkpoint.savedイベントログのメッセージは step=<n>。チャートには影響なし。
training.completedステータスが completed に変わる。イベントログのメッセージは <n> artifact[s]。artifact 数自体は Metadata サイドバーの Artifacts 行に表示される。
training.failedステータスが failed に変わる。イベントログのメッセージはペイロードの error 文字列で、同じテキストの赤いバナーがチャート上部にも表示される。
endページが EventSource をクローズ。再接続なし。
ストリームエラーは 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)。
  • p90p95 — numpy のデフォルトに合わせた線形補間パーセンタイル。
Eval カードは数値 evalLoss を含む training.log イベントが届くまでは空のままです。

このページがしないこと

  • キャンセルボタンなし。 動作中ジョブを止めるには、トレーナーを実行している自前コードから trainer.cancel() を呼んでください。現状 Studio は UI でこの機能を公開していません。
  • Artifact ブラウザーなし。 完了済みジョブの artifact 数は出ますが、個別 artifact をリスト/リンクしません。完全な artifact アクセスにはクラウド API を、あるいは学習中の SDK の onCompleted({ artifacts }) コールバックを使ってください。
  • 学習途中の推論なし。 Playground は完了済みジョブ専用です(Playground 参照)。学習途中のライブ確認には SDK の onCheckpoint({ infer }) を使ってください。