广西建设网站做问卷兼职有哪些网站

张小明 2026/1/11 12:19:35
广西建设网站,做问卷兼职有哪些网站,健身网站开发开题报告,关键词优化的作用加速模型训练 回想一下第7 章所述的“取得进展的循环”#xff1a;想法的质量取决于这一想法经历了多少轮完善#xff0c; 如图13-1 所示。你对一个想法进行迭代的速度#xff0c;取决于创建实验的速度、运行实验的速度以及 分析结果数据的速度。随着你掌握的Keras API 专业…加速模型训练回想一下第7 章所述的“取得进展的循环”想法的质量取决于这一想法经历了多少轮完善如图13-1 所示。你对一个想法进行迭代的速度取决于创建实验的速度、运行实验的速度以及分析结果数据的速度。随着你掌握的Keras API 专业知识越来越多深度学习实验的代码编写速度将不再是这个循环的瓶颈。接下来的瓶颈是模型的训练速度。利用快速的训练基础设施你可以在10 15 分钟内得到结果。因此你可以每天运行数十次迭代。更快的训练速度可以直接提高深度学习解决方案的质量。本节将介绍以下3 种提高模型训练速度的方法混合精度训练利用这种方法甚至可以只用一块 GPU 来训练在多块 GPU 上训练在 TPU 上训练。我们分别来看一下。使用混合精度加快GPU 上的训练速度如果我告诉你有一种简单的技巧可以将几乎所有模型的训练速度提高3 倍而且基本上是免费的你会怎么想这听起来过于美好而不像是真的但这样的技巧确实存在它就是混合精度训练mixed-precision training。为了理解它的工作原理我们首先来看一下计算机科学中的“精度”这一概念。1. 理解浮点数精度精度之于数字就像分辨率之于图像。因为计算机只能处理1 和0所以计算机中的任何数字都需要编码为二进制字符串。比如你可能熟悉uint8 整数它是用8 位bit编码的整数对于uint800000000 表示011111111 表示255。要想表示大于255 的整数需要添加更多位8 位是不够的。大多数整数存储用的是32 位可以表示从−2 147 483 648 到2 147 483 647 的有符号整数。浮点数也是如此。在数学中实数形成一个连续轴任意两个数字之间都有无数个点。你可以将实数轴不断放大。在计算机科学中这种说法是不正确的。举个例子在3 和4 之间的点的个数是有限的。有多少个这取决于你所使用的精度即用多少位来存储一个数字。你只能将实数轴放大到一定的分辨率。我们通常使用以下3 种浮点数精度半精度或 float16数字用16 位存储单精度或 float32数字用32 位存储双精度或 float64数字用64 位存储。你可以这样来考虑浮点数分辨率可以安全处理的任意两个数字之间的最小距离。对于单精度这大约是1e−7对于双精度这大约是1e−16对于半精度这则只有1e−3。到目前为止本书所有模型使用的都是单精度数字模型将状态存储为float32 权重变量在float32 输入上运行计算。这样的精度足以在不丢失信息的情况下运行模型的前向传播和反向传播特别是梯度更新比较小的情况回想一下典型的学习率是1e−3常见的权重更新大小在1e−6 量级。你也可以使用float64但这样做会浪费资源——像矩阵乘法或矩阵加法这样的运算在双精度下的计算代价要大很多所以你要做两倍的工作却没有明显的收益。但是你不能用float16 的权重和计算来完成同样的事情这样的话梯度下降过程将无法顺利运行因为你无法表示1e−5 或1e−6 左右的小梯度更新。但是你可以使用一种混合方法即混合精度。它的思路是在不需要太高精度的地方使用16 位计算而在其他地方使用32 位来保持数值稳定性。新款的GPU和TPU都具有专门的硬件运行16 位运算比运行同等的32 位运算速度更快占用的内存更少。通过尽可能使用这些较低精度的运算你可以在这些设备上大大加快训练速度。此外在模型中对精度敏感的部分保持使用单精度可以在不影响模型质量的前提下获得速度收益。这些收益是相当可观的在新款NVIDIA GPU 上混合精度可以将训练速度提高3 倍。在TPU 上训练时也是有好处的稍后会讨论这一点可以将训练速度提高60%。2. 混合精度训练的实践在GPU 上训练时混合精度的使用方法如下。fromtensorflowimportkeras keras.mixed_precision.set_global_policy(mixed_float16)通常情况下模型的大部分前向传播是使用float16 完成的除了像softmax 这样数值不稳定的运算而模型权重则使用float32 存储和更新。Keras 层都有variable_dtype 和compute_dtype 这两个属性。默认情况下这两个属性都被设为float32。使用混合精度后大多数层的compute_dtype 会切换为float16这些层会将输入转换为float16并以float16 格式执行计算使用半精度的权重。然而这些层的variable_dtype 仍是float32所以它们的权重能够从优化器接收到准确的float32 更新而不是半精度更新。请注意如果使用float16那么有些运算可能会在数值上不稳定特别是softmax 和交叉熵。如果你想让某一层不使用混合精度那么只需将参数dtype“float32” 传递给该层的构造函数。多GPU 训练虽然GPU 每年都在变得越来越强大但深度学习模型也在变得越来越大需要越来越多的计算资源。在单块GPU 上训练会使训练速度受到严格限制。要解决这个问题你可以添加更多GPU开始多GPU 分布式训练。在多台设备上进行分布式计算有两种方法数据并行data parallelism和模型并行modelparallelism。利用数据并行单个模型可以被复制到多台设备上。每个模型副本处理不同的数据批量然后将结果合并。利用模型并行单个模型的不同部分可以在不同设备上运行同时处理一批数据。这种方法对那些具有天然并行架构的模型效果最好比如具有多个分支的模型。在实践中模型并行只用于那些太大而无法在单一设备上运行的模型它不是用于加快普通模型的训练速度而是用于训练更大的模型。本节不会介绍模型并行而是会重点介绍你在大多数情况下会用到的方法数据并行。我们来看一下它的工作原理。1. 获得两块或多块GPU首先你需要能够使用多块GPU。目前谷歌Colab 只允许使用单块GPU所以你需要做以下两件事之一。获得24块GPU将它们安装在一台机器上这需要强力电源然后安装CUDA驱动、cuDNN 等。对大多数人来说这并不是最佳选择。在谷歌云、Azure 或 AWS 上租用多 GPU 虚拟机。你将能够使用带有预装驱动和软件的虚拟机镜像而且设置开销很小。如果你不是全天24 小时都在训练模型那么这可能是最佳选择。我们不会详细介绍如何创建多GPU 云虚拟机因为这些信息更新很快而且很容易在网上找到。如果不想花费精力来管理自己的虚拟机实例那么你还可以使用TensorFlow Cloud。这是我和我的团队最近发布的一个软件包。你只需在Colab 笔记本的开头添加一行代码即可开始在多块GPU 上进行训练。如果你正在Colab 中调试模型想无缝过渡到在尽可能多的GPU 上训练模型那么可以试一下这种方法。2. 单主机、多设备同步训练在一台具有多块GPU 的机器上如果你能够运行import tensorflow那么很快就可以开始训练分布式模型。它的工作原理如下。这几行代码实现了最常见的训练设置单主机、多设备同步训练在TensorFlow 中也叫“镜像分布式策略”。“单主机”是指所有GPU 都在一台机器上与之相对的是由许多机器组成的集群每台机器都有自己的GPU机器之间通过网络进行通信。“同步训练”是指所有GPU 模型副本的状态始终保持相同——有些分布式训练的变体并非如此。开启MirroredStrategy 作用域并在其中构建模型时MirroredStrategy 对象会在每块可用的GPU 上创建一个模型副本。然后每个训练步骤都以如下方式进行参见图13-2(1) 从数据集中抽取一批数据叫作全局批量。(2) 将这批数据分为4 个子批量叫作局部批量。举个例子如果全局批量包含512 个样本那么每个局部批量都有128 个样本。我们希望局部批量足够大能够保持GPU 持续运转所以全局批量一般都很大。(3) 4 个副本中的每一个都在自己的设备上独立处理一个局部批量即运行一次前向传播和一次反向传播。每个副本输出一个“权重增量”其含义是给定模型在局部批量上的损失相对于权重的梯度模型每个权重变量的更新大小。(4) 将4 个副本得到的局部梯度权重增量合并得到一个全局增量并将其应用于所有副本。由于这是在每一步结束时进行的因此各个副本总是保持同步它们的权重始终保持相同。在理想情况下在N 块GPU 上进行训练会带来N 倍的速度提升。然而在实践中分布式会引入一些开销特别是合并来自不同设备的权重增量需要一些时间。你获得的有效加速取决于所使用的GPU 数量使用 2 块 GPU速度约为 2 倍使用 4 块 GPU速度约为 3.8 倍使用 8 块 GPU速度约为 7.3 倍。这里假设全局批量足够大以保持每块GPU 满负荷运转。如果批量太小那么局部批量将不足以保持GPU 持续运转。TPU 训练除了使用GPU深度学习领域还有一种趋势那就是将工作流程转移至日益专业化的硬件上。这些硬件都是专门为深度学习工作流程设计的。这种单一用途的芯片叫作专用集成电路application-specific integrated circuitASIC。许多家大大小小的公司正在开发新的芯片但目前在这方面最重要的成果是谷歌的张量处理单元Tensor Processing UnitTPU它可以在谷歌云和谷歌Colab 上使用。在TPU 上训练需要跨越一些障碍但这些额外的工作是值得做的因为TPU 真的非常快。在TPU V2 上训练通常要比在NVIDIA P100 GPU 上快15 倍。对于大多数模型而言TPU 训练的成本效益平均比GPU 高3 倍。1. 通过谷歌Colab 使用TPU你可以在Colab 中免费使用8 核TPU。在Colab 菜单的Runtime代码执行程序标签下单击Change Runtime Type更改运行时类型你会发现除了GPU 运行时还可以选择TPU 运行时。使用GPU 运行时模型可以直接访问GPU无须任何特殊操作。如果使用TPU 运行时则并非如此。在开始构建模型之前你还需要进行额外操作连接到TPU 集群。它的具体代码如下。importtensorflowastf tputf.distribute.cluster_resolver.TPUClusterResolver.connect()print(Device:,tpu.master())你不必过分担心这段代码的作用——它只不过是一句“芝麻开门”将笔记本运行时连接到设备。与多GPU 训练的情况类似使用TPU 训练也需要开启分布式策略作用域即TPUStrategy作用域。TPUStrategy 遵循与MirroredStrategy 相同的分布式模板模型在每个TPU 内核上复制一次并且各个副本保持同步。下面来看一个简单的例子如代码清单13-4 所示。代码清单13-4 在TPUStrategy 作用域中构建模型fromtensorflowimportkerasfromtensorflow.kerasimportlayers strategytf.distribute.TPUStrategy(tpu)print(fNumber of replicas:{strategy.num_replicas_in_sync})defbuild_model(input_size):inputskeras.Input((input_size,input_size,3))xkeras.applications.resnet.preprocess_input(inputs)xkeras.applications.resnet.ResNet50(weightsNone,include_topFalse,poolingmax)(x)outputslayers.Dense(10,activationsoftmax)(x)modelkeras.Model(inputs,outputs)model.compile(optimizerrmsprop,losssparse_categorical_crossentropy,metrics[accuracy])returnmodelwithstrategy.scope():modelbuild_model(input_size32)我们几乎可以开始训练了。但是Colab 中的TPU 有些古怪它是双虚拟机设置也就是说托管笔记本运行时的虚拟机与TPU 所在的虚拟机不同。因此你无法利用本地磁盘与托管笔记本的虚拟机相连的磁盘存储的文件进行训练。TPU 运行时无法从本地磁盘进行读取。加载数据的方法有以下两种。利用虚拟机内存而不是磁盘中的数据进行训练。如果数据是 NumPy 数组那么你已经完成这一步了。将数据存储在谷歌云存储Google Cloud StorageGCS的存储桶中并创建一个数据集直接从存储桶中读取数据无须下载到本地。TPU 运行时可以从GCS 中读取数据。大型数据集无法整个存储于内存中只能选择这种方法。在本例中我们利用内存中的NumPy 数组CIFAR10 数据集进行训练。你会发现需要一段时间才会开始第一轮训练这是因为需要先将模型编译为TPU 可处理的对象。完成这一步之后训练速度就会变得飞快。2. 利用步骤融合来提高TPU 利用率TPU 拥有强大的计算能力。应该使用非常大的批量来训练以保持TPU 内核持续运转。对于小模型来说批量可能会变得非常大每个批量超过10 000 个样本。在处理特别大的批量时你应该相应地增大优化器的学习率。你还应该减少权重的更新次数但每次更新都会更加准确因为梯度是用更多数据点计算得到的所以每次更新时权重的变化幅度应该更大。然而你可以用一个简单的技巧来保持合理的批量大小同时充分使用TPU它就是步骤融合step fusing。具体做法是在每个TPU 执行步骤中运行多个训练步骤也就是说在从虚拟机内存到TPU 的两次往返之间做更多工作。要实现这一技巧只需在compile() 中指定steps_per_execution 参数比如steps_per_execution8 就是在每个TPU 执行步骤中运行8 个训练步骤。对于没有充分利用TPU 的小模型来说这可以带来巨大的速度提升。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

