Hugging Face Upskill: エキスパートの能力をエージェントスキルを通じて小型モデルへ転送

Hugging Face は upskill を導入しました。このツールは、最先端(SOTA)モデルから小型でコストが低い、あるいはオープンソースのモデルへ複雑なドメイン専門知識を転送することを目的としています。「エージェントスキル」―構造化された指示とコードファイル―を生成・検証することで、upskill は開発者がローカルモデルの専門タスク(例: diffusers モデル向けの CUDA カーネル作成)における性能を向上させ、運用コストを削減できるようにします。

Agent Skills: 能力転送の媒体

エージェントスキルは、指示用の Markdown とコード用のスクリプトといった標準化されたファイルでモデルコンテキストを定義する手法です。この形式により、能力を簡単に生成、共有、レビューでき、さまざまなモデルやツール間で活用できます。特に、モデル単独では信頼性のある解決が難しいドメイン固有や高度な問題に対して有効です。

単純なスキル(既存ドキュメントに基づくもの)は一部のモデルで性能向上をもたらす一方、他のモデルでは性能低下やトークン使用量増加を招くことがあります。そのため、スキルが実際に「能力向上」をもたらすかどうかを厳密に評価するプロセスが必要です。

Upskill のワークフロー: 教師から学生へ

upskill のプロセスは、教師‑学生アーキテクチャに従い、高性能モデルからよりアクセスしやすいモデルへ専門知識を移転します。

1. スキルの生成(教師側)

まず「教師」モデル(例: Claude Opus 4.5)が複雑なタスクを対話的に実行します。これは Claude Code を用いてエージェントがカーネルを構築し、実行トレースをエクスポートする形で行われます。教師モデルはこのトレースをスキルファイルに変換します。スキル作成には主に次の 3 つの方法があります。

  • 同一セッション内でエージェントにスキルファイルの作成を指示する。
  • Anthropic の "skill creator" スキルを利用する。
  • upskill ツールを使い、トレースから直接スキルを生成する。

2. スキルの検証

スキルが機能することを確認するため、upskill はタスクトレースに基づくテストケースを自動生成します。その後、スキルあり・なしでモデルの性能を比較します。教師モデルが性能を維持できれば、スキルがタスクロジックを正確に捉えていると判断されます。

3. 小型モデルへの展開(学生側)

検証が完了したスキルは、小型またはオープンソースモデルへ転送されます。upskilleval コマンドを提供し、これらの「学生」モデル上で生成されたテストケースを実行できます。

CUDA カーネル作成のベンチマークでは、upskill は以下のような顕著な改善を示しました。

  • 精度向上: ローカルモデル(unsloth/GLM-4.7-Flash-GGUF:Q4_0)は、スキル使用時に精度が 40% から 85%(+45%)に上昇しました。
  • トークン最適化: moonshotai/Kimi-K2-Thinking などのモデルは、精度向上と同時にトークン使用量が減少しました。一方、Claude Opus 4.5 ではスキルがトークン使用量を増やすだけで性能向上が見られず、教師モデルに対してはスキルが冗長であることが示されました。

ケーススタディ: CUDA カーネル開発

upskill は Hugging Face の kernels ライブラリを用いた CUDA カーネル構築という専門タスクに適用されました。生成された kernel-builder-cuda-kernels スキルは、数時間に及ぶ手動のドキュメント調査が必要だった深いドメイン知識をコード化しています。具体的には以下を含みます。

  • GPU アーキテクチャ: NVIDIA H100(コンピュート能力 9.0)を対象。
  • メモリ管理: 共有メモリを 128 バイト単位でアライン。
  • 非同期操作: __CUDA_ARCH__ >= 900 向けに非同期メモリコピーを実装。
  • プロジェクト構成: build.toml 設定や PyTorch C++ バインディングの定義。

このスキルを用いることで、モデルは「H100 向けに最適化された fused LayerNorm + GELU カーネル」などの複雑な要求に対し、完全なプロジェクト構造と CUDA 実装を自動生成できます。

技術実装と使用方法

upskill は pip でインストール可能で、Claude Opus 4.5、OpenAI、OpenAI 互換エンドポイントを持つローカルモデルなど、さまざまなジェネレータをサポートします。

主なコマンド

  • 生成: upskill generate "task description" --from ./trace.md
  • 評価: upskill eval ./skills/my-skill/ --model haiku --model sonnet
  • ローカルモデル生成: upskill generate "task" --model opus --eval-model "local-model-name" --eval-base-url http://localhost:8080/v1

スキル仕様

スキルは Agent Skills 仕様に従ったディレクトリに保存され、通常は以下を含みます。

  • SKILL.md: 主指示(例: CUDA カーネルスキルは約 520 トークン)。
  • skill_meta.json: メタデータと検証に使用したテストケース。

これらのスキルは Claude Code、Codex、Cursor など、仕様をサポートするツール間でポータブルに利用できます。

Sources