整套解决方案:IOT/智能设备日志解决方案(2):全方位数据采集

优采云 发布时间: 2022-11-23 03:24

  整套解决方案:IOT/智能设备日志解决方案(2):全方位数据采集

  数据采集

  LogHub提供30+种开箱即用的数据采集方式,包括日志、移动端、服务器端、程序、SDK、网页、嵌入式终端等直连云产品。在综合日志采集

中,我们简单介绍了各种方法。下面我们主要介绍IOT场景中主要涉及的两类数据采集:设备端采集和服务端数据采集。

  服务器数据获取

  服务器日志采集

是通过Logtail实现的。Logtail作为日志采集代理,可以通过中心服务器进行管理和控制。只需点击鼠标或一个 API,它就可以在几秒钟内向数百万台机器发出数据采集

指令。

  Logtail覆盖了阿里巴巴全站的物理机、虚拟机、容器。它负责每天从数百万台服务器采集

数据。同时在阿里云公有云、友商云、用户IDC拥有数十万安装量。所有Linux版本、Window、Docker、K8S等环境;支持数十种数据源对接,体验双十一、过年红包等挑战。

  得益于集团复杂场景的锤炼,Logtail在性能、资源消耗、可靠性、多组合隔离等硬指标上领先于开源代理(如Fluentd、Logstash、Beats)。可满足国内最大的直播网站、最大的教育网站、最大的财经网站的苛刻要求。与开源代理的主要区别在于日志格式的丰富性(目前的Logtail版本已经支持Logstash和Beats协议,这些开源插件可以在Logtail上无缝运行)。

  Kubernetes 数据采集

  目前,越来越多的物联网企业开始在K8S/Docker上构建服务器应用,以满足轻量级部署、快速扩展、降低运维成本的需求。Logtail对K8S/Docker场景也很友好。

  Logtail针对Docker/K8S等场景做了很多适配工作,包括:

  

" />

  可以自豪的说,Logtail的方案是K8S下所有agent中最完整最完整的。感兴趣的可以参考LC3视角:Kubernetes下日志采集、存储和处理的技术实践。

  设备端全局数据采集

  C Producer Library继承了Logtail的稳定和边界特性,可以定位为“轻量级Logtail”。虽然它没有Logtail的实时配置管理和文件采集

机制,但它有其他70%的功能,包括:

  有关 C Producer Library 的更多信息,请参阅目录:

  目前我们针对不同环境(如网络服务器、ARM设备、RTOS设备)从大到小提供三种解决方案:

  同时,我们对Producer进行了一系列的性能和资源优化,确保数据采集可以“插”到任何IOT设备上。其中,C Producer Bricks版内存占用达到极限(库容量13KB,运行内存4KB以内)。

  使用C制作人系列的客户包括:百万日活的天猫精灵、孩子最爱的故事机火火兔、全世界码牛、钉钉路由器、兼容多平台的视频播放器、帧图实时传输相机等

  

" />

  这些智能 SDK 每天的 DAU 超过一百万,分布在世界各地的设备上,每天传输数百 TB 的数据。关于C Producer Library的详细介绍,请参考这篇文章:智能设备日志工具:嵌入式日志客户端(C Producer)发布。

  全球数据采集加速

  物联网设备作为典型的“端”设备,通常部署在全国乃至全球范围内,部署区域的网络条件难以保证,这会给数据采集带来巨大的问题:数据采集受网络质量、可靠性难以保证。

  针对以上问题,日志服务与阿里云CDN推出了全局数据上传自动加速解决方案:“基于阿里云CDN硬件资源,全局数据就近接入边缘节点,通过内部高速路由至LogHub。高速通道,大大降低了网络延迟和抖动”。

  该方案具有以下特点:

  在我们的日志上传基准测试中,全球7个地区整体延迟降低了50%,中东、欧洲、澳洲、新加坡效果明显。除了平均延迟的降低,整体的稳定性也有了很大的提升(见下图,几乎没有抖动,超时请求基本为0)。保证无论在世界的何时何地,只要访问这个加速域名,就可以高效便捷的采集数据到想要的Region。

  关于全球采集加速的更多信息,请参考我们的文章:数据采集新形态-全球加速。

  解决方案:云端分布式训练:云上的机器学习引擎

  作为本期《云训练模型的大数据解决方案》的最后一章,本期我将带大家畅所欲言的使用机器学习,甚至说说一些GPU的使用知识!

  本文是谷歌开发技术推广工程师郭宇峰主讲的“AI历险记”系列视频/文章的第9篇,帮助您深入浅出地了解人工智能和机器学习。在本系列视频/文章中,我们将一起探索人工智能的世界,品味艺术,探索科学,掌握机器学习的工具。

  第 1 部分:什么是机器学习?

  第二部分:机器学习“七步走”

  第 3 部分:用评估器对花卉进行分类

  第四部分:可弹性扩展的云托管服务

  第 5 部分:通过 TensorBoard 可视化模型

  第 6 部分:通过深度神经网络识别估计器

  第七部分:云训练模型的大数据解决方案

  第 8 部分:通过 Google Research 体验自然语言生成

  所有内容和视频将率先发布在“聪明如你”栏目。目标是发布最新的谷歌相关机器学习和TensorFlow相关内容。如果您有任何问题,欢迎在留言区反馈给我们

  我们的物质资源是否充足?并观看视频或阅读下文。

  在之前的云训练模型大数据解决方案的分享中,我们讨论了当数据集太大,本地机器无法承受时如何处理,以及如何将所有数据迁移到具有可扩展性的云平台。

  今天我们要讨论的是“如何整合各种计算资源”这个问题的第二部分。在训练大型模型时,现有方法引入并行训练手段。我们的数据被拆分并分发到许多训练机器,然后模型需要重新组合来自每台机器的训练反馈和标记变量,以创建一个完全训练的模型。

  ▍各种参数要自己配置吗?

  如果你想这样做,你可以打开几个虚拟机,安装所有必要的开发库,将它们连接网络,在这些机器组成的平台上运行分布式机器学习训练。当一切都结束时,您可能希望确保机器从平台上脱机。

  这些事情表面上看起来很简单,但是诸如 GPU 驱动程序、各种低级库之间的兼容性等问题可能非常具有挑战性。

  

