Documentation Index
Fetch the complete documentation index at: https://docs.arkor.ai/llms.txt
Use this file to discover all available pages before exploring further.
トレーナー制御
createTrainer は次の 3 メソッドを持つ Trainer オブジェクトを返します:
arkor start と Studio の “Run training” ボタンはどちらも start() の後に wait() を呼びます。これらを自分で呼ぶのは、学習を自前のコード(サーバー、スクリプト、独自 CLI)に組み込むときだけです。
start()
- ジョブをクラウド API に投入し、バックエンドが受理した時点で resolve。返ってくる
jobIdは Studio で見えるもの、SDK のTrainingJob.idと同じです。 - 冪等: 同じトレーナーで
start()を 2 回目に呼んでも再投入せず同じjobIdを返します(packages/arkor/src/core/trainer.ts:275-289)。 - イベントストリームを開かず、コールバックを発火 しません。それをするのは
wait()です。
wait()
- 学習の SSE イベントストリームを開き、各フレームをコールバックにディスパッチし、ストリームが
training.completedかtraining.failedを報告したときに終端のTrainingResultで resolve します。 - まだ
start()を呼んでいなければ代わりに呼んでくれます。 - 5 つのライフサイクルコールバックはすべて
wait()内から発火します。start()を呼んでwait()を呼ばないと、学習がバックエンドで進行していてもコールバックは動きません。 - 一過性の SSE エラーでは再接続します(下記)。
cancel()
start()がまだ呼ばれていなければcancel()は何もしません(:388-389で早期 return)。- そうでなければバックエンドにキャンセルリクエストを送ります。
- ベストエフォート。 SDK は終端ステータスでショートサーキットしません。学習が既に completed / failed / cancelled なら、バックエンドは non-2xx を返すことがあり
cancel()は reject します。投機的に呼ぶならtry / catchで囲んでください。
abortSignal
abortSignal は あくまでローカルの wait() ループ をコントロールします。シグナルが abort すると:
- 進行中の SSE fetch が abort される(
trainer.ts:325-328)。 - 動作中の再接続バックオフ
delayがsignal.reasonで reject される(trainer.ts:178)。 - シグナルが abort されている場合、
handleFailureが再 throw する(trainer.ts:308)。 - 結果として
wait()は abort 時に resolve ではなく reject する。
cancel() を呼ばず、バックエンドにも何も送りません。マネージド側ではジョブが GPU 時間を使い続けます。
両方の効果(ローカルでの待機停止と、バックエンドの学習停止)が欲しいなら別々にやります:
abortSignal。「バックエンド側で学習を止めたい」なら cancel()。
再接続
wait() はデフォルトで一過性の障害を超えて SSE ストリームを生かし続けます:
- 少なくとも 1 フレーム受信した後のクリーンなストリーム EOF は、即時再接続をベース遅延(
initialReconnectDelayMs、デフォルト 1000 ms)で起こし、失敗予算には数えません。ストリームはLast-Event-IDで再開します。 - 接続エラー、または 1 フレームも受信せずの EOF は失敗としてカウントされ
handleFailureを経由します: 指数バックオフはinitialReconnectDelayMs * 2 ** attempt、各試行の遅延はmaxReconnectDelayMs(デフォルト 60 000 ms)にクランプ、連続失敗カウントはmaxReconnectAttemptsで上限。 maxReconnectAttemptsのデフォルトはundefined(連続失敗無制限)。TrainerInputから設定はできず、reconnectDelayMsとmaxReconnectDelayMsも含めcreateTrainerの第 2 引数context(@internal注釈付き、変更され得る)からのみ設定できます。多くのプロジェクトでこれは、ジョブが走っている限り一過性 SSE 失敗が黙ってリトライされ続ける、ということを意味します。
wait() の reject に頼るのではなくコールバック内で catch してください。
ツープロセスパターン
CLI 以外で使うときの典型的な形は、長寿命のトレーナー参照を持って自前のコードでstart、wait、cancel を制御するものです:
runTrainer のエントリ解決を除けば、arkor start がやっているのと機能的に同じです。