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

嵌入式硬件篇---CPUGPUTPU


文章目录

  • 第一部分:处理器
    • CPU(中央处理器)
      • 1.通用性
      • 2.核心数
      • 3.缓存
      • 4.指令集
      • 5.功耗和发热
    • GPU(图形处理器)
      • 1.并行处理
      • 2.核心数量
      • 3.内存带宽
      • 4.专门的应用
    • TPU(张量处理单元)
      • 1.为深度学习定制
      • 2.低精度计算
      • 3.固定的功能
      • 4.内存和存储
    • 总结
  • 第二部分:在Google Colab中使用TPU
    • 启动TPU支持
    • 安装TensorFlow with TPU支持
    • 初始化TPU
    • 编写模型和数据加载代码
    • 在Google Cloud TPU中使用TPU
      • 创建TPU资源
      • 设置环境
      • 安装TensorFlow
      • 连接TPU
    • 编写并运行代码
  • 第三部分:TPU处理数据
    • 1. 使用tf.data API
      • a. 创建数据集
      • b. 预处理数据
      • c. 批处理和预取
    • 2. 使用TPU分布式策略
    • 3. 使用交错读取(Interleave)
    • 4. 使用缓存
    • 5. 使用重复数据集
    • 6. 使用优化器
  • 总结


以上就是今天要讲的内容,本文仅仅介绍了CPU、GPU、TPU。


第一部分:处理器

CPU(中央处理器)

CPU,即Central Processing Unit,是计算机的核心组件,负责执行计算机程序中的指令,处理数据,控制硬件。以下是CPU的一些特点:

1.通用性

通用性:CPU设计为能够处理各种不同的任务,从简单的计算到复杂的逻辑操作

2.核心数

核心数:现代CPU通常有多个核心,可以并行处理多个任务

3.缓存

缓存:CPU内部有不同级别的缓存,用于快速访问常用数据

4.指令集

指令集:CPU支持复杂的指令集,可以执行多种类型的操作

5.功耗和发热

功耗和发热:CPU在执行复杂任务时功耗较高,发热也相对较大

GPU(图形处理器)

GPU,即Graphics Processing Unit,最初是为图形渲染设计的,但现在在科学计算、机器学习等领域也广泛应用

1.并行处理

并行处理:GPU包含大量的计算单元,擅长并行处理任务,如同时处理成千上万的像素数据。

2.核心数量

核心数量:GPU的核心数量远超CPU,但每个核心相对简单,适合执行简单的重复任务

3.内存带宽

内存带宽:GPU通常具有高内存带宽,以支持大量的数据传输。

4.专门的应用

专门的应用:除了图形渲染,GPU在深度学习其他需要大规模并行计算的场景中表现出色。

TPU(张量处理单元)

TPU,即Tensor Processing Unit,是Google专门为深度学习计算设计的ASIC(Application-Specific Integrated Circuit)。

1.为深度学习定制

为深度学习定制:TPU针对深度学习中的矩阵乘法和卷积运算进行了优化。

2.低精度计算

低精度计算:TPU在**低精度(如16位或8位)**计算上表现出色,这有助于提高能效和速度。

3.固定的功能

固定的功能:与CPU和GPU的通用性不同,TPU的功能更固定,专注于加速深度学习推断和训练

4.内存和存储

内存和存储:TPU具有大量的内存和存储,以支持大规模的神经网络计算。

总结

CPU:适用于通用计算,能够处理各种复杂的任务和指令
GPU:适用于需要大量并行处理的任务,如图形渲染和深度学习
TPU:专门为深度学习设计,提供了针对特定类型计算的优化
这三种处理器在现代计算系统中通常协同工作,以提供最佳的性能和效率。

第二部分:在Google Colab中使用TPU

启动TPU支持

启用TPU支持: 在Google Colab笔记本中,首先需要确保TPU已经连接。可以使用以下命令来连接TPU:

import os
assert os.environ['COLAB_TPU_ADDR'], 'Make sure to select TPU from Edit > Notebook settings > Hardware accelerator'