陕西示范校建设专题网站怎么打开公众号

第一章:Rust的Result类型如何改变游戏规则?对比C语言错误处理的4大缺陷在系统编程领域,C语言长期占据主导地位,但其错误处理机制存在根本性缺陷。Rust通过引入Result类型,从根本上重构了错误处理的范式,强制…

张小明 2026/1/10 18:53:24 网站建设

国外可以用什么网站做问卷o2o商城网站制作

金融领域图卷积网络在股票相关性分析中的应用关键词:金融领域、图卷积网络、股票相关性分析、深度学习、金融数据挖掘摘要:本文聚焦于金融领域中图卷积网络在股票相关性分析的应用。首先介绍了相关背景,包括研究目的、预期读者、文档结构和术…

张小明 2026/1/9 4:48:32 网站建设

辽宁省住房和城乡建设网站闽侯网站建设

3分钟掌握:免费获取Steam创意工坊壁纸的高效方法 【免费下载链接】Wallpaper_Engine 一个便捷的创意工坊下载器 项目地址: https://gitcode.com/gh_mirrors/wa/Wallpaper_Engine 还在羡慕别人桌面上那些精美的动态壁纸吗?Wallpaper_Engine下载工具…

张小明 2026/1/9 3:06:16 网站建设

5g互联如何取消网站备案wordpress330

Jupyter Notebook连接远程Miniconda-Python3.10环境运行PyTorch 在深度学习项目日益复杂的今天,一个常见的困境是:本地笔记本配置有限,跑不动大模型;而远程服务器虽然性能强劲,却缺乏便捷的交互式开发体验。如何既享受…

张小明 2026/1/10 23:39:34 网站建设

第一次和别人女友做网站怎样建设自己网站

DDColor黑白老照片智能修复:从技术落地到公信力认证的实践之路 在泛黄的老相册里,一张张黑白照片承载着几代人的记忆。然而,时光不仅带走了色彩,也模糊了细节。如何让这些沉睡的影像“活”过来?过去,这需要…

张小明 2026/1/9 17:34:08 网站建设

手机网站后台管理建开发网站

HexEdit:终极免费十六进制编辑器完全指南 【免费下载链接】HexEdit Catch22 HexEdit 项目地址: https://gitcode.com/gh_mirrors/he/HexEdit HexEdit是一款功能强大的开源十六进制编辑器,专门为Windows平台设计开发。这款工具为开发者、逆向工程师…

张小明 2026/1/10 3:17:56 网站建设