分析印度杂志
现在读
用TensorFlow 2.x构建可扩展的机器学习模型
分析印度杂志

用TensorFlow 2.x构建可扩展的机器学习模型

免费数据工程研讨会>>

当数据变得非常大时,机器学习模型的性能就成为一个问题。在这种情况下,机器学习模型需要进行缩放,这不仅有助于节省时间和内存,而且有助于提高模型的性能。TensorFlow 2。X提供了一些功能,可以轻松有效地扩展机器学习模型。在本文中,我们将讨论可扩展的机器学习模型TensorFlow2. x。首先,我们将尝试理解共享内存模型和分布式内存模型,最后我们将看到TensorFlow 2是如何实现的。X简化了这些特性。我们将在本文中讨论的要点列在下面的目录中。

表的内容

  1. 什么是可扩展机器学习?
  2. 共享内存模型(SMM)
  3. 分布式内存模型(DMM)
  4. 从SMM到DMM的过渡
  5. GPU和TPU加速器
  6. TensorFlow 2.x的可伸缩性

让我们继续理解可扩展的机器学习。

什么是可扩展机器学习?

在现实世界中,数据量是如此之大,机器学习模型的可扩展性成为了我们主要关注的问题。大多数的学习者开始学习科学的数据数据量非常小,小到足以在一台机器上适应流程和模型。但在现实世界中,许多应用程序需要将ML模型扩展到多台机器。在各种情况下,模型需要处理大型数据集,比如处理股票市场数据时,模型需要采用新数据并快速生成预测。在一毫秒内,模型的预测就会变得毫无用处。在这种情况下,可伸缩机器学习的应用程序旨在将统计、系统、机器学习和数据挖掘结合在这样一个过程中,可以灵活地适应任何环境。

更正式地说,“可伸缩”这个词在这里的意思是创建一个模型,它可以处理任意数量的数据,而不会增加内存、时间等资源的消耗。时使整个大数据机器学习模型的计算速度可以积累一些问题由于缺乏可伸缩性就像我们能找到的问题的拟合模型对大尺寸的数据,如果我们有一个模型一件事它可以减缓我们模型的计算速度。这可能导致我们需要牺牲准确性,因为为大规模数据优化模型变得不可行且耗时。

在可扩展的机器学习中,我们试图构建一个系统,其中的系统组件都有自己的工作或任务,这有助于整个系统快速走向问题的解决,而不浪费太多的内存,同时也提高了性能。这让我们引入了共享内存模型和分布式内存模型,这是两种用于建模的基本硬件结构设计。

共享内存模型

当我们在一台机器上开发一个模型时,我们可以很容易地在整个机器上传递信息,这样机器上的所有核心都可以访问相同的内存,模型的线程也可以很容易地访问信息。这种类型的模型可以称为共享内存模型。因为它们共享变量,内存给系统中的多个进程。这种共享过程允许不同的进程彼此通信。

分布式内存模型

当我们遇到单台机器无法处理的问题时,我们就需要多台机器组成的网络来处理问题,这样它们就可以相互沟通,从而完成解决问题的过程。这意味着网络允许机器根据需求互相传递消息。

图片来源

上面的图像是一个分布式存储系统与三台机器的说明。

从SMM到DMM的转变

可伸缩性也可以看作是进程从共享内存模型向分布式内存模型的过渡。任何分布式内存模型的一些基本概念是:

  • 这些机器通过网络的节点完全连接在一起。
  • 机器之间的网络连接是双向的。

根据这些基本概念,我们需要注意以下几点:

  • 模型的哪个计算线程在哪个机器中。
  • 如何在网络中移动数据来完成这个过程而不花费太多的时间和面临的问题。

在共享内存模型上开发模型比较容易,但它有自己的缺点,比如内核、计算线程和内存的数量有限。在大数据方面,模型往往比单个机器的RAM内存更大,而分布式系统允许我们通过合并两个以上的系统来增加内存水平。此外,它还为不同的计算提供了不同的空间,从而提高了模型的速度。

GPU和TPU加速器

尽管我们可以在共享内存模型中使用GPU(图形处理单元)来增加内存和计算能力,但在任何分布式内存系统中,我们都可以使用TPU(张量处理单元)。使用英伟达GPU是一个更好的选择,可以利用共享内存模型的好处,但它也在一定程度上受到限制。如果我们需要更多的内存来共享,或者需要更多的内核来进行计算,那么在这种情况下,我们需要使用分布式内存模型,谷歌TPU是更好的选择,可以用作这个过程的加速器。谷歌TPU是专门为分布式内存模型设计的,它提供了独立的IP地址和通信协议。使用它还可以节省我们处理通信层的时间,该通信层由提供的加速线性代数层(XLA)负责,可以使用TensorFlow API公开。

TensorFlow 2.x的可伸缩性

典型的TPU架构是在TensorFlow中对批量数据进行序列化的基础上工作的,使用一个名为TFrecord的模块,使数据序列化更加容易。在分布式内存模型中,这是非常重要的,也是最难完成的任务之一。TFrecord数据序列化简化了它,并为大规模部署提供了帮助。下图是使用GPU和TPU加速器时共享和分布式内存模型的架构师。

另请参阅

TensorFlow API使得在训练模型时很容易执行许多中间过程。TensorFlow 2。X有一个自定义的训练循环特性,我们可以使用它同步训练任意数量的模型。在之前的版本中,我们没有这个选项,这意味着API只允许训练一个模型。

TensorFlow 2。在默认情况下,急切执行是打开的,这是一种有助于在更短时间内计算操作的编程环境。计算操作给出了刚性值,避免了以后运行计算图的过程。这有助于调试模型。它是一个用于实验的灵活的机器学习平台。使用这个,我们可以调用一个操作来测试运行中的模型。并允许使用python控制流而不是图形控制流。

TensorFlow 2。X允许我们使用tf编译的函数。函数模块,用来绘制程序的图形。自定义函数的引入增强了灵活性tpu随着gpu有。还有其他一些新特性,比如API tf.Distributed。该策略允许在多台机器上对模型进行分布式培训,而API的主要目标是提供一个易于使用的界面,具有良好的性能和易于在策略之间切换。Tensorflow 2。X也有tf的扩展。数据对象,可以方便地指定数据如何在几个核心之间分布。这样就很容易理解数据在核心中的分布。

通过总结所有这些特性,我们可以说热切模式是共享内存模型中所需要的。自定义函数的存在使得模型执行缓慢。执行缓慢的原因是自定义函数应该应用在模型的远程执行中。调试延迟执行模型比较困难,因为它依赖于跟踪。在这种情况下,策略函数会有所帮助,因为它的策略是使代码对任何接口都透明。

同样,如果开发人员要从共享内存模型切换到分布式内存模型,公共代码路径使他们能够编写和理解方法。模型的代码可以首先作为共享内存模型运行,在需求中,它们可以切换到分布式内存模型的另一个接口。同时允许在GPU模式下进行调试,使过程更快。

最后的话

正如我们在本文中看到的,开发共享内存模型类别的模型比开发分布式内存模型更容易。由于性能增强是任何开发人员的主要目标,我们需要创建DMM类别模型。TensorFlow是这样一个很好的库,它不仅允许我们轻松地开发DMM,而且还提供了可以帮助我们调试的特性,类似的代码路径使模型在SMM和DMM之间转换灵活。

引用:


加入我们的不和服务器。加入一个有吸引力的在线社区。加入这里


订阅我们的通讯

通过分享你的电子邮件获得最新的更新和相关的优惠。

188BET网页

滚动到顶部
Baidu