首页 > 其他分享 >大模型微调实战演练:使用代码剖析 Transformers Pipelines工作原理

大模型微调实战演练:使用代码剖析 Transformers Pipelines工作原理

时间:2024-08-15 20:25:05浏览次数:17  
标签:Pipelines 示例 模型 torch IDs Token Transformers logits 演练

在自然语言处理(NLP)领域,Transformers 模型已经成为了主流技术之一。无论是文本分类、情感分析,还是机器翻译,Transformers 都展现了强大的性能。今天,我们来详细解析一下 Transformers Pipelines 的运行原理,帮助大家更好地理解其内部机制。

一、基本流程

Transformers Pipeline 的运行流程主要分为四个阶段:Tokenization、Model Inference、Post-Processing 和 Prediction。下面我们详细讲解每一个阶段的具体作用,并通过代码示例进行演示。

1. Tokenization(分词)

原始文本(Raw Text)首先会经过Tokenizer进行处理。Tokenizer的任务是将输入的自然语言文本转换为模型能够理解的输入格式。这一过程包括:

  • 分词: 将句子拆分成一个个单词或子词。

  • 映射到ID:将这些单词或子词映射到预定义的词汇表中的唯一标识符(Token IDs)。

代码示例:
from transformers import BertTokenizer

# 初始化BERT的Tokenizer
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')

# 输入句子
sentence = "This course is amazing!"

# 使用Tokenizer进行分词和映射到Token IDs
input_ids = tokenizer.encode(sentence, add_special_tokens=True)

print(f"Token IDs: {input_ids}")

在这个示例中,我们使用BERT的Tokenizer对句子进行处理,得到的Token IDs如下:

Token IDs: [101, 2023, 2607, 2003, 6429, 999, 102]

2. Model Inference(模型推理)

接下来,Token IDs 会被输入到预训练的Transformers模型中。这一阶段的主要任务是通过模型的多层神经网络结构,计算出每个Token的特征表示。模型的输出通常是Logits,即每个类别的未归一化的概率值。

代码示例:
import torch
from transformers import BertModel

# 初始化BERT模型
model = BertModel.from_pretrained('bert-base-uncased')

# 将Token IDs转化为Tensor
input_ids = torch.tensor([input_ids])

# 模型推理,得到输出
with torch.no_grad():
    outputs = model(input_ids)

# 获取最后一层的隐状态
last_hidden_states = outputs.last_hidden_state

print(f"Last Hidden States: {last_hidden_states}")

在这个示例中,我们将Token IDs输入到BERT模型中,得到最后一层的隐状态(即Logits)。

3. Post-Processing(后处理)

在得到Logits之后,需要对其进行后处理。在大多数情况下,后处理过程包括将Logits转化为实际的概率值(通过Softmax函数),并根据具体任务进行进一步的处理。

代码示例:
from torch.nn.functional import softmax

# 假设模型的输出是logits
logits = torch.tensor([-4.3630, 4.6859])

# 对logits进行Softmax处理
probabilities = softmax(logits, dim=-1)

print(f"Probabilities: {probabilities}")

在这个示例中,我们对Logits进行Softmax处理,得到每个类别的概率值。

4. Prediction(生成结果)

最后一步是生成最终的预测结果。根据后处理得到的概率值,选择概率最高的类别作为最终的预测结果。例如,对于情感分析任务,可能会输出正面和负面情感的概率值:

  • POSITIVE: 99.89%

  • NEGATIVE: 0.11%

代码示例:
from torch.nn.functional import softmax

# 假设模型的输出是logits
logits = torch.tensor([-4.3630, 4.6859])

# 对logits进行Softmax处理
probabilities = softmax(logits, dim=-1)

print(f"Probabilities: {probabilities}")

在这个示例中,我们根据概率值选择了概率最高的类别作为最终的预测结果。

二、具体示例

让我们通过一个具体的例子来更好地理解这个过程:

  1. 输入句子:“This course is amazing!”

  2. 经过Tokenizer处理,得到Token IDs [101, 2023, 2607, 2003, 6429, 999, 102]。

  3. 将Token IDs输入模型,得到Logits [-4.3630, 4.6859]。

  4. 通过后处理,将Logits转化为概率值。

  5. 最终预测结果:POSITIVE 99.89%,NEGATIVE 0.11%。

完整代码示例:
from transformers import BertTokenizer, BertForSequenceClassification
import torch
from torch.nn.functional import softmax

# 初始化BERT的Tokenizer和模型
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
model = BertForSequenceClassification.from_pretrained('bert-base-uncased', num_labels=2)

# 输入句子
sentence = "This course is amazing!"

# 分词和映射到Token IDs
input_ids = tokenizer.encode(sentence, add_special_tokens=True)
input_ids = torch.tensor([input_ids])

# 模型推理,得到logits
with torch.no_grad():
    outputs = model(input_ids)
logits = outputs.logits

# 对logits进行Softmax处理
probabilities = softmax(logits, dim=-1)

# 定义类别
labels = ["NEGATIVE", "POSITIVE"]

# 获取概率最高的类别
predicted_label = labels[torch.argmax(probabilities)]

print(f"Prediction: {predicted_label}")

在这个完整的代码示例中,我们一步步地完成了从原始文本到最终预测结果的整个过程。


三、总结

通过以上详细解析和代码示例,我们可以看出Transformers Pipelines的运行过程是高度模块化的,每个阶段都承担着特定的任务。理解这些过程不仅能帮助我们更好地使用这些模型,还能为我们在实际应用中优化模型提供指导。

希望这篇文章能帮助您更好地理解Transformers Pipelines的运行原理!


最后分享

AI大模型作为人工智能领域的重要技术突破,正成为推动各行各业创新和转型的关键力量。抓住AI大模型的风口,掌握AI大模型的知识和技能将变得越来越重要。

