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。