安装TensorFlow with TPU支持

安装TensorFlow with TPU支持: 使用以下命令安装与TPU兼容的TensorFlow版本

!pip install cloud-tpu-client==0.10 https://storage.googleapis.com/tpu-pytorch/wheels/torch_xla-1.7-cp36-cp36m-linux_x86_64.whl

初始化TPU

初始化TPU: 使用以下代码来初始化TPU:

import torch_xla
import torch_xla.core.xla_model as xmdevice = xm.xla_device()

编写模型和数据加载代码

编写模型和数据加载代码: 与使用GPU类似,你需要编写模型定义、损失函数、优化器以及数据加载的代码。确保模型和数据被移动到TPU设备上。
训练模型: 在训练循环中,确保使用TPU兼容的方式来进行前向和后向传播。例如:

model = MyModel().to(device)
loss_fn = torch.nn.CrossEntropyLoss()
optimizer = torch.optim.SGD(model.parameters(), lr=0.001)for epoch in range(num_epochs):for batch, (data, target) in enumerate(train_loader):data, target = data.to(device), target.to(device)optimizer.zero_grad()output = model(data)loss = loss_fn(output, target)loss.backward()optimizer.step()

在Google Cloud TPU中使用TPU

创建TPU资源

创建TPU资源: 在Google Cloud Console中创建一个TPU节点。

设置环境

设置环境: 在你的虚拟机中设置TPU相关的环境变量,例如:

export TPU_NAME=[your-tpu-name]
export TPU_ZONE=[your-tpu-zone]
export TPU_PROJECT=[your-gcp-project-id]

安装TensorFlow

安装TensorFlow: 确保安装了与TPU兼容的TensorFlow版本:

pip install tensorflow==[version]

连接TPU

连接到TPU: 在你的Python代码中,使用以下代码来连接到TPU:

import tensorflow as tftpu = tf.distribute.cluster_resolver.TPUClusterResolver(tpu='')
tf.config.experimental_connect_to_cluster(tpu)
tf.tpu.experimental.initialize_tpu_system(tpu)
strategy = tf.distribute.experimental.TPUStrategy(tpu)

编写并运行代码

编写并运行模型: 使用strategy.scope()来确保你的模型和训练代码在TPU上运行:

with strategy.scope():# Define your model, loss, and optimizermodel = ...loss_fn = ...optimizer = ...# Train your modelfor epoch in range(num_epochs):for batch in train_dataset:# Training steps

请注意,TPU的使用可能需要一些特定的代码调整,以确保你的模型和数据管道与TPU兼容。在使用TPU时,还需要注意资源管理和成本控制

第三部分:TPU处理数据

1. 使用tf.data API

TensorFlow的tf.data API可以高效地加载、预处理和批处理数据

a. 创建数据集

import tensorflow as tf

#假设train_images和train_labels是已经加载的数据

train_dataset = tf.data.Dataset.from_tensor_slices((train_images, train_labels))

b. 预处理数据

def preprocess(image, label):# 对图像和标签进行预处理image = tf.image.resize(image, [224, 224])image = tf.cast(image, tf.float32) / 255.0return image, labeltrain_dataset = train_dataset.map(preprocess)

c. 批处理和预取

train_dataset = train_dataset.batch(128)  # TPU通常使用较大的批量大小
train_dataset = train_dataset.prefetch(tf.data.experimental.AUTOTUNE)

2. 使用TPU分布式策略

当使用TPU时,应确保数据集与TPU的分布式策略兼容。

resolver = tf.distribute.cluster_resolver.TPUClusterResolver(tpu='')
tf.config.experimental_connect_to_cluster(resolver)
tf.tpu.experimental.initialize_tpu_system(resolver)
strategy = tf.distribute.experimental.TPUStrategy(resolver)

#使用策略的scope来创建模型和数据集

with strategy.scope():train_dataset = strategy.experimental_distribute_dataset(train_dataset)

3. 使用交错读取(Interleave)

交错读取可以同时从多个文件中读取数据,这可以显著提高I/O效率。

