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

スターターテンプレートのカスタマイズ

pnpm create arkor は動くトレーナーを src/arkor/trainer.ts に書き出します。テンプレートは出発点で、どのフィールドも変更してよく、多くのプロジェクトは最初の数回の学習でデフォルトを卒業します。このレシピは最初に出てくる 4 つのカスタマイズを順に見ます。 出発点のトレーナー(--template triage 直後)はこんな形:

1. データセットを差し替える

データセットはモデルが実際に学ぶものです。一番よくある変更は、デモデータセットから自分のデータセットへの切り替えです。 別の HuggingFace データセットを使う。 name を渡し、必要なら splitsubset を固定:
Blob URL を使う(バックエンドが取得できる任意の HTTPS URL)。Hub に置けないデータに便利:
今のところ { type: "file" } オプションはありません。ローカルファイルはバックエンドが到達できる場所にホストしてください。SDK § DatasetSource を参照。

2. ハイパーパラメーターを調整する

TrainerInput 上の型付きオプションは安全なツマミです。省略すれば各々クラウド API のデフォルトを取ります:
トレーナーファイル自体を超高速で反復したいときは dryRun を立てます:
dryRun: true はデータセットを切り詰め、ステップ数を制限してフルパイプラインを走らせます。GPU 時間は使います(スモークテストであり、何もしないわけではありません)が、学習は数分で終わるので、長い学習にコミットする前に設定とコールバックの挙動を確認できます。SDK § createTrainer を参照。 上級者向けフィールド(warmupStepsloggingStepssaveStepsevalStepstrainOnResponsesOnlydatasetFormatdatasetSplit)は unknown として型付けされ、クラウド API にそのまま転送されます。バックエンドの想定形を既に知っている場合のみ使ってください。SDK は渡す値を型チェックしません。

3. ライフサイクルコールバックを追加する

このセクションの他のレシピは、いずれもコールバックで噛み合います。生成済みのトレーナーでも、コールバックを 1 つずつ足していけます:
このセクションのレシピは、最もよくある組み合わせです: 学習に合うものを選んでください。トレーナーファイルはただの TypeScript なので、自由に合成できます。

4. ベースモデルを変える

model フィールドはクラウド API に文字列としてそのまま転送されます。今日のキュレートパスは unsloth/gemma-4-E4B-it(すべてのスターターテンプレートに同梱)。クラウド API がそれ以外のどの ID を受け付けるかを決めます。サポートされない値を送ると上流から 4xx が返り、training.failed イベントにバックエンドのエラーメッセージが乗ります。
別のベースを試すのはロードマップに明示的に挙がっています(プロジェクト README の「What’s coming next」を参照)。それが届くまでは、model フィールドは開いたメニューではなく、単一のサポート値として扱ってください。

全部まとめる

上記すべてのカスタマイズを使ったトレーナーはこんな形:
これでもまだ 30 行のファイルで、上から下まで読めます。テンプレートの要点はそれが吐く具体的なコードではなく、実際の学習がすでに配線された状態の形を渡してくれること。上のカスタマイズはエディタセッション 1 つで届く距離です。 Early Stopping を上に重ねるなら、Early Stopping を参照してください。Abort された学習がバックエンドの GPU を回し続けないようにする AbortController + trainer.cancel() のペアを示しています。