Hugging Face Upskill:通过 Agent Skills 将专家能力转移到更小的模型

Hugging Face 推出了 upskill,这是一款旨在将复杂领域专长从最先进(SOTA)模型转移到更小、更廉价或开源模型的工具。通过生成和验证“代理技能”——结构化的指令和代码文件——upskill 使开发者能够提升本地模型在专门任务上的性能,例如为 diffusers 模型编写 CUDA 内核,同时降低运营成本。

代理技能:能力转移的媒介

代理技能是一种使用标准化文件(如用于指令的 Markdown 和用于代码的脚本)来定义模型上下文的方法。这种格式使得能力能够在不同模型和工具之间轻松生成、共享和审查。它们在特定领域或模型无法自行可靠解决的困难问题上尤为有效。

虽然基于现有文档的简单技能可以提升某些模型的性能,但对其他模型可能会导致性能下降或增加 token 使用量。这就需要严格的评估过程,以确保技能真正带来能力的“提升”。

Upskill 工作流:从教师到学生

upskill 过程遵循教师-学生架构,将专长从高端模型转移到更易获取的模型。

1. 生成技能(教师)

该过程从一个“教师”模型(例如 Claude Opus 4.5)交互式执行复杂任务开始。这可以通过 Claude Code 完成,代理在其中构建内核并导出执行轨迹。教师模型随后将该轨迹转换为技能文件。创建这些技能的主要方式有三种:

  • 指示代理在同一会话中创建技能文件。
  • 使用 Anthropic 的 “skill creator” 技能。
  • 使用 upskill 工具直接从轨迹生成技能。

2. 验证技能

为确保技能可用,upskill 根据任务轨迹生成测试用例。随后比较模型在有无技能情况下的表现。成功的技能是指教师模型仍能保持其性能,证明该技能已准确捕获必要的任务逻辑。

3. 部署到更小模型(学生)

验证后,技能被转移到更小或开源模型。upskill 提供 eval 命令以在这些“学生”模型上运行生成的测试用例。

在编写 CUDA 内核的基准测试中,upskill 展示了显著提升:

  • 准确率提升: 一个本地模型(unsloth/GLM-4.7-Flash-GGUF:Q4_0)在使用该技能后,准确率从 40% 提升至 85%(+45%)。
  • Token 优化: 某些模型,如 moonshotai/Kimi-K2-Thinking,在准确率提升的同时也降低了 token 使用量。相反,对于 Claude Opus 4.5,该技能增加了 token 使用量却没有性能提升,表明对教师模型而言该技能是冗余的。

案例研究:CUDA 内核开发

upskill 被用于使用 Hugging Face kernels 库构建 CUDA 内核的专门任务。生成的 kernel-builder-cuda-kernels 技能编码了深厚的领域专长,否则需要数小时的手动文档研究,包括:

  • GPU 架构: 目标为 NVIDIA H100(计算能力 9.0)。
  • 内存管理: 将共享内存对齐到 128 字节。
  • 异步操作:__CUDA_ARCH__ >= 900 实现异步内存拷贝。
  • 项目结构: 定义 build.toml 配置和 PyTorch C++ 绑定。

有了此技能,模型可以为复杂请求生成完整的项目结构和 CUDA 实现,例如针对 H100 优化的“融合 LayerNorm + GELU 内核”。

技术实现与使用

upskill 可通过 pip 安装,支持多种生成器,包括 Claude Opus 4.5、OpenAI,以及通过兼容 OpenAI 接口的本地模型。

关键命令

  • Generation: upskill generate "task description" --from ./trace.md
  • Evaluation: upskill eval ./skills/my-skill/ --model haiku --model sonnet
  • Local Model Generation: upskill generate "task" --model opus --eval-model "local-model-name" --eval-base-url http://localhost:8080/v1

技能规范

技能按照 Agent Skills 规范保存在目录中,通常包含:

  • SKILL.md:主要指令(例如 CUDA 内核技能约 520 个 token)。
  • skill_meta.json:元数据以及用于验证的生成测试用例。

这些技能可在支持该规范的工具之间迁移,包括 Claude Code、Codex 和 Cursor。

Sources