def parse_function(proto):# 解析TFRecord文件中的示例return tf.io.parse_single_example(proto, features)#假设file_pattern是TFRecord文件的通配符
files = tf.data.Dataset.list_files(file_pattern)
dataset = files.interleave(lambda filename: tf.data.TFRecordDataset(filename).map(parse_function),cycle_length=4,  # 并行读取的文件数block_length=16  # 每个文件读取的记录数

)

4. 使用缓存

如果数据集可以放入内存,可以在预处理后缓存数据集,以避免在每次epoch时重新读取数据。

train_dataset = train_dataset.cache()

5. 使用重复数据集

为了进行多次迭代,可以使用repeat方法。

train_dataset = train_dataset.repeat()

6. 使用优化器

使用tf.data API的优化器来自动调整数据加载的性能。

options = tf.data.Options()
options.experimental_optimization.autotune = True
train_dataset = train_dataset.with_options(options)

总结
在TPU上训练时,数据处理的关键是确保数据加载和预处理不会成为瓶颈。使用tf.data API的上述技术可以帮助你有效地利用TPU的计算能力,从而加速模型的训练过程。记住,批量大小、数据预处理和I/O操作都是需要根据具体情况调整的重要参数。


总结

以上就是今天要讲的内容,本文仅仅简单介绍了CPU、GPU、TPU。

相关文章:

嵌入式硬件篇---CPUGPUTPU

文章目录 第一部分:处理器CPU(中央处理器)1.通用性2.核心数3.缓存4.指令集5.功耗和发热 GPU(图形处理器)1.并行处理2.核心数量3.内存带宽4.专门的应用 TPU(张量处理单元)1.为深度学习定制2.低精…...

STM32 PWM驱动舵机

接线图: 这里将信号线连接到了开发板的PA1上 代码配置: 这里的PWM配置与呼吸灯一样,呼吸灯连接的是PA0引脚,输出比较单元用的是OC1通道,这里只需改为OC2通道即可。 完整代码: #include "servo.h&quo…...

设计心得——平衡和冗余

一、平衡 在前面分析了一些软件设计的基础和原则后,今天分析一下整体设计上的一些实践问题。首先分析一下设计上的平衡问题。平衡非常好理解,看到过天平或者标称的同学们应该都知道什么平衡。无论在哪个环境里,平衡都是稳定的基础。 既然说到…...

webrtc协议详细解释

### 一、概述与背景 WebRTC(Web Real-Time Communication)最早由 Google 在 2011 年开源,旨在为浏览器与移动端应用提供客户端直连(点对点)方式进行实时音视频及数据传输的能力。传统的网络应用在进行高实时性音视频通…...

动手学强化学习(四)——蒙特卡洛方法

一、蒙特卡洛方法 蒙特卡洛方法是一种无模型(Model-Free)的强化学习算法,它通过直接与环境交互采样轨迹(episodes)来估计状态或动作的价值函数(Value Function),而不需要依赖环境动态…...

网络原理(3)—— 传输层详解

目录 一. 再谈端口号 二. UDP协议(用户数据报协议) 2.1 UDP协议端格式 2.2 UDP报文长度 2.3 UDP校验和 三. TCP协议(传输控制协议) 3.1 TCP协议段格式 3.2 核心机制 3.2.1 确认应答 —— “感知对方是否收到” 3.2.2 超时重传 3.3.3 连接管理 —— 三次握手与四…...

2025美赛美国大学生数学建模竞赛A题完整思路分析论文(43页)(含模型、可运行代码和运行结果)

2025美国大学生数学建模竞赛A题完整思路分析论文 目录 摘要 一、问题重述 二、 问题分析 三、模型假设 四、 模型建立与求解 4.1问题1 4.1.1问题1思路分析 4.1.2问题1模型建立 4.1.3问题1样例代码(仅供参考) 4.1.4问题1样例代码运行结果&…...

Elasticsearch的开发工具(Dev Tools)

