【Hugging Face】transformers库中的pipeline:快速执行常见的任务
·
在 transformers 库中,pipeline 是一个高级 API,用于快速执行常见的NLP、计算机视觉和语音任务,如文本分类、文本生成、问答、翻译等。它提供了一个简单的接口,让用户无需深入了解模型架构和数据预处理,就可以直接使用预训练模型进行推理。
一、pipeline 的基本用法
pipeline 可以直接加载 Hugging Face Hub 上的预训练模型,并完成指定任务。例如:
from transformers import pipeline
classifier = pipeline("sentiment-analysis")
result = classifier("Hugging Face makes NLP easy!")
print(result)
这个代码会自动下载并使用一个情感分析模型,输出文本的情感类别和置信度。
二、支持的任务类型
pipeline 支持多种任务,每种任务对应不同的模型类型。以下是一些常见任务及其对应的 pipeline 关键字:
文本分类
用于情感分析、垃圾邮件检测等任务。
classifier = pipeline("text-classification", model="distilbert-base-uncased-finetuned-sst-2-english")
result = classifier("I love using Hugging Face!")
print(result)
命名实体识别
用于标注文本中的专有名词,如人名、地点、组织等。
ner = pipeline("ner", grouped_entities=True)
result = ner("Hugging Face was founded in New York by Clément Delangue.")
print(result)
问答
给定上下文和问题,模型会提取答案。
qa_pipeline = pipeline("question-answering")
context = "Hugging Face is a company that democratizes AI and helps developers build AI-powered applications."
question = "What does Hugging Face do?"
result = qa_pipeline(question=question, context=context)
print(result)
文本生成
用于自动生成文本,例如 GPT 模型。
generator = pipeline("text-generation", model="gpt2")
result = generator("Once upon a time", max_length=30)
print(result)
文本摘要
将长文本压缩为简短摘要。
summarizer = pipeline("summarization")
text = "Hugging Face is an AI company that builds tools for machine learning practitioners."
summary = summarizer(text, max_length=20, min_length=5, do_sample=False)
print(summary)
翻译
将文本从一种语言翻译为另一种语言。
translator = pipeline("translation_en_to_fr", model="Helsinki-NLP/opus-mt-en-fr")
result = translator("Hugging Face is an AI company.")
print(result)
语音识别
将音频转换为文本。
asr = pipeline("automatic-speech-recognition", model="openai/whisper-small")
result = asr("path/to/audio/file.wav")
print(result)
图像分类
可以用于识别图像中的物体。
image_classifier = pipeline("image-classification", model="google/vit-base-patch16-224")
result = image_classifier("path/to/image.jpg")
print(result)
三、使用自定义模型
如果希望使用特定的模型,而不是默认的 Hugging Face 预训练模型,可以指定 model 参数。例如:
from transformers import pipeline
custom_model = "nlptown/bert-base-multilingual-uncased-sentiment"
classifier = pipeline("sentiment-analysis", model=custom_model)
result = classifier("C'est une excellente journée!")
print(result)
四、使用 GPU 加速
如果有可用的 GPU,可以将 device=0 传入 pipeline 以启用 GPU 加速。
classifier = pipeline("text-classification", model="distilbert-base-uncased", device=0)
这样可以大幅提高推理速度,特别是在处理大型文本或批量任务时。
五、批量处理
如果需要处理多个输入,可以传入一个列表,提高推理效率。
texts = ["Hugging Face is great!", "I don't like this product."]
results = classifier(texts)
print(results)
六、返回详细信息
可以通过 return_all_scores=True 来返回所有类别的得分,而不仅是最高的类别。
classifier = pipeline("sentiment-analysis")
result = classifier("I love this!", return_all_scores=True)
print(result)
七、总结
pipeline 提供了一个简单且强大的接口,使用户可以快速应用预训练模型进行 NLP、计算机视觉和语音任务。它的优势包括:
- 易于使用,无需深度了解模型架构
- 支持 Hugging Face Hub 上的预训练模型
- 兼容 PyTorch 和 TensorFlow
- 可以使用 GPU 加速
- 适用于文本、图像、音频等多种任务
更多推荐


所有评论(0)