SuperAPI AI 工具集

transformers

智能体与模型

查看项目

更新于 10-21 16:20

技能介绍

用途

Hugging Face Transformers 库提供对数千个预训练模型的访问,任务范围覆盖自然语言处理(NLP)、计算机视觉、音频和多模态领域。该技能用于加载模型、执行推理,并在自定义数据上进行微调。

安装

资料中说明该技能针对 transformers 5.12.0(当前 PyPI 发布版本;2026 年 6 月)测试。要求 Python 3.10+;torch extra 当前要求 PyTorch 2.4+。

基础安装命令:

uv pip install "transformers[torch]==5.12.0" huggingface_hub==1.19.0 datasets==5.0.0 evaluate==0.4.6 accelerate==1.14.0

视觉任务需追加:

uv pip install timm==1.0.27 pillow==12.2.0

音频任务需追加:

uv pip install librosa==0.11.0 soundfile==0.14.0

资料说明这些版本固定用于可复现的示例;探索性工作可在查看 Transformers 与 Hub 发布说明中的 API 变更后再放宽版本。检查版本:

import transformers
print(transformers.__version__)

认证

Hub 上许多模型是受限或私有的,加载前需先认证。

推荐使用 CLI 登录(令牌存储在 ~/.cache/huggingface/token):

hf auth login

Python 方式:

from huggingface_hub import login
login()  # 交互式提示;不要在脚本中硬编码令牌

服务器 / CI:在环境中设置 HF_TOKEN(切勿将令牌提交到 git 或 shell 配置文件):

export HF_TOKEN="..."  # 从密钥管理器读取令牌,而非源代码

令牌获取地址:https://huggingface.co/settings/tokens

安全提示:切勿将令牌粘贴到 notebook、仓库或共享配置中。优先使用 hf auth login,而不是在 .bashrc 或 .zshrc 中导出令牌。使用能满足需求的最小令牌范围:私有或受限模型下载用 read,仅上传用 write。若长期运行的环境不应在每次 Hub 请求时发送已存储令牌,可设置 HF_HUB_DISABLE_IMPLICIT_TOKEN=1,仅在需要认证处传入令牌。

Transformers v5

Transformers v5 仅支持 PyTorch(TensorFlow 和 JAX 后端已移除)。从 v4 升级请参阅 v5 迁移指南。新项目应将 transformers 5.x 与 huggingface_hub 1.x 搭配使用。

受限或自定义架构:在 Hub 上接受模型许可后,仅当模型卡要求你已审查过的自定义代码时,才使用 trust_remote_code=True 加载。

缓存位置:设置 HF_HOME 控制所有 Hugging Face 缓存,或仅用 HF_HUB_CACHE 控制 Hub 文件。仅在所需模型快照已缓存后,才使用 HF_HUB_OFFLINE=1。

快速开始

使用 Pipeline API 可快速推理,无需手动配置:

from transformers import pipeline

# 文本生成(因果语言模型优先使用 max_new_tokens)
generator = pipeline("text-generation", model="Qwen/Qwen2.5-1.5B")
result = generator("The future of AI is", max_new_tokens=50)

# 文本分类
classifier = pipeline("text-classification")
result = classifier("This movie was excellent!")

# 问答
qa = pipeline("question-answering")
result = qa(question="What is AI?", context="AI is artificial intelligence...")

核心能力

  1. Pipelines 快速推理:用于跨多种任务的简单、优化推理。支持文本生成、分类、NER、问答、摘要、翻译、图像分类、目标检测、音频分类等。适用场景:快速原型、简单推理任务、无需自定义预处理。详见 references/pipelines.md。

  2. 模型加载与管理:加载预训练模型,可对配置、设备放置和精度进行细粒度控制。适用场景:自定义模型初始化、高级设备管理、模型检查。详见 references/models.md。

  3. 文本生成:使用 LLM 生成文本,支持多种解码策略(贪心、束搜索、采样)和控制参数(temperature、top-k、top-p)。适用场景:创意文本生成、代码生成、对话式 AI、文本补全。详见 references/generation.md。

  4. 训练与微调:使用 Trainer API 在自定义数据集上微调预训练模型,支持自动混合精度、分布式训练和日志记录。适用场景:任务特定模型适配、领域适配、提升模型性能。详见 references/training.md。

  5. 分词:将文本转换为 token 和 token ID 作为模型输入,支持填充、截断和特殊 token 处理。适用场景:自定义预处理流水线、理解模型输入、批处理。详见 references/tokenizers.md。

常见模式

模式 1:简单推理

pipe = pipeline("task-name", model="model-id")
output = pipe(input_data)

模式 2:自定义模型使用

from transformers import AutoModelForCausalLM, AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained("model-id")
model = AutoModelForCausalLM.from_pretrained("model-id", device_map="auto")

inputs = tokenizer("text", return_tensors="pt")
outputs = model.generate(**inputs, max_new_tokens=100)
result = tokenizer.decode(outputs[0])

模式 3:微调

from transformers import Trainer, TrainingArguments

training_args = TrainingArguments(
    output_dir="./results",
    num_train_epochs=3,
    per_device_train_batch_size=8,
)

trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=train_dataset,
)

trainer.train()

参考文档

  • Pipelines:references/pipelines.md — 所有支持的任务与优化
  • Models:references/models.md — 加载、保存与配置
  • Generation:references/generation.md — 文本生成策略与参数
  • Training:references/training.md — 使用 Trainer API 微调
  • Tokenizers:references/tokenizers.md — 分词与预处理

智能体操作流程

  1. 检查环境。确认 Python 环境与库版本(python -c "import pkg; print(pkg.version)"),并检查数据的形状、类型与缺失值。
  2. 明确输入。从数据或用户处确认格式、标识符与参数。任何会改变结果的取值都应询问而非猜测。
  3. 先运行小规模版本。先在样本或单个 fold 上运行,检查运行时间与内存。
  4. 使用上述说明与参考执行完整任务。
  5. 验证结果。使用留出数据、固定随机种子与合适的指标;检查泄漏;报告不确定性(置信区间、跨种子标准差)。
  6. 报告。说明运行了什么(版本、命令、参数)、检查了什么、还有什么不确定。

异常处理:

  • 内存不足或执行极慢:下采样、使用分块或惰性计算,或减小模型规模,并告知用户所做的更改。
  • 说明中的函数、标志或端点在当前安装版本中缺失:查阅已安装版本自身的文档(help()、--help、官方文档),适配并告知用户。切勿臆造 API。
  • 必需的输入、标识符或参数不明确:询问用户,或在运行前明确说明假设。

完整性规则

  • 切勿捏造结果、参数、标识符、引用或统计量。若某项无法运行或验证,应如实说明。
  • 切勿报告本次会话中未计算的指标;展示产生每个数字的代码路径。
  • 将此处版本相关的细节视为可能过时:对照已安装版本的官方文档进行确认。
  • 在涉及花钱、占用共享 GPU 或云配额、触碰个人或患者数据、或不可撤销的操作前,先询问。

相关技能

  • axolotl:提供使用 Axolotl 微调大语言模型的指导,涵盖 YAML 训练配置、LoRA 与 QLoRA、偏好训练等。
  • unsloth:提供使用 Unsloth 微调大语言模型的指导,该库通过 LoRA 与 QLoRA 实现更快、更低内存的训练。
  • huggingface-tokenizers:提供 HuggingFace Tokenizers 库(Rust 核心,带 Python 与 Node.js 绑定),用于训练和使用 BPE、WordPiece 与 Unigram 等。