目录 说明1. **Console**2. **Search Profiler**3. **Grok Debugger**4. **Painless Lab**总结 说明 Elasticsearch的开发工具(Dev Tools)在Kibana中提供了多种功能强大的工具,用于调试、优化和测试Elasticsearch查询和脚本。以下是关于Cons…...

Python-基于PyQt5,pdf2docx,pathlib的PDF转Word工具

前言:日常生活中,我们常常会跟WPS Office打交道。作表格,写报告,写PPT......可以说,我们的生活已经离不开WPS Office了。与此同时,我们在这个过程中也会遇到各种各样的技术阻碍,例如部分软件的PDF转Word需要收取额外费用等。那么,可不可以自己开发一个小工具来实现PDF转…...

小程序-视图与逻辑

前言 1. 声明式导航 open-type"switchTab"如果没有写这个,因为是tabBar所以写这个,就无法跳转。路径开始也必须为斜线 open-type"navigate"这个可以不写 现在开始实现后退的效果 现在我们就在list页面里面实现后退 2.编程式导航…...

UE5制作视差图

双目深度估计开源数据集很多都是用UE制作的,那么我们自己能否通过UE制作自己想要的场景的数据集呢。最近花了点时间研究了一下,分享给需要的小伙伴。 主要使用的是UnrealCV插件,UnrealCV是一个开源项目,旨在帮助计算机视觉研究人…...

海浪波高预测(背景调研)

#新星杯14天创作挑战营第7期# ps:图片由通义千问生成 历史工作: 针对更高细粒度、更高精度的波浪高度预测任务: Mumtaz Ali 等人提出了一种多元线性回归模型(MLR-CWLS),该模型利用协方差加权最小二乘法&a…...

代码随想录算法训练营第四十二天-动态规划-股票-188.买卖股票的最佳时机IV

题目要求进行k次买卖其实就是上一题的扩展,把2次扩展为k次定义动规数组依然是二维,第一个维度表示第几天,第二个维度表示第几次买入和卖出所以第二个维度的长度应该是2k1在for循环内,要使用一个内循环来表示第几次买入或卖出&…...

Gradle配置指南:深入解析settings.gradle.kts(Kotlin DSL版)

文章目录 Gradle配置指南:深入解析settings.gradle.kts(Kotlin DSL版)settings.gradle.kts 基础配置选项单项目配置多项目配置 高级配置选项插件管理(Plugin Management)基础配置模板案例:Android项目标准配…...

软件工程经济学-日常作业+大作业

目录 一、作业1 作业内容 解答 二、作业2 作业内容 解答 三、作业3 作业内容 解答 四、大作业 作业内容 解答 1.建立层次结构模型 (1)目标层 (2)准则层 (3)方案层 2.构造判断矩阵 (1)准则层判断矩阵 (2)方案层判断矩阵 3.层次单排序及其一致性检验 代码 …...

论文阅读(三):微阵列数据的图形模型和多变量分析

1.论文链接:Graphical Models and Multivariate Analysis of Microarray Data 摘要: 基因表达数据的通常分析忽略了基因表达值之间的相关性。从生物学上讲,这种假设是不合理的。本章介绍的方法允许通过稀疏高斯图形模型来描述基因之间的相关…...

【大模型LLM面试合集】大语言模型架构_MHA_MQA_GQA

MHA_MQA_GQA 1.总结 在 MHA(Multi Head Attention) 中,每个头有自己单独的 key-value 对;标准的多头注意力机制,h个Query、Key 和 Value 矩阵。在 MQA(Multi Query Attention) 中只会有一组 k…...

向上调整算法(详解)c++

算法流程: 与⽗结点的权值作⽐较,如果⽐它⼤,就与⽗亲交换; 交换完之后,重复 1 操作,直到⽐⽗亲⼩,或者换到根节点的位置 这里为什么插入85完后合法? 我们插入一个85,…...

【Transformer】手撕Attention

import torch from torch import nn import torch.functional as F import mathX torch.randn(16,64,512) # B,T,Dd_model 512 # 模型的维度 n_head 8 # 注意力头的数量多头注意力机制 class multi_head_attention(nn.Module): def __init__(self, d_model, n_hea…...

