Azure 机器学习是集成式的端到端数据科学和高级分析解决方案。 它可让数据科学家以云的规模准备数据、开发试验和部署模型。 Azure 机器学习的主要组件包括:
这些应用程序和服务相结合,有助于显著加快数据科学项目的开发和部署进度。下图是微软中国官方发布的机器学习概述,
试验服务处理机器学习试验的执行。 它还通过提供项目管理、Git 集成、访问控制、漫游和共享来支持 Workbench。通过简单的配置,可以跨各种计算环境选项执行试验:
试验服务构造虚拟环境,确保脚本可在隔离环境中执行并生成可重现的结果。 该服务会记录运行历史记录信息,并直观显示历史记录。 可以从试验运行中轻松选择最佳模型。
模型管理服务可让数据科学家和开发运营团队将预测模型部署到各种环境。 从训练运行到部署,模型版本和沿袭都可受到跟踪。 可在云中存储、注册和管理模型。使用简单的 CLI 命令,可在 Docker 映像中将模型、评分脚本和依赖项容器化。 这些映像会注册到托管在 Azure 上你自己的 Docker 注册表(Azure 容器注册表)中。 可将这些映像可靠部署到以下目标:
Azure 容器服务 (ACS) 中运行的 Kubernetes 用于云中的扩展部署。 在 AppInsights 中捕获模型执行遥测数据,以进行可视分析。
MMLSpark(用于 Apache Spark 的 Microsoft 机器学习库)是针对 Apache Spark 提供深度学习和数据科学工具的开源 Spark 包。 它将 Spark 机器学习管道与 Microsoft 认知工具包和 OpenCV 库相集成。 使用它可为大型映像和文本数据集创建功能强大、高度可缩放的预测模型与分析模型。 部分亮点包括:
在讲解缓存策略模式时,我们先来讲解一下三个重要的概念,Read-throug、Write-Throug和Write-Behind。
当应用系统向缓存系统请求数据时(例如使用key=x向缓存请求数据);如果缓存中并没有对应的数据存在(key=x的value不存在),缓存系统将向底层数据源的读取数据。如果数据在缓存中存在(命中key=x),则直接返回缓存中存在的数据。这就是所谓的Read-throug。
当应用系统对缓存中的数据进行更新时(例如调用put方法更新或添加条目),缓存系统会同步更新缓存数据和底层数据源。
当应用系统对缓存中的数据进行更新时(例如调用put方法更新或添加条目),缓存系统会在指定的时间后向底层数据源更新数据。 不言而喻,采用cache目的很简单:减轻后台服务压力,提高整体应用性能和效率。先看一下AZURE的cache处理过程,
cache是一把双刃剑,优点毋庸置疑,但同样会带来一些值得考虑的问题,如下: 1.缓存数据的生命周期:缓存的过期策略,即当数据一定时间内没有访问时会从缓存中清楚。为了使得缓存高效,就要确保过期策略匹配应用程序访问数据的模式,策略是根据应用动态调整的。缓存只有对相对静止数据或频繁访问的数据才是最高效的。 2.清除数据:缓存和内存一样都有自己的存储空间即存储空间有限的,当你在需要缓存数据时就需要释放部分缓存空间。一般采用LRU(least-recently-used)策略来置换空间,当然你可以通过配置动态调整策略。 3.初始化缓存:根据自己的业务策略来初始化自己的缓存。 4.一致性:实现Cache-Aside模式并不能保证Cache和数据仓库之间的数据一致性。因为数据仓库中的数据可能在任何的时候都可能由其他程序锁修改,而这个修改不会及时的反映到Cache上,只有在下一次Cache从数据仓库中更新数据的时候才会有解决这个数据不一致的问题。如果数据仓库中数据频繁由非Cahce程序更新的话,这种问题同步问题会变得更加明显。 5.本地缓存:Cache也是可以做到应用本身里面的。Cache-Aside模式在一些应用频繁访问相同的数据的时候尤其有效。
1.当Cache不提供原生的Read-Through和Write-Through操作 2.资源的需求是不可预测的时候。Cache-Aside模式令应用可以根据需求来加载数据。对于应用需求什么数据,不需要提前做出假设。