当前位置: 首页 > news >正文

【LLM】概念解析 - Tensorflow/Transformer/PyTorch

背景

本文将从算法原理、适用范围、强项、知名大模型的应用、python 调用几个方面,对深度学习框架 TensorFlow、PyTorch 和基于深度学习的模型 Transformer 进行比较。主要作用是基础概念扫盲。

一、 算法原理对比

Transformer

Transformer 是一种基于深度学习的模型架构,最初由 Vaswani 等人在 2017 年提出,用于自然语言处理任务。其论文标题为《Attention is All You Need》,强调了注意力机制在该模型中的核心地位。

  • 核心概念

    1. 注意力机制(Attention Mechanism)
    • Transformer 引入了多头自注意力(Multi-Head Self-Attention)机制,能够捕捉序列中不同位置之间的依赖关系。
    • 通过计算序列中每个位置的 Query、Key 和 Value,可以动态调整序列中各个单词或元素的重要性。
    1. 序列到序列建模(Seq2Seq)
    • Transformer 被设计为一种通用的序列到序列模型,广泛应用于翻译、文本生成等任务。
    • 它由两个主要部分组成:
      • 编码器(Encoder):将输入序列编码为上下文表示。
      • 解码器(Decoder):将编码器生成的表示解码为目标序列。
  • 结构

    1. 编码器(Encoder)
    • 每个编码器层包含两个子层:
      1. 多头自注意力(Multi-Head Self-Attention)。
      2. 前馈神经网络(Feed-Forward Neural Network,FFNN)。
    • 使用残差连接(Residual Connection)和层归一化(Layer Normalization)稳定训练。
    1. 解码器(Decoder)
    • 每个解码器层与编码器类似,但额外添加了一个跨注意力(Encoder-Decoder Attention)子层,用于结合编码器的输出。
    • 生成目标序列时,解码器采用掩码机制(Masked Attention),确保每个位置只关注之前生成的输出。
    1. 位置编码(Positional Encoding)
    • 为弥补 Transformer 缺乏序列信息的特性,添加了位置编码,显式注入位置信息。
    • 通常通过正弦和余弦函数生成。

TensorFlow

  • 核心:基于静态和动态计算图(TensorFlow 2.x 支持动态图)。
  • 计算模式:数据流图(Dataflow Graph),通过张量和节点构建有向无环图(DAG),实现灵活的并行计算和分布式训练。
  • 优化:利用图优化技术(如常量折叠、子图优化)和自动微分(Automatic Differentiation)支持大规模深度学习。

PyTorch

  • 核心:动态计算图(Dynamic Computation Graph),操作即时执行,适合复杂任务和调试。
  • 计算模式:操作类似于 Python 函数式编程,允许逐步构建模型。
  • 优化:利用自动微分引擎 torch.autograd 支持高效梯度计算,并结合 GPU 加速。

二、 适用范围对比

Transformer

  • 适用场景
    • 自然语言处理(NLP):如翻译、文本生成、问答系统。
    • 计算机视觉:如图像分类、目标检测(Vision Transformer, ViT)。
    • 跨模态学习:如 CLIP 和 DALL-E。
  • 劣势:自注意力机制计算复杂度较高,对硬件资源要求大。

TensorFlow

  • 适用场景
    • 企业级部署:高性能、大规模分布式训练和生产环境。
    • 移动端和嵌入式:通过 TensorFlow Lite 和 TensorFlow.js。
    • 医疗、金融等对性能要求高的领域。
  • 劣势:开发调试相对复杂,尤其在 1.x 静态图时期。

PyTorch

  • 适用场景
    • 研究实验:灵活的动态图构建和调试能力。
    • 自定义任务:易于实现新算法和复杂模型。
    • 分布式训练:支持大规模分布式并行计算。
  • 劣势:在移动端和生产环境部署方面起步稍晚。

三、 功能强大之处

Transformer

通用性:模块化架构适合序列数据的多领域应用。
大规模训练:具备优秀的并行能力,支持高效训练。
预训练与微调:通过大规模预训练模型(如 GPT、BERT)实现迁移学习。

TensorFlow

分布式能力:原生支持多机多卡训练。
跨平台性:支持 CPU、GPU、TPU,并能轻松部署到嵌入式设备。
生态系统:丰富的预训练模型(TensorFlow Hub)、可视化工具(TensorBoard)。
兼容性:兼容多种编程语言(Python、C++、JavaScript)。

PyTorch

