精华内容
下载资源
问答
  • 平台及大数 云正在重构的交通运输体系 Saas Paas 问题与挑战 用户类型:内部外部 终端类型 web移动loT 用户数量:百千万 可靠性要求:高 扩展性要求:自动弹性伸缩 周 时代的挑战 社交 应用为中心向数据为中心迁移 ...
  • 252016-06-12 23:24:46 +08:00在学,但是同时也在观望,还没开始正式用来写项目。...Golang 的自带电池很大,所以如果你们看 Golang 的 Web 框架,它们自然而然的使用了一个相对标准的接口,不但降低了入门 /迁移...

    25

    2016-06-12 23:24:46 +08:00

    在学,但是同时也在观望,还没开始正式用来写项目。

    我觉得 Rust 想要流行还是需要更大的跨平台标准库,能让用户用它的标准库就能完成大部分工作,甚至比如开一台 HTTP 服务器,而不用去用 crates 。

    Golang 的自带电池很大,所以如果你们看 Golang 的 Web 框架,它们自然而然的使用了一个相对标准的接口,不但降低了入门 /迁移难度,而且由于 Golang 的 HTTP 库是官方统一维护的,所以如果有 Bug 会很快被修复(特别像是加密之类的更需要如此)。

    Rust 的策略貌似是使用 crate ,让用户来完善这个语言的库,而自己则潜心去完成 std 下面和语言本身关系更密切的东西(比如 collection 之类)。但风险是会出现很多参差不齐的库,这些库的接口不一定遵循一个标准,甚至安全性都不一定能保证。

    这是目前我认为 Rust 和 Golang 相比,好的地方:

    1 、建立 struct 实例(不知道是不是应该这么称呼)的时候,你需要初始化这个 sturct 所定义的所有的值。这样就强制用户建立一个初始化函数来初始化这个 struct 。而在 Golang 里,你可以在不进行初始化值的前提下建立一个 struct ,而那样的话会漏掉部分需要初始化的变量,比如

    package teststruct

    type Test struct {

    private map[string]string

    }

    func (t Test) test() string {

    return t.private["test"]

    }

    package main

    t := Test{} // 你可以这样建立一个 struct 的“实例”。用一个 package 内的函数来初始化对 package 的用户来说“可选”的

    t.test() // 出错: map 需要初始化

    2 、没有 GC ,这样速度快多了,而且能更准确的控制数据消失的过程( Life Time )。

    3 、有多态,棒棒棒。

    这是我觉得同 Golang 相比不好的地方:

    1 、符号太多了,&'!*~等等。&'static str 这是啥。

    2 、 API 还是有变动,比如之前有~str ,现在删了,变成了 String 。

    3 、个人并不是非常喜欢 trait 的设定

    4 、 use 和 mod 比较令人糊涂

    展开全文
  • 概述最近看了很多关于云原生的文章,大体意思是机器学习服务这个行业将迎来一次巨大的变革。从13年我刚入行以来,机器学习在15年左右经历了模型深度的变革,从浅层学习逐步发展到了深度学习。到了20年这个节点,机器...

    概述

    最近看了很多关于云原生的文章,大体意思是机器学习服务这个行业将迎来一次巨大的变革。从13年我刚入行以来,机器学习在15年左右经历了模型深度的变革,从浅层学习逐步发展到了深度学习。到了20年这个节点,机器学习的整体服务架构会开始变革,逐渐会从Apache Yarn体系向Docker+Kubeflow这种云原生体系变革。

    为什么会出现这种迁移?许多技术同学都在网上发表了他们的看法,我认为比较好的文章是:https://www.jiqizhixin.com/articles/2019-01-31-14

    遗憾的是,发表这些文章的都是技术同学,更多地是从技术视角去看待这个问题,今天我尝试通过产品经理的视角,也就是用户具体应用的视角解释下云原生的好处。

    什么是云原生?

    可能有的同学不清楚什么是云原生,Docker+Kubeflow就是机器学习的云原生方案。首先给大家解释下Docker和VM(虚拟机)的区别。

    VM是目前所有“云”业务的根源,VM的诞生使得传统的物理机可以向外提供标准化的计算服务。这种服务需要使用者把应用App、依赖Bins/Libs以及操作系统Guest OS打包成VM镜像,然后发到物理机上即可运行。

    d1da77d6626b387454fc0a1e44c870da.png

    VM的一个问题就是因为VM镜像包含了Guest OS,所以VM是比较重的,可能每个VM镜像在10G左右,如果想同时拉起上千个任务,这个拉起时间成本非常高。

    再来看看Docker,Docker的一个好处是不包含Guest OS。用户只需要把应用App和Libs打包成一个Docker Image就可以部署到服务器上,而且一样具备VM所具有的资源隔离、网络隔离等优势,这就灵活了许多。看下Docker的架构图:

    b60dfa55e49a63a30b426d3e4d01e179.png

    举个例子,比如做一个简单的模型服务,只需要把模型+Flask+python环境打包好即可,如果模型不大的话,这种Docker image只有几百兆,可以秒级拉起。所以云原生给到用户的是弹性的计算环境,只要用户把自己要计算的业务封装成Docker image,传上来就能跑。

    云原生究竟有哪些优势

    云原生有资源调度更灵活,内存、网络隔离更完善等优点,这些都是技术优势,我今天重点介绍两个用户使用端的优势。分别是“更灵活的配置性”以及“业务模块的一致性”。

    1.更灵活的配置性

    传统的机器学习平台的架构是如下图这种模式:

    3ad18fd1a4d9d300a6cf6849528f36ce.png

    在用户层只给客户开放了APP的上传通道,而计算框架和依赖包需要平台层提前在集群配置好,而且不易更改。这会造成很大的麻烦,比如用户上传了一个python的代码包,这个包依赖于numpy这个python库,如果平台层没有内置numpy,用户是无法运行的,因为平台并没有给用户开放安装依赖包的口子。基于传统的Yarn调度的模式,在技术可行性方面也比较难实现用户自己在集群层面安装依赖。

    反过来看云原生的平台,用户可以在用户层自己指定依赖的lib包,设置可以安装计算框架。从用户开发环境的角度比较,云原生的机器学习平台一定是更user friendly。

    e194a57726481db410f78f4901e02443.png

    2.业务模块的一致性

    我们知道,传统的Apache Yarn,设置整个Hadoop生态是基于大数据开发为业务背景去设计的。相比于机器学习建模,大数据开发场景相对会更单纯。因为大数据开发环境的输入和输出都是表。而机器学习场景输入的是数据,输出的是模型,模型还要部署成服务才可以使用。基于这样的体系,会产生以下这种机器学习架构,

    1668b23389c8a2f37af59867084f91c7.png

    大部分玩算法的人会把模型计算引擎和模型服务引擎解耦,甚至时间长了,觉得这两个部分就应该是不同的模块。基于这样很割裂的架构,会衍生出模型传递网络性能问题、引擎间模型格式不兼容等一系列问题。

    有了云原生方式,会打破了Apache传统的以大数据方式建模的束缚。所有的建模相关的服务都可以做出Docker Image,部署到一个集群中,通过kubeflow的pipline去编排相互执行顺序。

    8224647f6eaa8749316d0f2a64c3b110.png

    这样就解决了上述提到的问题,让整个业务都可以集中在一个集群,同时相互之间又有资源隔离机制,使得业务模块一致性更强。

    总结

    经过这几天研究云原生机器学习业务的调研,我觉得kubeflow未来可期,需要所有从业的产品经理和开发人员重新更新自己的技术栈。

    有一个问题需要时间验证,机器学习PaaS层产品是否是伪命题?

    目前百度、阿里、腾讯都有PaaS层的机器学习产品,这些产品在云原生时代是否还有价值。因为云原生阶段会大大推动开源生态各种模型部署、算法框架的演进,用户完全可以利用这些开源的工具配合Docker在虚拟机上拉起来构建一个机器学习PaaS层服务,这样的话Yarn那一套有点落伍。

    未来可能在机器学习领域,只存在SaaS业务层和IaaS计算资源层,PaaS的比重会下降。这是我的一个猜测,作为PaaS层机器学习产品经理,==!好担心自己会下岗。

    展开全文
  • 作者:TensorFlow编译:ronghuaiyang导读TensorFlow2.0将聚焦于易用性,Keras成为了推荐的模型构建API,还有大家可能更加关心的1.x到2.0的迁移的问题,这里给你个完整的解答。多亏了一个令人难以置信的、多样化的...
    作者:TensorFlow
    编译:ronghuaiyang

    导读

    TensorFlow2.0将聚焦于易用性,Keras成为了推荐的模型构建API,还有大家可能更加关心的1.x到2.0的迁移的问题,这里给你个完整的解答。

    多亏了一个令人难以置信的、多样化的社区,TensorFlow已经成长为世界上最受欢迎的ML平台之一,这个社区包括:

    • 研究人员(例如,预测地震余震和检测乳腺癌)。
    • 开发人员(例如,开发应用程序来识别患病植物和帮助人们减肥)。
    • 公司(例如,通过eBay、Dropbox和AirBnB来改善客户体验)。
    • 还有很多其他的。

    去年11月,TensorFlow庆祝了它的3岁生日回顾了多年来添加的特性。我们对另一个重要里程碑TensorFlow 2.0感到兴奋。

    TensorFlow 2.0将专注于简单易用,并提供如下更新:

    • 使用Keras进行简单的模型建立和即时执行。
    • 在任何平台上进行生产中的健壮模型部署。
    • 强有力的研究实验。
    • 清理废弃的API,减少重复,从而简化API。

    在过去的几年里,我们向TensorFlow添加了许多组件。使用TensorFlow 2.0,这些将打包到一个全面的平台中,支持从训练到部署的机器学习工作流。让我们用一个简化的概念图来看看TensorFlow 2.0的新架构,如下图所示:

    fdbd369295e7602fc92091ba71f49042.png

    简单的模型构建

    在最近的一篇博客文章中,我们宣布Keras,一个用户友好的机器学习API标准,将成为用于构建和训练模型的核心高级API。Keras API使开始使用TensorFlow变得很容易。重要的是,Keras提供了几个模型构建api(顺序的、功能的和子类化的),因此你可以为你的项目选择正确的抽象级别。TensorFlow的实现包含增强功能,包括快速执行、即时迭代和直观调试,以及tf.data,用于构建可扩展的输入pipelines。

    下面是一个工作流程示例(在接下来的几个月里,我们将更新下面链接的指南):

    1. 使用tf.data加载数据。使用使用tf.data创建的输入管道读取训练数据。使用tf.feature_column来描述特征,例如bucketing和Feature cross。还支持从内存数据(例如NumPy)方便地输入。
    2. 使用tf.keras构建、训练和验证你的模型。或使用Premade Estimators。Keras与TensorFlow的其余部分紧密集成,因此你可以随时访问TensorFlow的特性。还可以直接使用一组标准的打包模型(例如,线性或逻辑回归、梯度增强树、随机森林)(使用tf.estimator API实现)。如果你不想从头开始训练模型,那么你很快就可以使用transfer learning来使用TensorFlow Hub中的模块来训练Keras或Estimator模型。
    3. 运行并调试 eager execution,然后使用 tf.function来利用图的优点。 TensorFlow 2.0在默认情况下运行时执行速度快,便于使用和调试。此外,tf.function注释透明地将Python程序转换为张量流图。这个过程保留了1.x的所有优点。基于TensorFlow图形的执行:性能优化、远程执行以及轻松序列化、导出和部署的能力,同时增加了用简单Python表示程序的灵活性和易用性。
    4. 使用分布策略进行分布式培训。对于大型ML培训任务,Distribution Strategy API使得在不更改模型定义的情况下,在不同的硬件配置上分发和训练模型变得很容易。由于TensorFlow提供了对一系列硬件加速器(如cpu、gpu和TPUs)的支持,因此可以将训练工作负载分布到单节点/多加速器以及多节点/多加速器配置,包括TPU Pods。虽然这个API支持多种集群配置,但是提供了在on-prem或云环境中的Kubernetes clusters上部署训练的模板。
    5. SavedModel导出 TensorFlow将基于SavedModel标准化,作为TensorFlow service、TensorFlow Lite和TensorFlow.js、TensorFlow Hub等的交换格式。

    在任何平台上进行生产中的健壮模型部署

    TensorFlow一直为生产提供直接的途径。无论是在服务器、边缘设备还是web上,TensorFlow都允许你轻松地训练和部署模型,无论使用何种语言或平台。在TensorFlow 2.0中,通过标准化交换格式和对齐的api,我们正在改进跨平台和组件之间的兼容性和对称性。

    一旦你训练并保存了你的模型,你就可以直接在你的应用程序中执行它,或者使用其中一个部署库来提供服务:

    • TensorFlow service :一个TensorFlow库,允许模型通过HTTP/REST或gRPC/协议缓冲区提供服务。
    • TensorFlow Lite: TensorFlow针对移动和嵌入式设备的轻量级解决方案提供了在Android、iOS和嵌入式系统(如Raspberry Pi和Edge TPUs)上部署模型的能力。
    • TensorFlow.js:支持通过Node.js在JavaScript环境中部署模型,例如在web浏览器或服务器端。js还支持在JavaScript中定义模型,并使用类似于keras的API在web浏览器中直接进行训练。

    TensorFlow还支持其他语言,包括 C, Java, Go, C#, Rust, Julia, R等等。

    强大的研究实验功能

    TensorFlow使新想法从概念到代码、从模型到发布变得容易。TensorFlow 2.0包含了许多特性,可以在不牺牲速度或性能的前提下定义和训练最先进的模型:

    • Keras Functional API和Model Subclassing API:允许创建复杂的拓扑,包括使用残差层、定制的多输入/输出模型和命令式的编写前向流程。
    • 自定义训练逻辑:使用tf.GradientTape 和tf.custom_gradient细粒度控制梯度计算。
    • 为了获得更大的灵活性和控制,底层的TensorFlow API总是可用的,并与更高级别的抽象一起工作,以实现完全可定制的逻辑。

    TensorFlow 2.0引入了一些新的扩展,允许研究人员和高级用户进行实验,使用了丰富的扩展,如Ragged Tensors、TensorFlow Probability、Tensor2Tensor等。

    使用这些功能,TensorFlow提供执行简单的原型设计与调试,分布式策略API和自动图,并支持tpu ,使TensorFlow 2.0一个易于使用的,可定制的,高度可扩展的平台,以及进行先进的ML研究和翻译研究生产pipelines。

    TensorFlow1.x和2.0之间的差异

    自从我们第一次开源TensorFlow以来,已经有了许多版本和API迭代。随着ML的快速发展,该平台已经得到了极大的发展,现在支持不同需求的不同用户组合。使用TensorFlow 2.0,我们有机会基于语义版本控制清理和模块化平台。

    以下是一些更大的变化:

    • 删除队列运行器以支持tf.data。
    • 删除图集合。
    • 改变变量的处理方式。
    • API符号的移动和重命名。

    此外,将从核心TensorFlow存储库和构建流程中删除tf.contrib。TensorFlow的contrib模块已经超出了单个存储库中可以维护和支持的范围。较大的项目最好单独维护,而较小的扩展将逐步扩展到核心TensorFlow代码。已经成立了一个特别兴趣小组(SIG)来维持和进一步发展一些更重要的计划项目。如果您有兴趣投稿,请参与这个RFC。

    兼容性和连续性

    为了简化到TensorFlow 2.0的迁移,将有一个更新TensorFlow 1的转换工具。使用TensorFlow 2.0兼容api的Python代码,或者标记代码不能自动转换的情况。

    并不是所有的更改都可以完全自动完成。例如,一些不推荐的api没有直接对应的api。这就是为什么我们引入了TensorFlow .compat.v1兼容模块,它保留了对完整TensorFlow 1的支持。(不包括tf.contrib)。此模块将在TensorFlow 2的生命周期内进行维护。并将允许使用TensorFlow 1编写代码。保持功能。

    此外,SavedModels或已存储的GraphDefs将向后兼容。SavedModels用1.x保存。将继续加载并在2.x中执行。但是,2.0中的更改将意味着原始检查点中的变量名可能会更改,因此使用包含已转换为2.0的代码的2.0前检查点并不保证能够工作。有关详细信息,请参阅Effective TensorFlow 2.0指南。

    我们相信TensorFlow 2.0将给社区带来巨大的好处,并且我们已经投入了大量的努力使转换尽可能容易。然而,我们也认识到迁移当前的pipeline需要时间,并且我们非常关心社区在学习和使用TensorFlow方面的当前投资。我们将提供12个月的安全补丁到最后一个1.x。为了给我们现有的用户足够的时间进行转换,并获得TensorFlow 2.0的所有好处。

    TensorFlow 2.0的时间轴

    TensorFlow 2.0将在今年年初作为公众预览版发布。但是为什么要等呢?你已经可以使用 tf.keras以TensorFlow 2.0的方式进行开发了。keras和即时执行,预打包的模型和部署库,分布式策略API今天也已经部分可用。

    我们对TensorFlow 2.0和即将到来的变化非常兴奋。TensorFlow已经从一个用于深度学习的软件库成长为一个适用于所有类型ML的完整生态系统。

    英文原文:https://medium.com/tensorflow/whats-coming-in-tensorflow-2-0-d3663832e9b8

    215d3a6509d8cd184aeac71065948c01.png

    请长按或扫描二维码关注本公众号

    展开全文
  • 4发行版中,Java2平台有了个全新的AWT焦点子系统,我们对此进行了独家报导。Java语言工程师BertrandPortier对新的类和方法进行了初步研究(包括基本的KeyboardFocusManager),这些类和方法中包含该AWT焦点子系统。他...

    新的 Java 标准版,1。4 发行版中,Java 2 平台有了个全新的 AWT 焦点子系统,我们对此进行了独家报导。Java 语言工程师 Bertrand Portier 对新的类和方法进行了初步研究(包括基本的 KeyboardFocusManager),这些类和方法中包含该 AWT 焦点子系统。

    他还提供了迁移到新的 API 时调整编程工作的技巧,一个能工作代码样本示例及其它更多内容。请在讨论论坛与作者和其它读者分享您关于本文的想法。

    Java 2 标准版,1。4(也称 Merlin)引入许多人们期待已久并为之雀跃的对 Java 平台的更改。

    其中一个就是对 AWT 焦点管理子系统的更改。这个 AWT 焦点子系统的新实现与旧的完全不同。实际上,许多代码都被完全重新编写过了,这样做在某些情况下是以牺牲向下兼容为代价的。我们认为这些措施是必需的,原因在于旧的 AWT 焦点子系统不完善。

    改进了的焦点模型的中心是新的 KeyboardFocusManager 类,它由几个增加的 Swing 类和 AWT 类支持。本文的绝大部分用于让我们学习这些更改,并讨论它们会如何影响您的 Java 编程工作。在本文的结束部分,我将提供一些技巧和一个亲身实践的示例来帮助您将当前的应用程序和新的 API 相集成。

    请注意,本文假定您了解与 AWT 焦点子系统以前的实现相关的使用和术语。

    KeyboardFocusManager 简介

    KeyboardFocusManager 类用于管理与新的 AWT 焦点子系统的焦点相关的任务。它负责活动的和已定焦的窗口以及当前的焦点所有者。

    它的任务是让客户机代码可以启动焦点的更改并调度与焦点相关的所有事件。

    KeyboardFocusManager 给 AWT 焦点子系统带来许多新功能。其中的一些功能如下:

    用 Shift-Tab 将焦点转到 tab 组的前一个组件。

    跟踪由鼠标引起的焦点遍历行为。

    确定当前的焦点所有者。

    KeyboardFocusManager 有四个字段:

    FORWARD_TRAVERSAL_KEYS:通常是 Tab(或 Ctrl-Tab)键

    BACKWARD_TRAVERSAL_KEYS:通常是 Shift+Tab(或 Ctrl-Shift-Tab)

    UP_CYCLE_TRAVERSAL_KEYS:无缺省值

    DOWN_CYCLE_TRAVERSAL_KEYS:无缺省值。

    全部

    展开全文
  • 详解云原生机器学习平台的优势

    千次阅读 2020-01-22 21:41:13
    最近看了很多关于云原生的文章,大体意思是机器学习服务这个行业将迎来一次巨大的变革。从13年我刚入行以来,机器学习在15年左右经历了模型深度的变革,从浅层学习逐步发展到了深度学习。到了20年这个节点,机器学习...
  • 过去两个月团队一直在忙着将基于后端分析的技术方案移植到前端设备,由于都英伟达的硬件平台迁移过程还算顺利。下面分享一下什么是后端分析、什么是前端分析、什么边缘分析,当然叫后端计算、前端计算、边缘...
  • 是什么意思? React使构建,维护和驯服Reactive Apps成为一种乐趣。 如何? 使用熟悉的Rx API创建React式微型应用程序,可以通过实现React构建块和模式来水平或垂直扩展。 简而言之! React旨在与您的应用...
  • oss电信业务开展和运营时所必需的支撑平台。OSS电信运营商的一体化、信息资源共享的支持系统,它跨业务的、端到端全过程的管理。用的阿里云的oss对象存储,大概意思就是把自己的资源放到oss系统上,这样做的...
  • 去中心化的信用——是什么意思? Airbnb是如何为陌生人之间设计信任的 基于证明的信用服务范围 区块链格局 直接和间接的利益 对基础功能的解释说明 智能预言机(Smart Oracles) 一个被信任的区块链能实现什么? 身份...
  • 传统行业侧重于规范,流程,功能的复杂性以及正确性,而互联网更侧重于“快”,这里的“快”有两方面的意思,一个产品运行效率要高,速度要快,另外一个开发效率要快,相应市场需求要快。 从另外一个侧面说,...

空空如也

空空如也

1 2 3
收藏数 50
精华内容 20
关键字:

平台迁移是什么意思