ToB企服应用市场:ToB评测及商务社交产业平台

标题: AI开发-三方库-Hugging Face-Pipelines [打印本页]

作者: 宝塔山    时间: 2024-10-16 21:50
标题: AI开发-三方库-Hugging Face-Pipelines
1 需求

需求1:pipeline支持的任务类型
需求2:推理加速使用CPU还是GPU
需求3:基于pipeline的文本分类示例
需求4:pipeline实现原理




模型使用步骤(Raw text -》Input IDs -》Logits -》Predictions):

以下是对这个流程的表明:
一、Raw text -> Input IDs
  1. text = "今天天气不错"
  2. # 第一步:数据预处理(Raw text -》Input IDs)
  3. from transformers import BertTokenizer
  4. tokenizer = BertTokenizer.from_pretrained('./model')
  5. inputs = tokenizer(text, return_tensors='pt', padding=True, truncation=True)
  6. print(inputs)
复制代码
二、Input IDs -> Logits
  1. # 第二步:模型调用(Input IDs -》Logits)
  2. from transformers import BertForSequenceClassification
  3. model = BertForSequenceClassification.from_pretrained('./model')
  4. # print(model.config)
  5. outputs = model(**inputs)
  6. logits = outputs.logits
  7. print(logits)
复制代码
三、Logits -> Predictions
  1. # 第三步:结果后处理(Logits -》Predictions)
  2. import torch
  3. predictions = torch.nn.functional.softmax(logits, dim=-1)
  4. predictions_class = torch.argmax(predictions).item()
  5. print(predictions_class)
  6. print(model.config.id2label.get(predictions_class))
复制代码
这个流程是自然语言处理中常见的文本分类任务的根本步骤,不同的任务和模型可能会有所不同,但总体上都遵循这个从原始文本到最终预测的过程。

2 接口

关键参数 

常见调用方式




3.1 支持任务类型

  1. from transformers.pipelines import SUPPORTED_TASKS
  2. for k, v in SUPPORTED_TASKS.items():
  3.     print(k)
复制代码



3.2 推理加速使用CPU还是GPU

  1. from transformers import pipeline
  2. pipe = pipeline(task="text-classification", model="./model", tokenizer="./model")
  3. print(pipe.model.device)
复制代码


3.3 基于pipeline的文本分类示例

  1. from transformers import pipeline
  2. pipe = pipeline(task="text-classification", model="./model", tokenizer="./model", device=-1)
  3. result = pipe("今天天气不错")
  4. print(result)
复制代码


3.4 pipeline实现原理

  1. text = "今天天气不错"
  2. # 第一步:数据预处理(Raw text -》Input IDs)
  3. from transformers import BertTokenizer
  4. tokenizer = BertTokenizer.from_pretrained('./model')
  5. inputs = tokenizer(text, return_tensors='pt', padding=True, truncation=True)
  6. print(inputs)# 第二步:模型调用(Input IDs -》Logits)
  7. from transformers import BertForSequenceClassification
  8. model = BertForSequenceClassification.from_pretrained('./model')
  9. # print(model.config)
  10. outputs = model(**inputs)
  11. logits = outputs.logits
  12. print(logits)# 第三步:结果后处理(Logits -》Predictions)
  13. import torch
  14. predictions = torch.nn.functional.softmax(logits, dim=-1)
  15. predictions_class = torch.argmax(predictions).item()
  16. print(predictions_class)
  17. print(model.config.id2label.get(predictions_class))
复制代码


4 参考资料

https://huggingface.co/docs/transformers/main_classes/pipelines
https://hf-mirror.com/docs/transformers/main_classes/pipelines
https://blog.csdn.net/weixin_48007632/category_12725843.html

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4