易用性:操作简单直观,与 NumPy 等深度集成。
调试性:动态计算图和逐步调试功能让研究人员能够快速试验。
灵活性:支持高性能 GPU 计算,并能快速部署生产环境(TorchScript)。
社区支持:活跃的开源社区和丰富的教程资源。

四、 知名大模型的应用

模型应用领域核心技术框架支持
GPT (Generative Pre-trained Transformer)NLP (文本生成、问答)Transformer + 自注意力机制PyTorch
BERT (Bidirectional Encoder Representations from Transformers)NLP (分类、填空)Transformer EncoderTensorFlow
Vision Transformer (ViT)计算机视觉 (图像分类)Transformer + 图像分块嵌入TensorFlow & PyTorch
DALL-E图像生成、跨模态学习Transformer + 自回归模型PyTorch
CLIP图像-文本多模态任务Transformer + 对比学习PyTorch
AlphaFold蛋白质结构预测深度学习 + 图神经网络TensorFlow
Stable Diffusion图像生成Transformer + DiffusionPyTorch

transformer应用

  1. 自然语言处理
    • GPT(生成预训练变换器)
    • BERT(双向编码器表示)
    • T5、RoBERTa、XLNet 等
  2. 计算机视觉
    • Vision Transformer (ViT) 将 Transformer 应用到图像分类任务。
  3. 跨模态任务
    • CLIP、DALL-E 等模型将 Transformer 应用于多模态数据。

五、python调用语句

三者的 Python 调用语言对比如下:

Transformer

Transformer 通常通过深度学习框架(如 PyTorch 或 TensorFlow)的 Python 接口调用,结合 Hugging Face 等高层封装库实现。
核心库

  • Hugging Face 的 transformers 库是实现 Transformer 模型的主流工具。
  • 常见预训练模型:BERTGPTRoBERTa 等。

TensorFlow

TensorFlow 提供了全面的 Python 接口,主要通过其模块化的库结构调用。以下是关键模块和典型用法:

核心模块

  • tensorflow 是核心库,以下是主要子模块:
    • tensorflow.keras: 高级 API,用于快速构建和训练神经网络。
    • tensorflow.data: 数据加载与预处理。
    • tensorflow.lite: 用于移动设备的模型优化和部署。
    • tensorflow.distribute: 分布式训练支持。

代码