" />

  ▌设置在云端的训练引擎

  好在我们会使用Cloud Machine Learning Engine的训练方式执行Python代码生成模型,期间不需要操作各种基础搭建。云服务在需要时部署和配置资源,并在训练完成后自行关闭。

  按照以下三个步骤使用 Cloud ML Engine:

  打包Python程序代码创建自己需要的机器类型描述文件提交模型训练任务到云端

  接下来,我们研究如何配置训练项目来使用好这个服务。

  ▍第一步:代码打包

  将代码从 Jupyter notebook 复制到 tasks.py 文件中。这将是一个可以被其他文件调用的 Python 模块。

  接下来,将 task.py 打包成 Python 包。Python打包就是把模块文件放在另外一个文件夹里,这里我们命名为“trainer”,然后把空文件__init__.py和task.py放在里面。

  最终的目录结构由一个“trainer”文件夹和里面的两个文件__init__.py和task.py组成。包名为trainer,模块路径为trainer.task。如果你想把代码分解成更多的模块,你可以把每一部分都收录

到这个文件夹中,比如你可以在trainer目录下放一个util.py文件。

  ▍第二步:配置文件config.yaml

  一旦代码被打包到 Python 包中,下一步就是创建指定用于训练模型的设备规范。您可以选择在配备 GPU 的小批量机器上运行,或者在大量训练机器上运行。

  使用预建的比例层真的很容易

  有相当多的预建规范对初学者来说非常容易使用,一旦你熟悉到一定程度,你就可以使用你最喜欢的自定义层次结构。

  对于自定义集群,您只需指定所需的机器类型

  好了,现在Python代码打包好了,配置文件也写好了。跳入您迫不及待想要开始的训练操作。

  ▍第三步:提交训练任务

  您需要使用 gcloud 命令行工具提交作业,运行 gcloud ml-engine jobs submit training 命令开始工作。此命令还有等效的 REST API 调用。

  

" />

  我们指定唯一的任务名称、包路径、模块名称、用于训练的服务器区域以及用于训练结果的云存储路径。重要的是确保运行和输出存储在同一区域以获得更好的性能。

  gcloud ml-engine 作业提交培训\

  作业 ID $JOB_ID\

  包路径=培训师\

  模块路径=trainer.task \

  区域=美国-中央-1 \

  job_dir=gs://cloudml-demo/widendeep

  执行该命令后,您的 Python 包将被压缩并上传到指定目录。然后,训练作业将在云中在先前配置中指定的机器上开始。

  ▌监控训练进度

  切换到云控制台中的 ML Engine 面板,然后选择“Jobs”可以看到训练过程。

  从页面中我们可以看到,所有正在运行和正在运行的训练任务都会被列出来。右侧记录了每项任务所花费的时间,并有查看模型生成日志信息的链接。

  有些模型比其他模型花费更多时间 ;-) ▌ 那么如何预测呢?

  我们的代码会将训练好的模型放到指定的云存储路径下,所以我们可以使用《Elastic Sc​​aling Prediction Service》第四期讲到的方法,将预测模型指向训练生成目录,然后启动一个预测服务。

  ▌下一步

  使用Cloud Machine Learning Engine,我们可以实现分布式训练任务,而无需费心去配置底层架构。所以我们有更多的时间和精力来处理数据。只需打包代码,添加配置文件,上传云端即可开始训练任务。如果您想了解更多信息,请访问云机器学习入门指南。

  如果您想了解 TensorFlow 的分布式训练管道如何工作,请观看 TensorFlow DevSummit 上的深入讨论,网址为 youtu.be/la_M6bCV91M。

  感谢您阅读本期 Cloud AI Adventures。如果你喜欢这篇文章,请点赞。如果你还想关注更多内容,知乎关注我,关注“机智如你”栏目,或者关注Medium御风G,订阅YouTube频道,不错过更多精彩内容!

  ▏原文出处:Medium - 云端分布式训练:Cloud Machine Learning Engine

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线