844.比较含退格的字符串

目录 题目思路解法收获 题目 给定 s 和 t 两个字符串,当它们分别被输入到空白的文本编辑器后,如果两者相等,返回 true 。# 代表退格字符。 注意:如果对空文本输入退格字符,文本继续为空。 思路 如何解退格之后left…...

告别龟速采样!用DDIM加速你的扩散模型推理(附PyTorch代码)

加速扩散模型推理:DDIM核心原理与实战优化指南 在图像生成领域,扩散模型以其卓越的质量表现迅速成为研究热点,但传统DDPM(Denoising Diffusion Probabilistic Models)的致命缺陷在于其缓慢的采样速度——生成一张图片往…...

开源监控面板OpenClaw:从架构设计到生产部署实战指南

1. 项目概述:一个开源监控面板的诞生 在运维和开发的世界里,监控面板就像是驾驶舱里的仪表盘。没有它,你就是在盲飞。今天要聊的这个项目 xingrz/openclaw-dashboard ,就是一个由社区驱动的开源监控面板解决方案。它的名字很有意…...

百度网盘直链解析工具:突破下载限速的Python解决方案

百度网盘直链解析工具:突破下载限速的Python解决方案 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 你是否曾经为百度网盘的下载速度而烦恼?作为国内最…...

技术视角:Sketchfab数据提取工具深度解析3D模型下载机制

技术视角:Sketchfab数据提取工具深度解析3D模型下载机制 【免费下载链接】sketchfab sketchfab download userscipt for Tampermonkey by firefox only 项目地址: https://gitcode.com/gh_mirrors/sk/sketchfab 在WebGL技术日益成熟的今天,Sketch…...

Seraphine:英雄联盟智能BP助手与战绩查询工具完整指南

Seraphine:英雄联盟智能BP助手与战绩查询工具完整指南 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine 在英雄联盟的对局中,BP(禁选英雄)阶段往往是决定胜负的关…...

基于PIR传感器与LIFX智能灯泡的物联网运动感应照明系统实战

1. 项目概述与核心价值如果你对智能家居自动化感兴趣,并且想亲手打造一个既实用又有趣的照明项目,那么这个基于Adafruit FunHouse和LIFX智能灯泡的运动感应照明系统,绝对是一个绝佳的起点。它不仅仅是一个“开灯关灯”的简单触发器&#xff0…...

Claude API企业准入最后窗口期:2024Q3起强制启用OAuth 2.1+硬件级密钥绑定,现在不升级将无法续签

更多请点击: https://intelliparadigm.com 第一章:Claude API企业准入政策的演进与合规紧迫性 随着Anthropic对Claude模型商用边界的持续收束,企业级API接入正从“技术可用性”转向“治理可验证性”。2024年Q2起,所有新注册企业账…...

Python自动化股票分析工具:从数据采集到可视化报告全流程实战

1. 项目概述:一个面向个人投资者的自动化股票分析工具如果你和我一样,是个对A股市场有点兴趣,但又没时间天天盯盘的上班族,那你肯定也经历过这种纠结:早上开盘前想看看心仪的几只股票有没有什么异动,结果一…...

Biomni项目解析:大语言模型与生物医学知识图谱融合实践

1. 项目概述:当大语言模型遇见生物医学知识图谱最近在探索如何让大语言模型(LLM)在专业领域,特别是生物医学这种信息密集、关系复杂的领域,变得更“靠谱”一点。相信很多同行都遇到过类似的问题:直接问Chat…...

终极免费换肤方案:R3nzSkin国服版完整使用教程

终极免费换肤方案:R3nzSkin国服版完整使用教程 【免费下载链接】R3nzSkin-For-China-Server Skin changer for League of Legends (LOL) 项目地址: https://gitcode.com/gh_mirrors/r3/R3nzSkin-For-China-Server 想要在英雄联盟国服免费体验所有皮肤&#x…...