学习AI大模型是一个系统的过程,需要从基础开始,逐步深入到更高级的技术。

这里给大家精心整理了一份全面的AI大模型学习资源,包括:AI大模型全套学习路线图(从入门到实战)、精品AI大模型学习书籍手册、视频教程、实战学习、面试题等,资料免费分享!

在这里插入图片描述

1. 成长路线图&学习规划

要学习一门新的技术,作为新手一定要先学习成长路线图方向不对,努力白费

这里,我们为新手和想要进一步提升的专业人士准备了一份详细的学习成长路线图和规划。可以说是最科学最系统的学习成长路线。
在这里插入图片描述

2. 大模型经典PDF书籍

书籍和学习文档资料是学习大模型过程中必不可少的,我们精选了一系列深入探讨大模型技术的书籍和学习文档,它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础。(书籍含电子版PDF)

在这里插入图片描述

3. 大模型视频教程

对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的大模型视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识

在这里插入图片描述

4. 大模型项目实战

学以致用 ,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。

在这里插入图片描述

5. 大模型面试题

面试,不仅是技术的较量,更需要充分的准备。在你已经掌握了大模型技术之后,就需要开始准备面试,我们将提供精心整理的大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。

在这里插入图片描述

全套的AI大模型学习资源已经整理打包,有需要的小伙伴可以微信扫描下方CSDN官方认证二维码,免费领取【保证100%免费

在这里插入图片描述

如有侵权,请联系删除。

标签:Pipelines,示例,模型,torch,IDs,Token,Transformers,logits,演练
From: https://blog.csdn.net/star_nwe/article/details/141222724

相关文章

  • [Paper Reading] Multiple View Geometry Transformers for 3D Human Pose Estimation
    MultipleViewGeometryTransformersfor3DHumanPoseEstimationlink时间:CVPR2024机构:UniversityofToronto&&SoutheastUniversity&&MicrosoftResearchAsiaTL;DR提出一种基于Transformer端到端3DHumanPoseEstimation方法MVGFormer,核心模块是geometry与appea......
  • HuggingFace的transformers 库中的tokenizer介绍
    在自然语言处理中,tokenizer是一个非常关键的组件,它将文本转化为模型可以理解的格式。这个过程通常包括以下几个步骤:1.文本标准化小写化:将所有文本转换为小写,以减少不同形式的单词(如"Apple"和"apple")被视为不同词的情况。去除标点符号:删除或替换标点符号,不过在某些场景下,......
  • 【无人艇】模拟退火算法红蓝无人水面艇舰队对抗演练和攻防【含Matlab源码 6808期】
    ✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,Matlab项目合作可私信或扫描文章底部QQ二维码。......
  • [Paper Reading] DEFORMABLE DETR: DEFORMABLE TRANSFORMERS FOR END-TO-END OBJECT D
    DEFORMABLEDETR:DEFORMABLETRANSFORMERSFOREND-TO-ENDOBJECTDETECTIONlink时间:2021(ICLR)机构:Sensetime&USTC&CUHKTL;DR参考2DDeformableConv,通过在ReferencePoint附近增加samplepoints,将DETR的收敛速度提升10倍,对于小目标效果也更好。Method背景知识:参考......
  • Scalable Diffusion Models with Transformers(DIT)代码笔记
    完整代码来源:DiTDiT模型主要是在diffusion中,使用transformer模型替换了UNet模型,使用class来控制图像生成。根据论文,模型越大,patchsize越小,FID越小。模型越大,参数越多,patchsize越小,参与计算的信息就越多,模型效果越好。模型使用了Imagenet训练,有1000个分类,class_labe......
  • 钓鱼邮件演练
    联通国际公司钓鱼邮件演练服务:筑牢员工安全意识防线在数字化时代,网络攻击手段层出不穷,其中钓鱼邮件以其隐蔽性和高效性,成为了不法分子窃取企业敏感信息、发动网络攻击的重要手段之一。为了提升企业员工对网络威胁的辨识能力和应对水平,联通国际公司精心推出了钓鱼邮件演练服务,旨......
  • Known框架实战演练——进销存财务管理
    本文介绍如何实现进销存管理系统的财务对账模块,财务对账模块包括供应商对账和客户对账2个菜单页面。供应商和客户对账字段相同,因此可共用一个页面组件类。项目代码:JxcLite开源地址:https://gitee.com/known/JxcLite1.配置模块运行项目,在【系统管理-模块管理】中配置如下模......
  • 12个Python数据类型转换实战演练
    文末赠免费精品编程资料~~在Python编程中,数据类型转换是处理数据时必不可少的技能。掌握如何灵活地在不同类型之间转换,能让你的代码更加高效和灵活。下面,我们将通过一系列实战演练,学习并实践12种常见的Python数据类型转换。1.整数转字符串实战案例:将年龄转换为字符串......
  • 【HW系列】常态化,演练就在平时
    本章为该系列的第20篇,也是整个【红蓝/演练】系列的最后一篇,前前后后历时9个月,20篇文章,3万5千字,算是对自己参与过的演练工作做个总结,也希望能对大家有帮助。很多人问我写文章的时间哪里来的,其实这个系列大部分文章是我在地铁上完成的,有座就拿出电脑来写,没座就掏出手机来写,到今天终......
  • AI论文阅读笔记 | Timer: Generative Pre-trained Transformers Are Large Time Serie
    一、基本信息题目:Timer:GenerativePre-trainedTransformersAreLargeTimeSeriesModels会议:ICML2024原文:https://arxiv.org/abs/2402.02368源码:​​​​​​​https://github.com/thuml/Timer二、基本内容 1、解决什么问题虽然深度学习对时间序列的分析做出了显著......