Transformers 技能介绍
一、用途
该技能用于处理自然语言处理、计算机视觉、音频以及多模态任务中的机器学习模型。资料中明确提到,可将其应用于通过 pipeline 进行的快速推理、通过 Trainer API 进行的完整训练,以及使用多种解码策略的灵活文本生成。
二、主要能力
- 通过 Pipelines 快速推理
资料指出,若需在没有复杂设置的情况下快速推理,可使用 pipeline() API。Pipeline 封装了分词、模型调用与后处理。示例包括:
文本分类:pipeline("text-classification") 对文本进行分类。 命名实体识别:pipeline("token-classification") 识别实体。 问答:pipeline("question-answering") 根据上下文回答问题。 文本生成:pipeline("text-generation", model="gpt2") 生成文本。 图像分类:pipeline("image-classification") 对图像进行分类。
使用场景:快速原型设计与测试、无需自定义逻辑的简单推理任务、演示与示例、标准任务的生产推理。
可用 pipeline 任务按模态划分:
- 自然语言处理:text-classification、token-classification、question-answering、summarization、translation、text-generation、fill-mask、zero-shot-classification
- 视觉:image-classification、object-detection、image-segmentation、depth-estimation、zero-shot-image-classification
- 音频:automatic-speech-recognition、audio-classification、text-to-audio
- 多模态:image-to-text、visual-question-answering、image-text-to-text
- 模型训练与微调
使用 Trainer API 进行完整模型训练,资料称其支持分布式训练、混合精度与高级优化。基本流程:加载并分词数据(结合 datasets 的 load_dataset 与 tokenizer)、加载模型(如 AutoModelForSequenceClassification)、配置 TrainingArguments、创建 Trainer 并调用 trainer.train()。
资料列出的关键训练特性包括:混合精度训练(fp16/bf16)、分布式训练(多 GPU、多节点)、梯度累积、带 warmup 的学习率调度、检查点管理、超参数搜索、推送至 Hugging Face Hub。
- 文本生成
资料介绍使用多种解码策略生成文本,包括贪心解码、束搜索、采样等。示例展示:贪心解码(model.generate 设置 max_new_tokens)、束搜索(num_beams、early_stopping)、采样(do_sample、temperature、top_p、top_k)。
生成参数包括:temperature 控制随机性(0.1-2.0)、top_k 从最高概率的 k 个词元中采样、top_p 核采样阈值、num_beams 束搜索的束数量、repetition_penalty 抑制重复、no_repeat_ngram_size 防止重复 n-gram。
- 任务专用模式
资料给出常见任务的模型类选择:文本分类用 AutoModelForSequenceClassification;命名实体识别(词元分类)用 AutoModelForTokenClassification;问答用 AutoModelForQuestionAnswering;摘要与翻译(Seq2Seq)用 AutoModelForSeq2SeqLM;图像分类用 AutoModelForImageClassification。
- Auto 类
资料指出可使用 Auto 类根据模型检查点自动选择架构,包括 AutoTokenizer、AutoModel、AutoModelForSequenceClassification、AutoModelForTokenClassification、AutoModelForQuestionAnswering、AutoModelForCausalLM、AutoModelForMaskedLM、AutoModelForSeq2SeqLM、AutoProcessor、AutoImageProcessor。
- 模型加载与优化
资料列出设备放置(device_map="auto")、混合精度(torch_dtype 为 float16 或 bfloat16)、量化(BitsAndBytesConfig,如 load_in_4bit=True 与 bnb_4bit_compute_dtype)。
三、使用方式
资料给出三个常见工作流:
快速推理工作流:选择适合任务的 pipeline;加载 pipeline 并可指定模型;传入输入获取结果;批处理时传入输入列表。参见 scripts/quick_inference.py。
训练工作流:使用 🤗 Datasets 加载与预处理数据集;用合适的 tokenizer 分词;加载特定任务的预训练模型;配置 TrainingArguments;用模型、数据和 compute_metrics 创建 Trainer;用 trainer.train() 训练;用 trainer.evaluate() 评估;保存模型并可选择推送至 Hub。参见 scripts/fine_tune_classifier.py。
文本生成工作流:加载因果或序列到序列语言模型;加载 tokenizer 并对提示分词;选择生成策略;配置生成参数;用 model.generate() 生成;将输出词元解码为文本。参见 scripts/generate_text.py。
资料还提供可直接运行的命令:python scripts/quick_inference.py、python scripts/fine_tune_classifier.py、python scripts/generate_text.py。
references/ 目录包含参考文档:api_reference.md(核心类与 API)、pipelines.md(按模态组织的所有 pipeline)、training.md(训练模式、TrainingArguments、分布式训练、回调)、generation_strategies.md(文本生成方法、解码策略、参数)、task_patterns.md(常见任务完整工作流)。资料建议在处理具体任务或功能时加载相关参考文件。
四、适用场景
资料明确列举:快速原型设计与测试、无需自定义逻辑的简单推理任务、演示与示例、标准任务的生产推理;以及文本分类、命名实体识别、问答、摘要、翻译、文本生成、图像分类等具体任务;还包括完整训练与微调、文本生成的多策略应用。
五、限制与其它信息
资料中的最佳实践包括:使用 Auto 类以适配不同模型架构;批处理提升效率;设备管理使用 device_map="auto";内存优化启用 fp16/bf16 或量化;定期保存检查点并加载最佳模型;标准推理使用 pipeline;定义 compute_metrics 进行任务特定评估;梯度累积应对有限内存下的大批量;学习率 warmup 通常为总训练步数的 5-10%;推送训练模型至 Hub 以便共享与版本管理。
关于环境,资料指出:安装命令为 pip install transformers datasets evaluate accelerate;GPU 支持需要搭配带 CUDA 的 PyTorch 或 TensorFlow;框架支持以 PyTorch 为主,同时支持 TensorFlow 与 JAX/Flax。
资料给出的官方文档为 https://huggingface.co/docs/transformers/index,模型库为 https://huggingface.co/models(超过 100 万个预训练模型),数据集库为 https://huggingface.co/datasets。资料未提供收费、价格或效果方面的信息。