模型架构与原理1300 字

Transformers执行分类推理任务

·全库 326 / 611

《Transformers执行分类推理任务》共 0.1 万字,通篇围绕 推理、CUDA、上下文、GPU 展开,归在「模型架构与原理」这一层。

覆盖推理CUDA上下文GPU

适合要跟模型团队对话、得听懂他们在说什么的人

目录骨架(8 节)
  1. 一、Transformers 分类推理过程
  2. 二、查看 PipeLine 支持的任务类型
  3. 三、Pipeline 的创建和使用
  4. 四、Pipeline的背后实现
  5. 3.1 根据任务类型,直接创建 Pipeline,默认是英文模型
  6. 3.2 指定任务类型,再指定模型,创建基于指定模型的 Pipeline
  7. 3.3 预先加载模型,再创建 Pipeline
  8. 3.4 使用 Gpu 进行推理
目录 · 3 节

示例代码

注:将ppt后缀名改为zip后解压

python版本:3.12.4

一、Transformers 分类推理过程

  • 将数据预处理、模型调用、结果后处理三部分组装成的流水线,如下流程图
  • 使我们能够直接输入文本便获得最终的答案,不需要我们关注细节

image.png

二、查看 PipeLine 支持的任务类型

from transformers.pipelines import SUPPORTED_TASKS
from pprint import pprint
for k, v in SUPPORTED_TASKS.items():
    print(k, v)

输出但其概念 PipeLine 支持的任务类型以及可以调用的举例输出:

audio-classification {'impl': <class 'transformers.pipelines.audio_classification.AudioClassificationPipeline'>, 'tf': (), 'pt': (<class 'transformers.models.auto.modeling_auto.AutoModelForAudioClassification'>,), 'default': {'model': {'pt': ('superb/wav2vec2-base-superb-ks', '372e048')}}, 'type': 'audio'}
automatic-speech-recognition 
text-to-audio 
feature-extraction
text-classification
  • key: 任务的名称,如音频分类
  • v:关于任务的实现,如具体哪个 Pipeline,有没有 TF 模型,有没有 pytorch 模型, 模型具体是哪一个

b971d6fefdb2ed1614b9c623b60df1cf.jpeg

三、Pipeline 的创建和使用

3.1 根据任务类型,直接创建 Pipeline,默认是英文模型

from transformers import pipeline
pipe = pipeline("text-classification") # 根据pipeline直接创建一个任务类
pipe("very good") # 测试一个句子,输出结果

3.2 指定任务类型,再指定模型,创建基于指定模型的 Pipeline

注,这里我已经将模型离线下载到本地了

# https://huggingface.co/models
pipe = pipeline("text-classification", model="./models/roberta-base-finetuned-dianping-chinese")

3.3 预先加载模型,再创建 Pipeline

rom transformers import AutoModelForSequenceClassification, AutoTokenizer

# 这种方式,必须同时指定model和tokenizer
model = AutoModelForSequenceClassification.from_pretrained("./models_roberta-base-finetuned-dianping-chinese")
tokenizer = AutoTokenizer.from_pretrained("./models_roberta-base-finetuned-dianping-chinese")
pipe = pipeline("text-classification", model=model, tokenizer=tokenizer)

3.4 使用 Gpu 进行推理

pipe = pipeline("text-classification", model="./models_roberta-base-finetuned-dianping-chinese", device=0)

3.5 查看 Device

pipe.model.device

3.6 测试一下耗时

import torch
import time
times = []
for i in range(100):
    torch.cuda.synchronize()
    start = time.time()
    pipe("我觉得不太行!")
    torch.cuda.synchronize()
    end = time.time()
    times.append(end - start)
print(sum(times) / 100)

3.7 确定的 Pipeline 的参数

资料里没有你的场景?

把你手上的数据和想解决的那个环节发上来,我们按具体情况回,不复述方法论。

发布需求