网站首页 > 理财知识 >

pymt 信用卡交易种类(信用卡pay交易是什么意思)

2023-04-22 11:32:23 理财知识 阅读 0

Bitget下载

注册下载Bitget下载,邀请好友,即有机会赢取 3,000 USDT

APP下载   官网注册


选择你的深度学习工具


为什么您的工具可能取决于您组织的团队结构


选择您的深度学习工具

塞萨尔·卡莱瓦里诺·阿拉贡在Unsplash上的照片

免责声明:本文的观点是我自己的观点,并不一定反映我的组织或其他使用或开发所描述代码库的人的观点。

介绍

机器学习模型的生命周期长、复杂且容易出错。机器学习和数据科学家需要使用能够轻松准备数据、定义模型、执行他们想要的训练循环并为模型服务的工具。同时,一切都应该是可重现的,以便将模型问题追踪到其生命周期中的问题是可行的。

Jupiter notebook 是数据和机器学习从业者最早学习的工具之一,用于管理整个生命周期,同时保留支持理解的周围文本。由于它们提供的快速反馈循环,它们代表了一个很好的学习工具。但是,当从学习/原型设计环境转移到将机器学习模型部署到生产环境的需要时,它们变得越来越没用。

在生产 ML 模型时,控制数据和模型的版本非常重要,以便了解我们正在运行的模型来自哪里,以及控制运行的实验以防止在相同的实验上浪费更多的计算。此外,有用的 ML 模型是在大量数据上训练的,需要在集群或云上以一致和自动化的方式进行训练,而 Jupiter notebook 并不是实现这一目标的最佳工具。

当他们处于探索阶段时,可以在科学家的笔记本电脑中对训练运行进行原型设计,但随后需要将它们转移到支持具有高计算资源的长期工作的环境中。移动训练时,需要远程复制本地执行环境才能知道一切正常,而这通常使用 docker 容器和 python 环境来完成,因此不需要进一步的返工。

科学家需要进行实验,然后他们需要包含用于他们任务的领域逻辑并且易于扩展他们的实验的工具,同时遵循良好的工程实践。

特定领域的深度学习工具

大多数从业者使用 ML 的方式是为他们的深度学习分支使用特定领域的工具。此类工具包括用于数据准备、训练和评估模型的代码、在新数据(推理)上使用它们、对结果进行后处理,在某些情况下还可以部署它们。这种方法非常普遍,因为它很方便:

  • 执行模型生命周期中的不同步骤只需执行一个 CLI 命令
  • 代码通过该领域的最新研究得到改进,所有团队成员都从中受益
  • 由于代码是特定领域的,因此对于具有领域知识的科学家来说几乎没有额外的认知负担,他们可以轻松地将概念映射到代码。
  • 团队的最佳实践通常编码在工具中。想想到处都是数据清理、训练超参数和默认值。

在我攻读机器翻译的博士期间,这也是我最喜欢的解决方案,也是我唯一知道的解决方案。我按顺序使用了 Nematus(当时它还是基于 Theano!)、OpenNMT-py和Fairseq,然后再分叉Fairseq 以获得语音翻译支持。

对我来说,主要优势是使用基于社区的工具,这些工具可以快速实施最新的研究成果,从而更快地产生研究成果。

然而,与任何工具类似,使用这种平台也存在缺点。

首先,此类代码库的目标是正确快速地实施最新的研究成果,而不是始终为未来提供稳定的基础。
当底层深度学习框架的版本跳转破坏了追溯兼容性时,就会出现问题。当从 Tensorflow 切换到 Tensorflow 2 时,Pytorch API 长期不稳定,Theano 刚刚被放弃,迫使依赖它的项目做出艰难的决定。在这种情况下,如果维护人员不想使用已弃用的软件,他们必须使用更新的 API 重写(大部分)代码库,切换框架,例如从 Theano 迁移到 Tensorflow 的 Nematus,甚至获得放弃软件,但这肯定是最昂贵的选择,因为它还需要数据/机器学习科学家不具备的技能。

不幸的是,快速变化的框架问题的唯一解决方案是自己编写所有深度学习操作。Marian-nmt是我所知道的唯一可以做到这一点的工具,它的结果非常好,因为它可以优化代码的任何方面。缺点是它需要 C++ 技能,这在科学家中并不常见,并且可能需要更高的开发工作量,而该工具特定于一个应用程序领域(机器翻译)。

第二个问题:所有权。小型研究小组可以选择务实的方法,并使用可满足其需求的最佳开源工具。我在博士期间就是这样做的。它让我可以专注于我的研究而不是软件开发。另一方面,无法控制您工作的主要工具的开发可能会隐藏巨大的成本。

这些项目有很多例子破坏了它们与一个巨大的公关的复古兼容性并且没有通知。发生这种情况时,如果您的研究分支与主分支分离并且不再与新设计兼容,那么您将遇到大麻烦。例如,我的FBK-Fairseq-ST分支(不再维护)与当前主分支不兼容,主要是因为同时对 Fairseq 进行了重大重写,当前维护者必须跟上它。

解决方案是开发自己的独立项目,但这会增加开发成本,而且世界各地开发最新功能的其他人不会提供“免费午餐”。对于小团体来说,这可能很难实现,但减少我们自己对其他项目的依赖是有回报的,特别是如果它们正在积极开发且不稳定。

特定领域工具的另一个缺点是组织有多个团队为不同任务进行深度学习。不同的团队最终将在其深度学习生命周期中使用不同的代码库。这些代码库是独立的,但并非完全不相关,因为它们主要用于训练和测试 DL 模型。这种情况会导致工作重复,并且一方面几乎没有共享最佳实践;当一个团队的成员需要使用另一个团队的工具时,认知负担会很大。