import tensorflow as tf# 创建一个简单模型
model = tf.keras.Sequential([tf.keras.layers.Dense(64, activation='relu'),tf.keras.layers.Dense(10, activation='softmax')
])# 编译模型
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])# 数据加载和训练
(x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
model.fit(x_train, y_train, epochs=5)

PyTorch

PyTorch 提供了灵活的动态计算图接口,完全基于 Python 语法。主要模块包括:

核心模块

  • torch: 核心张量操作库。
  • torch.nn: 用于神经网络构建的模块。
  • torch.optim: 优化器工具。
  • torch.utils.data: 数据加载和处理工具。
  • torchvision: 计算机视觉任务辅助工具。

代码示例

import torch
import torch.nn as nn
import torch.optim as optim# 定义模型
class SimpleModel(nn.Module):def __init__(self):super(SimpleModel, self).__init__()self.fc = nn.Linear(10, 1)def forward(self, x):return self.fc(x)model = SimpleModel()# 损失函数和优化器
criterion = nn.MSELoss()
optimizer = optim.SGD(model.parameters(), lr=0.01)# 数据和训练
inputs = torch.randn(5, 10)
targets = torch.randn(5, 1)
outputs = model(inputs)
loss = criterion(outputs, targets)
loss.backward()
optimizer.step()

对比总结

特点TensorFlowTransformerPyTorch
模块化支持官方模块丰富(如 tf.kerastf.dataHugging Face 封装简洁,支持多种框架灵活模块(torch.nntorch.optim
API 易用性API 稍显复杂,适合高性能和生产部署简洁高效,专注于 Transformer 相关任务代码简洁直观,动态计算图支持灵活建模
预训练模型支持支持 TensorFlow HubHugging Face 集成丰富预训练模型Hugging Face 支持良好
开发风格偏静态图风格(2.x 动态图有所改善)高度依赖框架实现偏动态图风格,代码调试与实验友好
适用范围广泛:从深度学习研究到工业生产专注:NLP、视觉和多模态任务灵活:研究、实验和定制化应用

六、总结与选择建议

  1. TensorFlow

    • 适合企业和生产环境。
    • 需要高性能、大规模训练时表现优异。
  2. Transformer

    • 适合处理序列数据(文本、图像等)。
    • 自注意力机制为大规模预训练提供了强大的表达能力。
  3. PyTorch

    • 适合研究实验和灵活开发。
    • 大模型训练和开源社区支持极其强大。

故:

研究或实验:优先选择 PyTorch。
序列数据建模:优先选择 Transformer 框架(可通过 PyTorch 或 TensorFlow 实现)。
大规模生产部署:选择 TensorFlow 或其优化工具链。

相关文章:

【LLM】概念解析 - Tensorflow/Transformer/PyTorch

背景 本文将从算法原理、适用范围、强项、知名大模型的应用、python 调用几个方面,对深度学习框架 TensorFlow、PyTorch 和基于深度学习的模型 Transformer 进行比较。主要作用是基础概念扫盲。 一、 算法原理对比 Transformer Transformer 是一种基于深度学习的…...

对一段已知行情用python中画出K线图~

1. 已知行情: 2024/09/05 ~ 2025/1/3 date open high low close 0 2024-09-05 2785.2635 2796.0186 2777.4710 2788.3141 1 2024-09-06 2791.7645 2804.0932 2765.6394 2765.8066 2 2024-09-09 2754.7237 2756.5560 2726.9667 2736.…...

Rocky Linux下安装meld

背景介绍: meld是一款Linux系统下的用于 文件夹和文件的比对软件,非常常用; 故障现象: 输入安装命令后,sudo yum install meld,报错。 12-31 22:12:17 ~]$ sudo yum install meld Last metadata expirat…...

DVWA靶场Insecure CAPTCHA(不安全验证)漏洞所有级别通关教程及源码审计

目录 Insecure CAPTCHA(不安全验证)low源码审计 medium源码审计 high源码审计 impossible源码审计 Insecure CAPTCHA(不安全验证) Insecure CAPTCHA(不安全验证)漏洞指的是在实现 CAPTCHA(完全自动化公共图灵测试区分计算机和人类&#xff0…...

JavaScript HTML DOM 实例

JavaScript HTML DOM 实例 JavaScript 的 HTML DOM(文档对象模型)允许您通过脚本来控制 HTML 页面。DOM 是 HTML 文档的编程接口,它将 Web 页面与编程语言连接起来,使得开发者可以改变页面中的内容、结构和样式。在这篇文章中,我们将通过一系列实例来探讨如何使用 JavaSc…...

软件架构和软件体系结构的关系

软件架构(Software Architecture)和软件体系结构(Software System Architecture)这两个术语在日常使用中经常被交替使用,但它们在严格意义上有所区别: 1. **软件架构**: - 软件架构主要关注软件…...

C++并发:在线程间共享数据

1 线程间共享数据的问题 1.1 条件竞争 条件竞争:在并发编程中:操作由两个或多个线程负责,它们争先让线程执行各自的操作,而结果取决于它们执行的相对次序,这样的情况就是条件竞争。 诱发恶性条件竞争的典型场景是&am…...

GaussDB逻辑解码技术原理深度解析

GaussDB逻辑解码技术原理深度解析 一、背景介绍 在数字化转型的大潮中,异构数据库之间的数据同步需求日益增长。异构数据库同步指的是将不同类型、不同结构的数据库之间的数据进行同步处理,以确保数据在不同数据库之间的一致性。华为云提供的DRS服务&a…...

JAVA构造方法练习

要求在Student类中,(task1)添加一个有name和ID两个参数的构造方法,对成员变量name和ID进行初始化,(task2)实例化一个Student对象,学生姓名:Yaoming,ID&#x…...

Pytorch 三小时极限入门教程

一、引言 在当今的人工智能领域,深度学习占据了举足轻重的地位。而 Pytorch 作为一款广受欢迎的深度学习框架,以其简洁、灵活的特性,吸引了大量开发者投身其中。无论是科研人员探索前沿的神经网络架构,还是工程师将深度学习技术落…...

Rockect基于Dledger的Broker主从同步原理

1.前言 此文章是在儒猿课程中的学习笔记,感兴趣的想看原来的课程可以去咨询儒猿课堂 这篇文章紧挨着上一篇博客来进行编写,有些不清楚的可以看下上一篇博客: RocketMQ原理简述(二)-CSDN博客 2.Broker的高可用 如果…...

面向对象分析与设计Python版 面向对象的核心特征

文章目录 一、封装二、继承三、多态四、聚合/组合五、接口/实现六、抽象 一、封装 封装 Encapsulation 封装是隐藏对象实现细节的过程内部状态通常不能被其他对象访问对象的数据只能通过接口去访问封装使得对象可以被看成一个“黑盒子”它保护对象的内部状态不被其他对象破坏…...

CDP集群安全指南-静态数据加密

[一]静态数据加密的架构 CDP 支持两种加密组件,这些组件可以组合成独特的解决方案。在选择密钥管理系统(KMS)时,您需要决定哪些组件能够满足企业的密钥管理和加密需求。 CDP 加密组件 以下是 Cloudera 用于静态数据加密的组件描…...

RSA密码的安全性分析(简化版本)

RSA的安全性是基于分解大整数的困难性假定,之所以认为是假定是因为至今还未能证明大整数就是NP问题,也许有尚未发现的多项式时间分解算法。随着人类计算能力的不断提高,原来被认为是不可能分解的大数已经被成功分解。对于大整数的威胁除了人类…...

嵌入式linux系统中CMake的基本用法

第一:CMake的基本使用 在上篇文章中,我们聊了聊 Makefile。虽然它是 C/C++ 项目编译的“老司机”,但写起来真的是让人头大。尤其是当项目文件一多,手写依赖就像在搬砖,费时又费力。 那么问题来了,难道我们就没有更优雅的工具了吗?答案是:有! 这时候,CMake 就像一个…...

若依修改超级管理员admin的密码

通过接口方式或者页面 /system/user/resetPwd 需改其他用户的密码 修改其他用户的加密的密码,然后通过数据库将admin更新为这个密码就修改好了...

matlab中高精度计算函数vpa与非厄米矩阵本征值的求解

clear;clc;close all tic %并行设置% delete(gcp(nocreate));%关闭之前的并行 cparcluster(local); c.NumWorkers50;%手动设置线程数(否则默认最大线程为12) parpool(c, c.NumWorkers); %并行设置%w1; u2.5;N30;valstozeros(2*N2,100); v10linspace(-3,3,100).;parfor jj1:leng…...

王佩丰24节Excel学习笔记——第二十四讲:宏表函数

【以 Excel2010 系列学习,用 Office LTSC 专业增强版 2021 实践】 【本章技巧】 宏表函数不能直接使用。get.cell(参数一,参数二),参数一要参考类型表。 获得单元格的公式有很多种方法, 如:宏写法:get.cel…...

Navicat 17 for Mac 数据库管理软件

Mac分享吧 文章目录 效果一、准备工作二、开始安装1. 双击运行软件,将其从左侧拖入右侧文件夹中,等待安装完毕。2. 应用程序/启动台显示Navicat图标,表示安装成功。 二、运行测试运行后提示:“Navicat Premium.pp”已损坏&#x…...

现代光学基础2

yt2 目录 激光器概述红宝石激光器 工作原理主要特点举例说明 固体激光器 分类与特点钛-蓝宝石激光器锁模技术 光纤激光器 优势与应用掺铒光纤放大器(EDFA)隔离器与法拉第效应 气体激光器 常见类型工作原理举例说明 半导体激光器 现状与优势工作原理应用…...

基于FPGA的PID算法学习———实现PID比例控制算法

基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容:参考网站: PID算法控制 PID即:Proportional(比例)、Integral(积分&…...

从零实现富文本编辑器#5-编辑器选区模型的状态结构表达

先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...

无法与IP建立连接,未能下载VSCode服务器

如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止

<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet&#xff1a; https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装

以下是基于 vant-ui&#xff08;适配 Vue2 版本 &#xff09;实现截图中照片上传预览、删除功能&#xff0c;并封装成可复用组件的完整代码&#xff0c;包含样式和逻辑实现&#xff0c;可直接在 Vue2 项目中使用&#xff1a; 1. 封装的图片上传组件 ImageUploader.vue <te…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角&#xff0c;以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向&#xff0c;距离坐标原点x个像素;第二个是y坐标&#xff0c;表示当前位置为垂直方向&#xff0c;距离坐标原点y个像素。 坐标体系-像素 …...

分布式增量爬虫实现方案

之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面&#xff0c;避免重复抓取&#xff0c;以节省资源和时间。 在分布式环境下&#xff0c;增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路&#xff1a;将增量判…...

C# 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)

船舶制造装配管理现状&#xff1a;装配工作依赖人工经验&#xff0c;装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书&#xff0c;但在实际执行中&#xff0c;工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...