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

Documentation Index

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

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

Studio は arkor dev 実行時に得られるローカル Web UI です。サインインする別サービスではありません。あなたのマシーン上で起動し、同じ Arkor CLI プロセスと話し、dev サーバーを止めれば消えます。

Studio の役割

3 つの仕事:
  1. 学習を開始する。 “Run training” ボタンが内部で arkor start をスポーンし、ジョブをマネージドバックエンドに投入します。arkor start は既存の .arkor/build/index.mjs 成果物を実行し(無いときだけ自動ビルド)、Studio が成果物を新鮮に保つ仕組みは下記の dev ループのメモを参照してください。
  2. 学習を眺める。 ライブステータス付きのジョブ一覧、ストリーム到着とともに更新される Loss チャート、学習イベントのテール。タブで開きっぱなしにして他の作業ができます。
  3. 完成モデルを試す。 Playground ページでベースモデルや任意の完了ジョブの最終アダプタを選んでチャットできます。中間チェックポイントは Playground からはロードしません。学習中の推論には onCheckpoint コールバックをトレーナーで使ってください。
dev ループのメモ: Studio は Rolldown のウォッチャを src/arkor/ 上で常駐させ、再ビルド通知を Server-Sent Events ストリーム (/api/dev/events) で SPA に push します。ファイルを編集して保存すれば、Run training ボタンのトレーナー名表示はリロード無しで更新されます。学習が走っている最中であれば、Studio は再ビルドしたバンドルの Cloud 側 JobConfig ハッシュを、spawn 時に保存したハッシュと比較します。
  • ハッシュ一致(コールバックのみ変更)。 ランナーへ SIGUSR2 を送ります。ランナーは再ビルドされた成果物を再 import し、内部 HMR ブランド経由でトレーナーのコールバック cell をその場で差し替えます。Cloud 側の学習はそのまま継続し、GPU 時間を無駄にせず、SPA には “Callbacks hot-swapped” と短く表示されます。
  • ハッシュ不一致(モデル / データセット / ハイパーパラメータが変わった)。 ランナーへ SIGTERM を送ります。トレーナー内部の early-stop エントリが次のチェックポイントのアップロードを待ってから cancel() を発火し、SPA が再ビルドした成果物で再投入します。Cloud 側の以前のジョブはチェックポイントのアップロード完了後に cancelled 状態に遷移するので、ここまでの学習成果は artifact として保全されます。
自前のコードから(dev ループではなく)この「次のチェックポイントで止める」挙動が欲しい場合は、公開 API の abortSignal + cancel() を組み合わせて書いてください。具体的な手順は Early Stopping レシピ にあります。

Studio が動く場所

arkor dev を起動すると CLI は次を行います:
  1. Hono サーバーを 127.0.0.1:4000 で起動(ポートは -p で変更可能)。
  2. 同一オリジンで Vite + React の SPA を提供し、UI はループバックの /api/* 経由で CLI と話します。
  3. 起動ごとに CSRF トークンを発行し(~/.arkor/studio-token にモード 0600 で保存)、すべてのリクエストにこのトークンを要求します。
サーバーはループバックにのみバインドし、ループバック以外の Host ヘッダーのリクエストは拒否します。公開 URL もインバウンド接続もなく、トークンは arkor dev のたびにローテートされます。共有開発マシーンでも学習データを露出する心配なく安全に Studio を動かせます。

マネージドバックエンドとの関係

Studio はあなたの CLI が何をしているかの画面にすぎません。CLI が認証付き HTTPS でマネージドバックエンドと話し、Studio は CLI に(ループバック越しに)描画する内容を尋ねます。
Studio(ブラウザータブ)
   │  ループバック上の /api/*、CSRF トークン必須

arkor CLI(あなたのマシーン)
   │  認証付き HTTPS

Arkor マネージドバックエンド(学習、推論)
この分離があるからこそ、ブラウザーに何もログインしなくても Studio が動きます。CLI は ~/.arkor/credentials.json で既に認証情報を持っており、Studio はローカルで動いている恩恵でそれを継承します。 ~/.arkor/credentials.json がない場合の処理はエントリーポイントが決めます。arkor dev は起動時に匿名セッションをブートストラップし、必要に応じてアップグレードできるよう arkor login --oauth を案内する 1 行のヒントを出します。OAuth フローを自動で起動することはありません。例外は初回起動時に /v1/auth/cli/config 自体へ到達できないケースで、同じトランスポートエラーが再スローされて arkor dev は fail-fast で終了します(具体的な復旧手順は arkor dev を参照)。Studio サーバーの遅延ブートストラップ(認証情報が無い状態で /api/* リクエストが届いたとき)も同じ匿名フォールバックを行います。アカウントセッションを使いたい場合は、Studio をクリックする前(あるいは後)に別途 arkor login --oauth を実行してください。認証情報ファイルは共有なので、Studio は次のリクエストでアカウントセッションを拾います。

実際に見えるもの

現状のビューはあえて小さく保たれています:
  • Jobs。 ステータス、名前、作成時刻、ID。数秒ごとにポーリング。
  • Job 詳細。 Loss チャート、ログのテール(直近のイベント)、ライブステータス。Server-Sent Events 経由でストリームされ、手動リロードなしで最新のままです。
  • Playground。 アダプタセレクタ(ベースモデル or 任意の完了ジョブの最終アダプタ)、チャット UI、ストリーミングレスポンス。呼び出しは CLI を経由して、その先のマネージド推論エンドポイントに届きます。Playground は完了済みジョブだけを並べます。学習中に中間チェックポイントで推論したい場合は、代わりに onCheckpoint コールバックを使ってください。
各ビュー(Run training、Job 詳細、Playground)のウォークスルーは Studio セクションにあります。

Studio を使うべきでない場面

Studio は開発ツールです。あなたのマシーンで動き、ループバックのみで、arkor dev が立ち上がっている間だけ存在します。ファインチューン済みモデルのプロダクション利用では、Studio にユーザーを向けるのではなく、自分のアプリケーションコードから(あるいはサービング層から)infer を呼んでください。