重复的工作出现在训练循环中,最近的优化器仍然不是框架的一部分,还有转换器层的实现。认知负荷来自于理解代码的深度学习部分,但对特定领域知之甚少。项目之间不同的代码结构和体系结构以及对代码的个人期望加剧了这种混乱。

当要让团队通过共享平台进行交流时,一个可能的解决方案是使用通用的机器学习引擎。

机器学习引擎

机器学习引擎的主要思想是它支持数据加载和批处理、模型定义、训练和推理的广泛通用操作,以便多个团队在不同任务中使用和优化。每个团队只需要关心数据处理的代码,这取决于任务并且不够通用,无法在引擎代码中完成。

此类软件的唯一示例是Returnn,这是一种机器学习引擎,开发时考虑了序列到序列的问题。Returnn 基于 Tensorflow,但在兼容模式下使用其低级 API,不会过多依赖发展趋势。

此外,通过使用低级 API,它生成的模型图包括自己的搜索算法,也在 Returnn 中定义,因此不需要额外的代码来为它们提供服务。

它的工作方式是引擎将定义训练和验证数据、模型定义和训练超参数的配置文件作为输入。然后,团队的职责是通过特定任务处理准备他们需要的数据并维护模型。数据加载、训练和推理都由与任务无关的引擎管理。

模型在引擎解释的高级抽象中定义,但实际上并不需要它作为依赖项。配置文件可以很容易地存储在版本控制下的团队拥有的存储库中,也许最重要的是,它们可以很容易地在团队之间共享,因为底层平台完全相同。

一个相关的优势在于可维护性。团队不需要维护自己的机器学习工具。这种方法可以防止一些工具被废弃,然后最终使用旧的 tensorflow 或 pytorch 版本,这使得它们难以更新。使用 Returnn,配置文件几乎不会变旧,而且当它们变旧时,更新它们的工作比更新完整平台要少得多,而所有维护工作都是为了让 Returnn 保持最新。

主要问题是,由于所有的训练周期和从配置中创建模型都需要 Returnn,因此在不修改代码的情况下很难做一些高度实验性的事情。

此外,为了在团队之间维护一个公共平台,它的维护应该是团队之间的共同工作,或者委托给一个专门的团队。在这两种情况下,所有利益相关者都需要进行强有力的沟通,以使工具保持对每个人的相关性和有用性。如果不这样做,软件就不再对每个人都可用,但是当它成功完成时,它可以从团队中解放出很多精力,因为他们可以专注于解决他们的问题,而不是开发通用的深度学习代码。

最后一点,它需要与 Keras 等高级工具进行比较。Keras 为整个深度学习生命周期提供了许多功能,包括 Returnn 的强项。它们的设计不同,因为 Returnn 是一个独立的软件,而 Keras 是一个用于开发深度学习工具的框架。然后,Keras 将用于构建特定于任务的工具,回到我们上面提到的相同问题,但维护工作要少得多,因为它是由 Google 支持的开源软件。

合成

总的来说,这是一个团队组织和优先级的问题。如果可以就团队之间共享的单一工具进行协作,那么共同工作的中央引擎可以让科学家们更多地关注他们的问题。它允许轻松共享代码和最佳实践,但它需要团队之间的高度沟通。另一方面,如果团队差异太大而无法使用共享代码,或者无法有专门的人员来开发引擎,那么特定于任务的工具将确保更大的灵活性。

我的经验

直到两年前,我只知道特定于任务的工具。我在三年内更换了三次工具,同时试图通过寻找更快的模型训练或易于开发来最大限度地提高我的生产力。与旧的 Nematus 相比,OpenNMT-py 的质量有了很大的提升,首先是因为 pytorch 是一个比 Theano 更快(在模型训练方面)的框架,还因为代码结构更好并且更灵活。Fairseq 实现了比 OpenNMT-py 更多的功能(特别是 Transformer 的工作实现,OpenNMT-py 仍然缺乏),并且还能够更快地训练。但是,我认为开发人员在一年内做出了两次重大的突破性改变。这真是令人沮丧。

当我在获得博士学位后开始现在的工作时。我与 Returnn 取得了联系。最初,很难理解不同的哲学,但由于以下几个原因,我开始越来越欣赏它:

  1. 您的模型可以作为发现另一个团队的直接结果而改进
  2. 次要任务的工具可以留在开发中, Returnn 中的代码不能
  3. 模型网络可以存储为人工制品,并且完全独立于代码而不是运行它
  4. 我在不同任务和团队的交叉点工作,每种任务使用一个工具真的很好,不需要上下文切换
  5. 生成的模型仍然是 Tensorflow 模型,没有深奥的格式,并且仍然可以轻松集成到不同的应用程序中。

结论

当前的应用深度学习领域由围绕深度学习框架构建的工具主导,专门用于单个或几个任务。它们在实现框架、一些设计选择和对外部依赖项的依赖方面有所不同。但是,它们在主要设计思想上都是相似的。

在本文中,我想分享另一个构建深度学习工具的选项,使用 Returnn 的示例,这是我所知道的唯一深度学习引擎。它展示了另一种开发深度学习工具的方法,这种方法在多个团队从事不同任务但在同一代码库上协作的环境中更有意义。

相关内容

pymt 信用卡交易种类(信用卡pay交易是什么意思)文档下载.: PDF DOC TXT

猜你喜欢