关于ml:在Amazon-SageMaker上快速灵活构建Amazon-TensorFlow模型的在线推理服务

背景介绍当算法工程师在本地应用Amazon TensorFlow深度学习框架训练好模型后,会创立模型服务器供应用程序调用实现在线推理。因为部署自身存在肯定的复杂性,他们须要思考如何装置TensorFlow Serving相干的依赖,如何实现模型服务的高可用、申请负载平衡、A/B测试、主动伸缩机制等。Amazon SageMaker能够帮忙用户疾速创立多台模型服务器进行负载平衡,利用云上多可用区的形式实现高可用,并且在申请量变动时能够依据用户配置的策略进行主动扩大或膨胀。本文会介绍如何将本地训练好的TensorFlow模型部署到Amazon SageMaker来疾速、灵便地创立Amazon TensorFlow模型服务器。 TensorFlow Serving申请数据格式在将模型部署到Amazon SageMaker之前,咱们首先要理解TensorFlow Serving的SignatureDefs,它标识了保留模型时所需的承受申请函数的输出与输入,不同SignatureDefs下的申请数据格式不同。TensorFlow Serving反对gRPC API与RESTful API两种形式进行申请,本文以RESTful API的形式为例。 [01] Classify与Regress API Classify与Regress 的SignatureDefs别离反对分类与回归的TersorFlow Serving结构化调用形式。即当Serving的输出函数封装了tf.Example(一种灵便的音讯类型,示意{“string”: value}的映射,罕用来进行训练过程中的数据流式传输或解析feature_column中的特色列),须要调用该API进行推理。 参考以下代码,在保留模型时指定input_receiver_fn作为承受申请函数,其中定义了将feature_column解析为tf.Example音讯类型的过程,而后输出给模型进行推理。 Pythondef input_receiver_fn(features):    example_spec = tf.feature_column.make_parse_example_spec(features)    return tf.estimator.export.build_parsing_serving_input_receiver_fn(        example_spec, default_batch_size=5)model.export_savedmodel(export_dir, input_receiver_fn(features))*左滑查看更多 在创立模型服务器后,若想对服务器进行申请失去推理后果,就须要将数据结构成Classify与Regress API所能承受的格局,如下所示: {  // Optional: serving signature to use.  // If unspecifed default serving signature is used.  "signature_name": <string>,  // Optional: Common context shared by all examples.  // Features that appear here MUST NOT appear in examples (below).  "context": {    "<feature_name3>": <value>|<list>    "<feature_name4>": <value>|<list>  },  // List of Example objects  "examples": [    {      // Example 1      "<feature_name1>": <value>|<list>,      "<feature_name2>": <value>|<list>,      ...    },    {      // Example 2      "<feature_name1>": <value>|<list>,      "<feature_name2>": <value>|<list>,      ...    }    ...  ]}*左滑查看更多 [02] Predict API Predict SignatureDefs反对将tensor作为输出和输入,可通用于分类与回归的推理问题类型。参考以下代码,在input_receiver_fn函数中,读取到数据后结构成tensor,作为模型的输出。 def input_receiver_fn ():    feature_map = {}    for i in range(len(iris_data.CSV_COLUMN_NAMES) -1):        feature_map[iris_data.CSV_COLUMN_NAMES[i]] = tf.placeholder(            tf.float32,shape=[3],name='{}'.format(iris_data.CSV_COLUMN_NAMES[i]))    return tf.estimator.export.build_raw_serving_input_receiver_fn(feature_map)model.export_savedmodel(export_dir_base=export_dir,serving_input_receiver_fn=input_receiver_fn ())*左滑查看更多 该状况下对模型服务器发动申请就须要应用Predict API,其所能承受的数据格式如下所示: {  // (Optional) Serving signature to use.  // If unspecifed default serving signature is used.  "signature_name": <string>,  // Input Tensors in row ("instances") or columnar ("inputs") format.  // A request can have either of them but NOT both.  "instances": <value>|<(nested)list>|<list-of-objects>  "inputs": <value>|<(nested)list>|<object>}*左滑查看更多 [03] 在Amazon SageMaker中向Serving发送申请 在Amazon SageMaker的SDK(https://sagemaker.readthedocs...)中,将上述三种不同的API封装成了三种办法,即创立好Predictor之后,根据上述不同SignatureDefs所能承受的数据格式结构申请,就能够抉择调用办法进行推理,Predict API、Classify与Regress API的调用办法如下所示: 将已训练好的Amazon TensorFlow模型部署到Amazon SageMaker将模型压缩打包上传到Amazon S3之后,有两种形式能够实现模型的部署。 [01] 不提供inference.py脚本 若不须要对申请中的数据进行前解决和后处理,就不须要提供inference.py脚本,实例化TensorFlowModel对象时只须要指定模型在Amazon S3中的地位,以及相干的role,如下所示: from sagemaker.tensorflow import TensorFlowModelmodel = TensorFlowModel(model_data='s3://mybucket/model.tar.gz', role='MySageMakerRole')predictor = model.deploy(initial_instance_count=1, instance_type='ml.c5.xlarge')*左滑查看更多 部署实现之后,在推理时须要依据Serving所应用的SignatureDefs,将数据结构成SignatureDefs能够承受的格局,再调用相干的API进行推理。比方,若应用Classify API进行推理,则须要先将数据结构成1.1节中提到的申请格局,而后调用Predictor的classify办法,将推理数据作为参数传入,即可失去推理后果。 [02] 提供inference.py脚本 若须要对输出模型的数据进行前解决或对推理产生的后果进行后处理,则须要在实例化TensorFlowModel对象时提供inference.py脚本,通过entry_point参数指定,如下所示: from sagemaker.tensorflow import TensorFlowModelmodel = Model(entry_point='inference.py',              model_data='s3://mybucket/model.tar.gz',              role='MySageMakerRole')*左滑查看更多 在inference.py的代码中须要定义两个函数,别离是input_handler与output_handler。其中input_handler首先须要对传递进来的序列化对象进行解析。比方TensorFlow Serving Predictor默认的serializer为JSONSerializer,那么在input_handler中就须要对json序列化对象解析,之后就能够对数据进行前解决操作。相似地,在推理前须要把解决好的数据转化为SignatureDefs所能承受的格局。留神,结构SignatureDefs数据格式这个过程是在input_handler中定义的,这么做的益处就是用户无需在申请Serving前实现申请数据格式的定义,让前端传入的数据更加简洁灵便。 同样,在失去推理后果后,能够把数据后处理过程写在output_handler函数中,通过response_centent_type指定序列化对象,将后果返回给前端。 试验本试验应用曾经训练好的iris模型,展现带有inference.py和不带inference.py在Amazon SageMaker上进行模型部署的过程,并调用Classify API进行推理。 实验所需环境 应用cn-northwest-1区域;在Amazon SageMaker中创立一台Jupyter Notebook实例,创立过程可参考官网文档:https://docs.aws.amazon.com/s...下载实验所需的资料:git clone https://github.com/micxyj/aws...,进入文件夹,将tf-byom.zip文件,上传至Notebook环境。试验步骤如下 ...

December 24, 2021 · 1 min · jiezi

关于ml:如何将您的自定义容器镜像导入Amazon-SageMaker-Studio-Notebooks

Amazon SageMaker Studio是第一套用于机器学习(ML)的全集成开发环境(IDE)。Amazon SageMaker Studio可帮忙数据科学家们疾速启动Studio notebooks以摸索数据、构建模型、启动Amazon SageMaker训练作业并部署托管端点。Studio notebooks中随附一组预构建镜像,这些镜像由Amazon SageMaker Python SDK与IPython运行时或内核的最新版本形成。凭借此项新性能,您能够轻松将自定义镜像导入Amazon SageMaker notebooks当中。在本文中,咱们将具体探讨如何将自定义容器镜像导入Amazon SageMaker notebooks。 Amazon SageMaker Studiohttps://aws.amazon.com/sagema...Amazon SageMaker Python SDKhttps://sagemaker.readthedocs...开发人员与数据科学家个别须要在以下几种不同用例内应用自定义镜像: 拜访风行机器学习框架(包含TensorFlow、MXNet以及PyTorch等)的特定或最新版本。将本地开发的自定义代码或算法引入Studio notebooks内以进行疾速迭代及模型训练。通过API拜访数据湖或本地数据存储,且管理员须要在镜像中增加相应驱动程序。拜访后端运行时(也称内核);除IPython之外,还有R、Julia或其它环境等。您也能够应用本文中概述的办法装置其余自定义内核。在大型企业中,机器学习平台管理员往往须要保障平安团队事后批准第三方软件包及代码,而非间接通过互联网下载。在常见的工作流示例中,机器学习平台团队会批准一组要应用的软件包与框架,应用这些软件包构建自定义容器、测试容器中的破绽,而后将核准后的镜像推送至公有容器注册表内,例如Amazon Elastic Container Registry(Amazon ECR)。当初,机器学习平台团队能够将通过核准的镜像间接附加至Studio域内(请参见以下工作流程图)。您只需在Studio中选定所需的获准自定义镜像即可。在以后版本中,繁多Studio域最多能够蕴含30个自定义镜像,您能够依据需要增加新版本或删除镜像。 Amazon ECRhttps://aws.amazon.com/ecr/ 当初,咱们将逐渐介绍如何应用此项性能将自定义容器镜像导入Amazon SageMaker Studio notebooks当中。这里次要演示在互联网上应用时的默认办法,您也能够对其稍加批改以配合Amazon Virtual Private Cloud(Amazon VPC)进行应用。 Amazon VPChttps://aws.amazon.com/vpc/先决条件在开始之前,大家须要满足以下先决条件: 亚马逊云科技账户。确保用于拜访Amazon SageMaker的角色领有以下Amazon Web Services身份与拜访治理(IAM)权限,使Amazon SageMaker Studio可能在Amazon ECR中以smstudio为前缀创立一个repo,并面向此repo进行镜像推送与提取。要应用现有repo,请将其中的Resource局部替换为您的repo ARN。要构建容器镜像,您能够应用本地Docker客户端,或者间接在Amazon SageMaker Studio中创立镜像。本文采纳后一种办法。要在Amazon ECR内创立repo,Amazon SageMaker Studio须要应用Amazon CodeBuild;Amazon CodeBuild:https://aws.amazon.com/codebu...您还须要领有应用Amazon CodeBuild的权限,具体如下所示。 {            "Effect": "Allow",            "Action": [                "ecr:CreateRepository",                "ecr:BatchGetImage",                "ecr:CompleteLayerUpload",                "ecr:DescribeImages",                "ecr:DescribeRepositories",                "ecr:UploadLayerPart",                "ecr:ListImages",                "ecr:InitiateLayerUpload",                "ecr:BatchCheckLayerAvailability",                "ecr:GetDownloadUrlForLayer",                "ecr:PutImage"            ],            "Resource": "arn:aws:ecr:*:*:repository/smstudio*"        },        {            "Effect": "Allow",            "Action": "ecr:GetAuthorizationToken",            "Resource": "*"           }{            "Effect": "Allow",            "Action": [                "codebuild:DeleteProject",                "codebuild:CreateProject",                "codebuild:BatchGetBuilds",                "codebuild:StartBuild"            ],            "Resource": "arn:aws:codebuild:*:*:project/sagemaker-studio*"}{            "Effect": "Allow",            "Action": "iam:PassRole",            "Resource": "arn:aws:iam::*:role/*",            "Condition": {                "StringLikeIfExists": {                    "iam:PassedToService": "codebuild.amazonaws.com"                }            }}左右滑动查看更多 您的Amazon SageMaker角色还应在Amazon CodeBuild中领有信赖策略,具体如下所示。对于更多详细信息,请参阅应用Amazon SageMaker Studio镜像构建Amazon CLI在Studio notebooks中构建容器镜像。 应用Amazon SageMaker Studio镜像构建Amazon CLI在Studio notebooks中构建容器镜像:https://aws.amazon.com/blogs/...{  "Version": "2012-10-17",  "Statement": [    {      "Effect": "Allow",      "Principal": {        "Service": [          "codebuild.amazonaws.com"        ]      },      "Action": "sts:AssumeRole"    }  ]}在您的本地机器上装置Amazon Web Services命令行界面(Amazon CLI)。对于详尽操作阐明,请参阅装置Amazon Web Services。 ...

December 24, 2021 · 2 min · jiezi

关于ml:使用Amazon-SageMaker部署CVAT-AI自动图像标注系统

背景介绍Amazon SageMaker能够帮忙开发人员和数据科学家疾速筹备构建、训练和部署机器学习(Amazon ML)模型的齐全托管的云服务。特地Amazon SageMaker提供了一种可扩大且经济高效的办法来部署大量的事后训练好的机器学习模型,借助Amazon SageMaker多容器多模型的部署能够应用单个端点拜访的模式提供多种类型的推理服务。 而咱们都晓得在机器学习畛域,训练数据集的重要性显而易见,特地是目前利用最为宽泛的监督式计算机视觉畛域中的深度学习,往往一个这种我的项目最开始的工作就是标注各种媒资数据。而CVAT就是为用户提供一套残缺的工具平台,不便用户标注数字图像和视频。CVAT 反对与对象检测、图像分类、图像宰割和3D数据标注无关的监督机器学习工作,CVAT自2018年在GitHub上开源以来曾经倒退成为业界中最为风行的视觉畛域标注工具,特地是AI主动标注性能十分受用户欢送。 官网文档中装置CVAT的举荐形式为单机部署模式,无论应用层、数据库层还是缓存层以及AI推理层都是通过Docker的形式部署在一台物理机或者虚拟机中,这种形式无论从资源利用、安全性、部署架构的高可用性上都难以满足企业级利用部署的标准。本文作者领有屡次大型企业在亚马逊云科技上通过无服务器化(Serverless)部署CVAT的教训,特地是对最为受欢迎的AI主动标注性能应用Amazon SageMaker模型部署推理层革新的教训,通过Amazon CloudFormation一键部署模式,将整个CVAT平台零碎部署在亚马逊云的Serverless的架构之上。 CVAT:https://openvinotoolkit.githu...装置CVAT:https://openvinotoolkit.githu...部署架构介绍CVAT主体开发应用了Python Django Web利用框架,并大量应用了缓存技术晋升零碎的稳定性和升高利用的提早,数据库应用了开源的PostgreSQL,最为重要的AI推理引擎也应用了数据科学界开源的nuclio作为根底无服务器(Serverless)的架构层。因为上文提及CVAT官网提供的部署计划须要把所有的技术组建容器化后部署在一台物理机或者虚拟机中,通过Docker Compose的集群形式部署。官网的举荐架构显著较于目前云原生或Serverless的架构趋势有很大的区别,因而咱们在将CVAT部署到亚马逊云科技云上的时候将架构进行革新。 Nuclio:https://nuclio.io/具体的架构图如下: 其中革新的点如下: 首先咱们能够将整套架构运行在平安的Amazon VPC中,通常状况下咱们把须要通过公网拜访的CVAT用户界面的ALB放在私有子网,同时咱们的Amazon Fargate(一种实用于容器的无服务器计算引擎)到公网拉取Docker镜像须要的Amazon NAT Gateway也放在私有子网,其余所有Amazon Fargate容器、Amazon RDS/ElastiCache、Amazon EFS甚至Amazon SageMaker的Endpoint都通过公有网络进行拜访,如有必要甚至能够将整个Amazon VPC与互联网进行隔离,满足客户企业级平安的要求;Amazon Fragate:https://aws.amazon.com/cn/far... 将CVAT的Server和UI两个服务的容器运行到Amazon ECS的Fargate Serverless上,并通过ALB替换掉traefik容器将用户的流量别离发送到这两个Amazon ECS的服务上,实现Amazon Fargate容器多节点和冗余;将CVAT的缓存层从原来的Docker容器中剥离进去运行在ElastiCache的Redis上,实现缓存层的全托管;将CVAT的数据库层从原来的Docker容器中剥离进去运行在Amazon RDS的PostgreSQL上,实现数据库层的全托管;将CVAT寄存媒资的本地Docker卷剥离进去寄存在Amazon EFS的共享存储上,不便CVAT Server的容器在Amazon Fargate上的漂移和多节点扩大;最为重要的是对AI推理层的革新,新增CVAT Serverless服务替换原有nuclio无服务器服务,次要起因是nuclio对底层物理机或虚拟机的侵入性太强,须要凋谢大量的底层权限能力应用(比方运行Docker的UNIX Socket接口),无奈在亚马逊云科技上真正实现Serverless,同时Amazon SageMaker为咱们提供了弱小的推理端点(Endpoint)部署的性能,因而咱们通过新增的CVAT Serverless服务与Amazon SageMaker进行对接,将推理服务运行在Amazon SageMaker Host Endpoint上,并将CVAT Serverless服务运行在Amazon Fargate上;另外为了初始化CVAT数据库,及一些Amazon S3上的Demo媒资复制到创立好的Amazon EFS上,咱们应用了一个Amazon Fargate ECS的Task来实现一次性初始化的动作;最初咱们还会应用一些其余亚马逊云科技的服务来帮忙咱们实现整个CVAT架构的无服务器化,包含应用Amazon S3存储AI推理模型、媒资,应用Cloud Map作为微服务的发现机制,应用ECR来托管所有Docker镜像(包含Amazon ECS和Amazon SageMaker都会应用)。相比拟于CVAT社区官网版本的部署计划,运行在亚马逊云上CVAT具备非常明显的劣势: 所有技术模块实现了高可用;真正全解偶并实现无服务器化,用户无需再关怀底层资源调度;能够反对大量用户同时应用CVAT零碎进行合作标注,实现了CVAT外部合作性能架构根底;AI推理模块可扩展性更强,更为灵便。计划部署步骤本计划所有的技术模块能够通过事后定义好的Amazon CloudFormation服务创立,点击上面的按键就能够跳转到Amazon CloudFormation控制台界面(宁夏区)进行整个计划架构的部署,对于部署的源代码大家能够参考这个链接。 链接:https://github.com/aws-sample... 疾速启动 计划架构疾速部署有很多配置选项能够批改,然而如果是基于测试或者全新疾速部署应用的目标能够全副应用默认的值,只有两个是必须输出的:一个是给整个架构堆栈起一个名称,另外一个就是对创立IAM资源影响的确认项。 额定灵便的配置 如果你想对整个CVAT有更为深刻灵便的配置,能够通过批改Amazon CloudFormation参数来实现,这些参数次要分为以下几种类型: CVAT用户相干的参数与数据库相干的参数Amazon VPC网络相干的参数模版的输入 ...

December 24, 2021 · 1 min · jiezi

关于ml:基于Amazon-Machine-Learning-Bot-的-Namedentity-Recognition-快速解决方案

Amazon Machine Learning Bot(以下称为Amazon ML bot)为用户提供了一种疾速的开箱即用的解决方案,其底层基于Amazon SageMaker 将机器学习模型的定制及部署实现了高效的自动化。并且,Amazon ML bot 提供了可视化、易操作的Web User Interface界面。用户能够上传具体利用场景的图片或文字数据,疾速实现从数据标注,模型训练到模型成果评估的全副流程。 本文重点介绍了如何使用Amazon ML的命名实体辨认(name entity recognition)来疾速构建自然语言解决Amazon API性能。具体内容如下: Amazon Machine Learning Bot 框架介绍Amazon ML bot是一个一键式打包封装的机器学习解决方案,它提供了多种不同类型的原始机器学习模型,并且能够依据需要通过相互交互来评估模型。在一键式利用的根底上,Amazon ML bot也确保了数据的安全性,基于亚马逊云科技云技术的加密和受权,用户能够把数据贮存在亚马逊云科技的云端并间接导入到Amazon ML bot的模型当中。Amazon ML bot不仅领有用户敌对的人性化交互界面,也为用户提供了实时更新的最新机器学习模型。 本文中咱们采纳了Amazon ML bot下的命名实体辨认模型(NER)。命名实体辨认是指辨认文本中具备特定意义的实体,次要包含人名、地名、机构名、专有名词等。命名实体辨认是信息提取、问答零碎、句法分析、机器翻译等应用领域的重要根底工具,作为结构化信息提取的重要步骤,该模型能够在后续阶段通过对不同文本内容的剖析而后被利用于疾速消费品,金融和医疗等畛域中。 数据集阐明为了在Amazon ML bot上展现咱们的模型,咱们采纳了从社交媒体上采集来的蕴含命名实体的公开数据集作为咱们的训练集。该数据集中的文本采纳UTF-8进行编码,每行为一个段落标注,共包含2000段落。所有的实体以如下的格局进行标注:{{实体类型:实体文本}} 标注的实体类别包含以下六种:time: 工夫 location: 地点 person_name: 人名 org_name: 组织名 company_name: 公司名 product_name: 产品名。 例:此次{{location:中国}}个展,{{person_name:苏珊菲利普斯}}将与她80多岁高龄的父亲一起单干,哼唱一首古老的{{location:威尔士}}民歌{{product_name:《白蜡林》}}。届时在{{location:画廊大厅}}中将安放6个音箱进行播放,艺术家还特意回到他乡{{location:格拉斯哥}},同父亲一起在{{org_name:中国音乐学院}}里为作品录制了具备{{location:中国}}元素的音乐片段。 Amazon Machine Learning Bot的Named-entity Recognition (NER)应用步骤因为咱们大部分的数据都存储在亚马逊云科技海内区的Amazon Simple Storage Service(S3)中,本文将着重介绍通过海内区亚马逊云科技来部署Amazon ML bot,具体的步骤能够参考Amazon ML bot的documentations。首先,咱们须要在Amazon CloudFormation上创立一个新的堆栈,并导入事后设置好Amazon ML bot的模板。 Amazon ML bot的Documentationshttp://ml-bot.s3-website.cn-n...Amazon CloudFormationhttps://console.aws.amazon.co... ...

December 24, 2021 · 1 min · jiezi

关于ml:Amazon-DeepRacer训练日志分析范例与强化学习Reward-Function设计

Amazon DeepRacer 是一款专门为帮忙开发人员进行强化学习(Reinforcement learning)实际而开发的1/18 比例的齐全主动驾驶赛车。Amazon DeepRacer 为开发人员提供了一种学习强化学习的简略办法,用新的强化学习算法和模仿到实在域传输办法进行试验,并在事实世界中体验强化学习。开发人员能够在在线模拟器中训练、评估和调整强化学习模型,将他们的模型部署到Amazon DeepRacer 上,从而取得事实世界的主动驾驶教训,并加入Amazon DeepRacer League 的较量。 在开启Amazon DeepRacer之旅之前,咱们首先在Amazon DeepRacer 线上模拟器中进行模型训练。一般而言,在训练实现后,咱们须要追溯训练过程中agent的静止状况,并进行针对性剖析,能力优化强化学习外围reward function设计。在本文中,咱们将会论述针对训练过程静止日志剖析的操作步骤,并针对剖析后果进行reward function的调优与调优后比照。 关上Amazon DeepRacer控制台,点击Reinforcement learning—Your models,抉择对应模型。 在Training下,点击Download logs。 解压模型文件后,咱们会看到如下层级: 其中logs下为训练过程日志,metrics下为训练过程指标,sim-trace下为每个iteration下的trace以及对应award的记录。咱们有多种形式对于过程数据进行剖析,这里次要剖析不同reward function对于sim-trace的影响。 为了对立进行剖析,首先须要将所有training-simtrace下的csv进行concat,脚本如下图所示: 运行后,在$OutFileName门路下生成新的.csv文件。之后,咱们将训练日志按episode来进行划分,顺次查看在训练不同阶段的reward以及对应的action变动: Waypoint限度reward function下train log 可视化。 上图所示是一个进行了部分waypoint限度的reward function下的0-10% episode与90%-100% episode的reward记录,能够看到,在该reward下,模型疾速收敛,并且迅速获取到较高reward记录。 all_wheels_on_track,速度与转向限定reward function下train log 可视化。 不同的reward function下reward散布不同,上图所示对于all_wheels_on_track,速度与转向进行了限定的训练log展现,该图中reward峰值间断且平均,然而在间断过弯时候因为没有waypoint限度容易出界,即上图中的黄色区域。 Steer throttle Waypoint限度的reward function下的reward散布整体平均,然而如果咱们将feature换为steer或者throttle, 如上图所示,能够看到,因为reward并没有对于间断action的处分,action特地是throttle在训练过程中呈不间断状态。Throttle的不连续性不会影响completion_percentage,然而会影响速度,在竞速较量中难以拿到优良问题。 针对这一问题,咱们在reward function中额定减少了对于间断action的reward, 之后新的log如下图所示: Steer 能够看到,在限度了转向与速度后,尽管动作变得更间断,然而原有waypoint的限度被弱化,整体线路不再顺畅,特地是在左下角局部,呈现了异样的弯道,这在实体赛会存在出圈的危险。同时,剖析log不难看出,算法收敛也显著变慢。可见,Reward设置须要综合思考多方面的因素,并留给算法足够的优化空间,并不一定限度越多,成果越好。 强化学习的reward function设计须要继续进行优化。特地是在实体赛中,遇到的sim2real gap会带来额定的调整。继续可视化训练过程log的过程,也是咱们逐渐了解不同reward function对模型后果影响的过程。 本篇作者 赵安蓓亚马逊云科技解决方案架构师负责基于亚马逊云科技云平台的解决方案征询和设计,尤其在大数据分析与建模畛域有着丰盛的实践经验。

December 24, 2021 · 1 min · jiezi

关于ml:在亚马逊云科技Marketplace上的SaaS架构设计如何支持多产品使用单一账户中心

为了给企业提供更加易用的应用层软件,越来越多的软件提供商推出了SaaS产品。亚马逊云科技Marketplace是一个提供甄选的数字化产品的平台,可能帮忙SaaS厂商升高销售老本,触达更多的客户,是很多SaaS厂商的首选。 通过软件即服务(SaaS)产品,您部署了在亚马逊云科技提供的基础设施上的软件,并容许买家能够间接通过亚马逊云科技Marketplace来应用您的软件。您须要在您的软件中治理客户拜访、账户创立、资源配置和账户治理。 想要理解更多亚马逊云科技最新技术公布和实际翻新,敬请关注2021亚马逊云科技中国峰会!点击图片报名吧~ 在亚马逊云科技Marketplace中上架您基于SaaS模式的软件过程中,您须要与亚马逊云科技Marketplace SaaS提供的多个API进行对接,具体对接的形式您能够参考卖家指南。 卖家指南https://docs.aws.amazon.com/m...在您的SaaS中,建议您将与亚马逊云科技Marketplace SaaS API进行接口集成的局部作为独立模块进行研发和治理,并运行在您的亚马逊云科技账号中。 在上一个文章《亚马逊云科技Marketplace上的SaaS架构设计 ——如何反对跨多账户对接》中,咱们基于SaaS架构设计的角度介绍了多个亚马逊云科技账户中构建亚马逊云科技Marketplace SaaS的API对接的最佳实际,除了多亚马逊云科技的账户状况可能会产生,还会产生另外一种状况,就是卖家将同一个SaaS应用程序,依据性能以及业务上的要求,拆分成了多个SaaS产品上架到了亚马逊云科技Marketplace中,这意味着同一个卖家账户,在亚马逊云科技Marketplace上架了多款SaaS产品,然而这些SaaS产品的租户与账户零碎是雷同客户同时登陆雷同的SaaS应用程序。 在这种状况下,与亚马逊云科技Marketplace的租户API对接过程将会变得复杂,本文将基于这个场景,进行SaaS架构设计的介绍。 租户对接介绍在您的SaaS应用程序与亚马逊云科技Marketplace API进行对接的过程中,其中一个重要的就是租户的对接,这里波及到的API为ResolveCustomer。 ResolveCustomer是由SaaS应用程序在注册过程中调用的。当买家在注册过程中拜访您提交给咱们的落地页面时,买家会通过他们的浏览器提交一个注册令牌。注册令牌通过该API被解析,以取得CustomerIdentifier和产品代码。 接管新用户 API:ResolveCustomer当一个用户从亚马逊云科技Marketplace订阅并跳转到您的SaaS应用程序后,您将会面临您的应用程序与亚马逊云科技进行用户对接的过程,该用户在第一次达到您的SaaS应用程序时,他具备Amazon Web Services的账户身份,同时该用户在您的SaaS应用程序中载入后,他也具备您的SaaS租户属性,为了日后您与亚马逊云科技Marketplace进行交互,您须要在这一步骤中进行API集成,实现该用户2个身份的绑定。 ResolveCustomer API是整个SaaS API集成的第一步,也是客户通过亚马逊云科技Marketplace进入到您的SaaS利用的第一步,在这一步骤中,咱们须要通过该API实现两局部工作: 验证新客户在客户订阅您的产品后,他们将被重定向到执行的URL。该重定向是一个POST申请,包含一个长期令牌。而后,您的应用程序须要通过调用亚马逊云科技Marketplace计量服务API中的Amazon ResolveCustomer,将令牌换成客户ID。在取得客户ID后,将其保留在您的应用程序中,以便未来调用。 载入您的新客户在胜利地验证了一个客户后,让他们退出您的应用程序。例如,让他们填写一个表格来创立一个新的用户账户。或者,为他们提供进入应用程序的后续步骤。您的应用程序能够依据客户的信息来自动化地装载该客户所须要的后续资源与服务。 如上图所示,在应用ResolveCustomer API的过程中,首先须要从Http Request中获取token,当客户从亚马逊云科技Marketplace跳转到您的应用程序过程中, 亚马逊云科技Marketplace会给您上线过程中提交的URL发送POST申请,您须要从该申请中通过获取x-amzn-marketplace-token获取该用户的身份token,而后调用ResolveCustomer API取得CustomerIdetifier和ProductCode,其中CustomerIdetifier为该客户在亚马逊云科技上身份的标示,ProductCode是产品的惟一标识码。 您须要将CustomerIdetifier与ProductCode基于您利用程序逻辑进行业务解决,并用于后续该用户与亚马逊云科技Marketplace API交互。 案例背景以上为失常状况下的租户对接过程,但如果在亚马逊云科技Marketplace中您应用了雷同的卖家账号上架了多款SaaS产品,但这些SaaS应用程序应用了雷同的租户注册与验证零碎同时客户登陆的是同一套SaaS应用程序,将会面临更加简单的问题。 对于亚马逊云科技Marketplace中基于SaaS交付的产品中,有多种价格模型能够抉择,本篇文章所波及的内容重点为租户零碎对接的设计,订阅模型与合约模型作为租户零碎对接设计的后续行为,所以在下文中,将以基于订阅的价格模型作为举例。 在本文章的举例中,有两个您上架的SaaS产品,别离为 SaaS1 产品ID为product1111 SaaS2 产品ID为product2222 SaaS架构设计在失常的状况下,当客户通过亚马逊云科技Marketplace购买您的产品后,咱们会建议您将SaaS应用程序的租户与通过亚马逊云科技Marketplace API换到的CustomerIdetifier进行绑定,而产品ID则依据您的需要进行正当的长久化,这样您的SaaS应用程序中的用户在产生消费行为过程中,您会将该行为记录并整合到您的用户的租户中,并通过亚马逊云科技Marketplace API与亚马逊云科技Marketplace进行计价的交互,在这种背景下,租户对接设计个别为: 在下面所举例的租户设计中,Marketplace_Id字段代表着长久化的亚马逊云科技Marketplace CustomerIdetifier,该字段存在值代表着该租户是通过亚马逊云科技Marketplace平台进入到SaaS应用程序中,将来该租户的所有计费相干的行为将应用该字段的值,该SaaS应用程序的产品ID以及计费维度和使用量来与亚马逊云科技Marketplace进行交互,如下所示: {   "ProductCode": " product1111",   "UsageRecords": [       {          "CustomerIdentifier": "5ha1maxi",         "Dimension": "Data",         "Quantity": 2,         "Timestamp": xxxxx      }   ]}但当中您应用了雷同的卖家账号上架了多款SaaS产品,但这些SaaS应用程序应用了雷同的租户注册与验证零碎,这种架构设计会导致以下问题: 无法控制SaaS应用程序的权限 用户通过亚马逊云科技Marketplace抉择您其中一款SaaS产品购买并注册/登陆后,因为您之前的SaaS架构设计起因,您将无奈区别该用户来源于哪个亚马逊云科技Marketplace中您上架的产品,所以您无奈进行SaaS应用程序的权限管制 局部状况下无奈进行API交互 用户通过亚马逊云科技Marketplace抉择您其中一款SaaS产品购买并注册/登陆后,可能会在您的SaaS应用程序中应用了您另外一款上架的SaaS应用程序的性能,您的SaaS应用程序会依据该性能去调用亚马逊云科技Marketplace计费API与亚马逊云科技Marketplace交互,然而因为该用户并没有通过亚马逊云科技Marketplace订阅您的另一款产品,您会失去一个谬误的返回。 所以在这种非凡的状况下,您的SaaS架构设计在租户层依据您上架的产品数量来进行标示的辨别并与您的租户零碎进行绑定,如下图所示: 或者 {    "Tenant_T": [        {            "TenantID": "AAA",            "User": [                {                    "UserID": "111"                },                {                    "UserID": "222"                },                {                    "UserID": "333"                }            ],            "Marketplace": [                {             "ProductID": "product111",                    "MarketplaceID": "5ha1maxi"                }            ]        },        {            "TenantID": "BBB",            "User": [                {                    "UserID": "111"                },                {                    "UserID": "222"                }            ],            "Marketplace": [                {             "ProductID": "product111",                    "MarketplaceID": "5ha1maxi"                },                {             "ProductID": "product222",                    "MarketplaceID": " d92nwk21"                }            ]        }    ]}在这种租户架构下,您能够清晰地区分出亚马逊云科技Marketplace端的租户,您上架的产品以及您的SaaS应用程序的租户之间的关系,当某一个用户进行您的SaaS应用程序性能的抉择时,你须要找到该用户对应的租户以及该租户中通过亚马逊云科技Marketplace订阅的产品,如果该性能所属的产品曾经被订阅,您能够间接应用这些信息于亚马逊云科技Marketplace API交互进行用量的传输,如果该用户并没有订阅该产品,您的应用程序应该进行相应的解决,比方禁止该用户应用此性能并疏导客户至相应的亚马逊云科技Marketplace上您的产品进行订阅后再进行应用。 总结该文章中阐明了在SaaS架构设计中,在依据业务和产品的需要,须要将SaaS应用程序拆分多个产品进行上架的状况下,如何进行SaaS租户的设计以及权限的判断,咱们建议您在非必要状况下,不要进行繁多SaaS应用程序的的拆分而上架多个亚马逊云科技Marketplace产品,但如果您的需要必须如此,请您进行好响应的SaaS架构设计防止用户体验的升高或者造成您的损失。 本篇作者 张明月亚马逊云科技合作伙伴解决方案架构师

December 24, 2021 · 1 min · jiezi

关于ml:自然语言处理实战巧用-Amazon-Comprehend-分析社交媒体数据

摘要自然语言解决 (NLP) 是语言学、计算机科学和人工智能的一个子畛域,波及计算机与人类语言之间的交互 (引自维基百科)【1】。NLP 的指标是让计算机了解人类所说和所写的内容,并以同样的形式进行交换。NLP 在过来十年中始终是一个乏味的畛域,随同着人们对自动化信息提取、解决和生成业务价值的冀望越来越高。通常,专业知识畛域的上下文和非结构化数据会给NLP减少额定的难度。 命名实体辨认(NER)是 NLP 的一类子工作,专一于信息提取、实体定位和文本分类。它用于将非结构化文本中的命名实体映射到预约义的类别,例如人名、组织、医疗代码、货币价值 【2】。NER 可用于构建语义搜索引擎并帮忙进步文档的性能和索引。当初驰名的 NER 平台包含 GATE、OpenNLP 和 SpaCy。 另一方面,主题模型是用来摸索和提取文本主题的统计模型,而主题建模通常用于文本开掘,以发现文本注释中暗藏的语义结 【3】。 在这篇博文中,咱们演示了如何利用 NER 和主题建模将亚马逊云科技服务用于社交媒体数据分析。咱们利用Amazon Comprehend 作为 NER 步骤来微调亚马逊云科技中的预训练语言模型。抉择社交媒体数据的起因是为了简略起见,并防止行业(例如金融服务和医疗保健)特定术语带来的额定复杂性。事实上,对于热衷于通过社交凝听监控其品牌的企业来说,更好地理解社交媒体数据的背景和分类是至关重要的。 本文剩下的局部构造如下: 介绍Amazon Comprehend的NER和主题模型API试验数据系统性框架和数据流程图后果和瞻望1. Amazon Web Services在自然语言解决的云服务Amazon Web Services 提供了宽泛的自然语言解决服务,帮忙客户轻松利用基于机器学习的模型,构建 AI 应用程序,用于文本剖析、聊天机器人、语言翻译、情感剖析、语音辨认等畛域。Amazon Transcribe是一项主动将语音转换为文本的语言解决服务。它应用一种称为主动语音辨认的深度学习过程,可用于为媒体资产增加字幕,将客户服务电话数字化为文本,以创立存档或发展进一步的剖析。Amazon Web Services 还提供了一项名为Amazon Polly的服务,用于将文本转换为真切的人类语音。Amazon Translate 是另一种基于深度学习的语言服务,能够反对71 种语言和变体之间的翻译。此外,Amazon Web Services 提供了功能强大的语言服务 Amazon Lex,它作为在Amazon Alexa上失去利用的底层技术,可基于其语音辨认、自然语言了解和生成模型,轻松构建出成熟的聊天机器人。 除了上述服务外,Amazon Comprehend 是 Amazon Web Services 中另一项功能强大的自然语言解决服务,它应用机器学习技术来提取文本中的信息,并揭示有价值的见解。Amazon Comprehend 原生反对实体辨认操作,能够检测文本中的日期、事件、地位、人物等实体。除了预设的通用实体类型外,Amazon Comprehend 还反对自定义实体辨认,让用户可能创立自定义模型来辨认新的实体类型。 Amazon Comprehend 还提供主题建模 API,用于将文档语料库组织成主题。通过主题建模,每个文档都是整个语料库中主题的组合,而每个主题是单词的统计散布。主题建模提供的见解在信息检索、文档分类和文档摘要等畛域有重要用处。Amazon Comprehend内置了两种主题建模算法:Amazon SageMaker 神经主题模型 (NTM)和Amazon SageMaker 潜在狄利克雷调配 (LDA)。在 Amazon SageMaker NTM 中,主题建模由基于神经网络的变分推理框架实现,该框架能够从语料库的单词散布中学习与文档相干的主题。 ...

December 23, 2021 · 2 min · jiezi

关于ml:手把手教程-使用无服务器模板部署机器学习模型

在设计和训练机器学习模型后,数据科学家会部署这些模型,以便应用程序能够应用。Amazon Lambda是一项让您在运行代码时无需预置或治理服务器的计算服务。Amazon Lambda的按申请付费、主动扩大和易用性使其成为数据迷信团队的热门部署抉择。 Amazon Lambdahttps://aws.amazon.com/cn/lam...数据科学家能够应用更少的代码就能将模型转变为由Amazon Lambda反对的经济高效且可扩大的API终端节点。Amazon Lambda反对容器镜像、Advanced Vector Extensions 2(AVX2)和具备高达10GB内存的函数。应用这些函数,数据迷信团队能够部署更大、更强的模型并进步性能。 要部署基于Amazon Lambda的应用程序,无服务器开发人员能够应用Amazon Serverless Application Model(Amazon SAM)。Amazon SAM基于模板创立和治理无服务器应用程序。它反对本地测试,旨在实现最佳实际,并可与风行的开发工具集成。它容许数据科学家应用YAML定义无服务器应用程序、平安权限和高级配置性能。 Amazon Serverless Application Model(Amazon SAM)https://github.com/aws/server...Amazon SAM蕴含可让开发人员疾速入门的预构建模板。本博客展现了如何应用机器学习模板部署基于Scikit-Learn的模型,该模型能够分类从0到9的手写数字图像。部署到Amazon Lambda后,您能够通过一个REST API拜访模型。 示例会在亚马逊云科技账户中创立会产生老本的资源。为了最大限度地降低成本,请在实现示例内容后依照最初的清理局部阐明删除资源。  想要理解更多亚马逊云科技最新技术公布和实际翻新,敬请关注在上海、北京、深圳三地举办的2021亚马逊云科技中国峰会!点击图片报名吧~上海站峰会曾经圆满闭幕,更多精彩内容,敬请期待北京、深圳分会吧! 概览Amazon SAM机器学习模板可用于Scikit-Learn、PyTorch、TensorFlow和 XGBoost框架。每个模板都部署一个Amazon Lambda函数来治理Amazon API Gateway网管前面的模型,该网关作为前端并解决身份验证。下图显示了这个解决方案的架构: 机器学习推理的无服务器架构 Amazon API Gateway网管https://aws.amazon.com/cn/api...创立容器化Amazon Lambda函数本节将应用Amazon SAM在Amazon Lambda上构建、测试和部署蕴含事后训练的数字分类器模型的Docker镜像: 更新或装置Amazon SAM,应用机器学习模板须要Amazon SAM CLI v1.24.1或更高版本。在终端中,应用以下命令在Amazon SAM中创立新的无服务器应用程序:sam init依照屏幕上的提醒,抉择Amazon疾速入门模板作为模板起源。Amazon SAM:抉择模板起源 抉择镜像作为打包类型。Amazon SAM:抉择封装类型 抉择amazon/python3.8-base作为根底镜像。Amazon SAM:抉择运行时镜像 呈现提醒时,输出应用程序名称。Amazon SAM应用它对其创立的资源进行分组和打标签。Amazon SAM:抉择运行时镜像 从模板列表中抉择所需的机器学习框架,本示例应用 Scikit-Learn 模板。Amazon SAM:抉择应用程序模板 Amazon SAM应用您的应用程序名称创立一个目录,切换到新目录并运行Amazon SAM生成命令:sam buildAmazon SAM:构建后果 由Amazon SAM生成的文件抉择模板后,Amazon SAM将在应用程序目录中生成以下文件: ...

December 23, 2021 · 1 min · jiezi

关于ml:实力超越绝对领先Amazon-SageMaker-在企业-MLOps-平台报告中获得高度肯定

在过来几年中,机器学习 (ML) 已证实其在帮忙组织提高效率和促成翻新方面的价值。随着机器学习逐步成熟,其重点天然会从试验转向生产。机器学习流程须要简化、标准化和自动化,以便以统一和牢靠的形式建设、训练、部署和治理模型。安全性、高可用性、扩大、监控和自动化等长期存在的 IT 问题也变得更为要害。如果杰出的 ML 模型无奈为业务应用程序提供全天候、任何规模的疾速精确预测,那么它们就不会施展多大作用。 2017 年 11 月,咱们推出了 Amazon SageMaker,旨在帮忙机器学习工程师和数据科学家不仅构建最佳的模型,而且更高效地运行这些模型。为了给客户提供最全面的服务,咱们随后减少了数百种性能,涵盖了机器学习生命周期的每一步,如数据标记、数据筹备、特色工程、偏差检测、AutoML、训练、调整、托管、可解释性、监控和自动化。咱们还将这些性能集成到基于 Web 的开发环境 Amazon SageMaker Studio 中。 Amazon SageMaker:https://aws.amazon.com/sagema...数百种性能:https://aws.amazon.com/about-...Amazon SageMaker Studio:https://aws.amazon.com/sagema... 想要理解更多亚马逊云科技最新技术公布和实际翻新,敬请关注在上海、北京、深圳三地举办的2021亚马逊云科技中国峰会!点击图片报名吧~ 因为 Amazon SageMaker 提供了宽泛的机器学习性能,所有行业畛域的数万名亚马逊云科技客户曾经采纳机器学习来减速业务流程、发明翻新的用户体验、进步支出和降低成本。例如,Engie(能源)、Deliveroo(食品配送)、SNCF(铁路)、Nerdwallet(金融服务)、Autodesk(计算机辅助设计)、F1(赛车)以及咱们本人的 Amazon Fulfillment Technologies 和 Amazon Robotics。 Amazon SageMaker:https://aws.amazon.com/sagema...Engie:https://aws.amazon.com/soluti...Deliveroo:https://aws.amazon.com/soluti...SNCF:https://aws.amazon.com/soluti...Nerdwallet:https://aws.amazon.com/soluti...Autodesk:https://aws.amazon.com/soluti...F1:https://aws.amazon.com/soluti...Amazon Fulfillment Technologies:https://aws.amazon.com/soluti...Amazon Robotics:https://aws.amazon.com/soluti...近期,咱们很快乐地发表,Omdia 的首席分析师 Bradley Shimmin 在他对于企业 MLOps 平台的最新报告中,对 Amazon SageMaker 进行了这样的投诉:“在 Omdia 对企业 MLOps 平台的比拟钻研中,亚马逊云科技成为相对的领导者。在简直每一项掂量指标方面,该公司都显着超过了竞争对手,在整个机器学习生命周期中提供了统一的价值。亚马逊云科技提供了高度差异化的性能,针对的是企业 AI 从业者所关注的高度影响性畛域,这些从业者不仅寻求在整个业务中实现 AI 的运作,而且还心愿扩充 AI 的规模。” Omdia:https://omdia.tech.informa.com/Bradley Shimmin:https://www.linkedin.com/in/b...您能够下载残缺报告,以理解更多信息。 残缺报告:https://pages.awscloud.com/GL...开始应用想进一步理解 Amazon SageMaker 吗?开发人员指南将向您阐明如何进行设置并在几分钟内开始运行您的笔记本。 Amazon SageMaker:https://aws.amazon.com/sagema...开发人员指南:https://docs.aws.amazon.com/s...如平常一样,咱们期待您的反馈。您能够通过您的罕用 Amazon Support 联系人发送反馈或者将反馈公布到面向 Amazon SageMaker 的亚马逊云科技论坛。 亚马逊云科技论坛:https://forums.aws.amazon.com... 7月21-7月22号,上海世博核心,2021亚马逊云科技中国峰会——上海站强势登陆!没有报名的你,还不赶快点击上方卡片,速速报名!胜利报名参会的Builders也要记得准时参会哦! 本篇作者 Julien Simon亚马逊云科技技术布道者作为寰球AI和机器学习布道者,Julien 专一于帮忙开发人员和企业将他们的想法变成事实。他常常在亚马逊云科技博客和媒体上的会议、博客上发表演讲并主持AI/ML博客。 ...

December 23, 2021 · 1 min · jiezi

关于ml:Amazon-SageMaker新玩法定制你的语音识别模型

前言通过语音形式与机器进行交互能够在很多场景下提高效率,也是当下人工智能畛域内钻研的热点之一。语音辨认技术的利用场景能够划分为以车载语音助手为例的车载场景、以智能家居设施的家庭场景等。要实现人与机器间的语音交互,须要首先让机器可能辨认声音内容,但通用的语音辨认服务无奈齐全满足不同场景下的需要,因而客户须要依据本人的需要训练模型。 本文会为大家展现如何应用Amazon SageMaker服务训练本人的语音辨认模型,咱们抉择了一个开源的语音辨认我的项目WeNet作为示例。 Amazon SageMaker是一项齐全托管的机器学习服务,涵盖了数据标记、数据处理、模型训练、超参调优、模型部署及继续模型监控等根本流程;也提供主动打标签,主动机器学习,监控模型训练等高阶性能。其通过全托管的机器学习基础设施和对支流框架的反对,能够升高客户机器学习的整体领有老本。 WeNet是一个面向工业级产品的开源端到端语音辨认解决方案,同时反对流式及非流式辨认,并能高效运行于云端及嵌入式端。模型在训练的过程中,须要用到大量的计算资源,咱们能够借助Amazon SageMaker十分不便的启动蕴含多台齐全托管的训练实例集群,减速训练过程。 想要理解更多亚马逊云科技最新技术公布和实际翻新,敬请关注在上海、北京、深圳三地举办的2021亚马逊云科技中国峰会!点击图片报名吧~ 筹备工作在开始训练模型之前,咱们须要做一些筹备工作,包含筹备FSx文件系统以寄存训练过程中的数据、创立Amazon SageMaker Notebook作为试验环境、在笔记本中挂载FSx文件系统、筹备试验代码,以及筹备数据处理及模型训练的运行环境(Docker镜像)并把镜像推送到Amazon ECR(Elastic Container Registry)中。 本文中的试验内容均应用us-east-1区域中的服务实现,您能够自行应用其余区域。 创立FSx for Lustre存储 以往,在Amazon SageMaker中训练模型个别应用Amazon Simple Storage Service(Amazon S3)作为存储,当初,Amazon SageMaker做模型训练时曾经反对多种数据源,比方Amazon FSx for Lustre和Amazon Elastic File System (EFS)。Amazon SageMaker通过间接读取存储在EFS或者FSx for Luster上的数据来放慢训练模型时数据加载进度。 FSx for Lustre反对从Amazon S3中导入数据,以及将数据导出到Amazon S3,如果您的数据曾经寄存在Amazon S3中,FSx for Lustre以通明形式将对象显示为文件。同一个FSx文件系统还可用于多个Amazon SageMaker训练任务,省去多次重复下载训练数据集的工夫。 这里,咱们会抉择应用FSx for Lustre作为次要的数据存储。接下来,咱们会创立一个FSx for Lustre存储。 创立基于Amazon S3的FSx for Lustre 在“网络和安全性”处设置VPC,子网组和平安组,并确认平安组入站规定是否容许了端口998的流量。 在“数据存储库导入/导出”处抉择“ 从Amazon S3导入数据及将数据导出到Amazon S3”并指定Amazon S3训练数据所在的存储桶和门路。 创立实现后,点击“挂载”按钮就会弹出挂载此文件系统的步骤,稍后咱们会在Amazon SageMaker Notebook中应用到。 创立Amazon SageMaker Notebook 抉择笔记本实例类型,这里咱们抉择一台ml.p3.8xlarge的机器,其蕴含4张Tesla V100 GPU卡。您能够抉择其余GPU机器,如果您不须要GPU卡,也能够抉择CPU机器。 ...

December 23, 2021 · 1 min · jiezi

关于ml:通过自动关闭Amazon-SageMaker-Studio中的闲置资源来节省成本

Amazon SageMaker Studio提供了一个基于Web的对立可视化界面,您能够在其中执行所有机器学习(ML)开发步骤,使数据迷信团队的工作效率进步10倍。该Studio还能够为您提供构建、训练和部署模型所需每个步骤的齐全拜访权限、管制及可见性。Studio笔记本是合作式笔记本,因为不须要当时设置计算实例和文件存储,因而能够疾速启动。Amazon SageMaker是一项齐全托管式服务,它提供的性能能够将基础设施治理的沉重工作抽象化,并针对您对大规模ML流动的敏捷性和可扩展性需要提供各种不同性能和按用量付费的定价模型。 Amazon SageMaker Studiohttps://aws.amazon.com/sagema...Amazon SageMakerhttps://aws.amazon.com/sagema...定价模型https://aws.amazon.com/sagema...在本文中,咱们将演示如何执行以下操作: 1.应用能够手动和主动装置的主动敞开Jupyter扩大程序检测和阻止Studio中产生老本的闲暇资源 2.启用事件告诉以跟踪Studio域中尚未装置主动敞开扩大程序的用户配置文件 3.应用已装置的主动敞开扩大程序主动敞开可能导致高于预期老本的实例以治理Amazon SageMaker Data Wrangler老本 Amazon SageMaker Data Wranglerhttps://aws.amazon.com/sagema... 想要理解更多亚马逊云科技最新技术公布和实际翻新,敬请关注在上海、北京、深圳三地举办的2021亚马逊云科技中国峰会!点击图片报名吧~ Studio组件在Studio中,运行的笔记本与JupyterServer UI离开进行容器化,以便拆散计算基础设施的规模。Studio笔记本在由以下内容定义的环境中运行: 实例类型–底层硬件配置,其决定定价费率。这包含处理器的数量和类型(vCPU和GPU),以及内存的数量和类型。Amazon SageMaker映像–托管笔记本内核的兼容容器映像(由Amazon SageMaker提供或自定义)。该图像定义了它提供的内核规格,例如内置的 Python 3(数据迷信)内核。Amazon SageMaker内核网关应用程序–在特定实例类型上运行的容器映像实例。多个应用程序能够共享正在运行的实例。运行内核会话-检查和运行笔记本中所含代码的过程。在同一应用程序中关上具备雷同规格和实例类型的多个关上笔记本(内核)。Studio UI作为JupyterServer类型的独自利用程序运行,而不是KernelGateway,它容许您从Studio UI中将关上的笔记本切换到不同的内核或实例类型。无关笔记本内核运行与KernelGateway应用程序、用户和Studio域如何相干的更多信息,请参阅应用Amazon SageMaker Studio笔记本。 应用Amazon SageMaker Studio笔记本https://docs.aws.amazon.com/s...Studio计费应用Studio不收取额定费用。运行Studio笔记本、交互式Shell、控制台和终端所产生的老本取决于Studio实例类型的应用状况。无关计费以及定价示例的信息,请参阅Amazon SageMaker定价。 Amazon SageMaker定价https://aws.amazon.com/sagema...在Studio中运行Studio笔记本、交互式Shell或映像终端时,必须抉择内核和实例类型。这些资源是依据从UI中抉择的类型应用Studio实例启动的。如果此类型的实例之前已启动且可用,则资源将在该实例上运行。对于基于CPU的映像,默认实例类型为ml.t3.medium。对于基于GPU的映像,默认实例类型为ml.g4dn.xlarge。产生的老本取决于实例类型,您须要为每个实例独自计费。计费从创立实例时开始,并在实例上的所有应用程序敞开或实例敞开时完结。 敞开实例即进行产生费用。如果您敞开在实例上运行的笔记本但没有敞开实例,则仍将产生费用。当您在同一实例类型上关上多个笔记本时,即便它们应用的是不同内核,笔记本也会在同一实例上运行。您只需按一个实例运行的工夫计费。在关上实例并敞开各个资源(包含笔记本、终端、内核、应用程序和实例)之后,您能够在笔记本中更改实例类型。您还能够同时敞开其中一个类别中的所有资源。敞开笔记本时,笔记本中所有未保留的信息都将失落。笔记本不会被删除。 更改实例类型https://docs.aws.amazon.com/s...您能够从Studio File(文件)菜单或Running Terminal and Kernels(运行终端和内核)窗格敞开关上的笔记本。Running Terminal and Kernels(运行终端和内核)窗格由四个局部组成。每个局部都列出了该类型的所有资源。您能够独自敞开每个资源,也能够同时敞开一个局部中的所有资源。抉择敞开某个局部中的所有资源时,会产生以下状况: 运行实例/运行应用程序–敞开所有实例、应用程序、笔记本、内核会话、Data Wrangler会话、控制台或Shell以及映像终端。零碎终端没有敞开。抉择此选项可进行所有计费。内核会话-敞开所有内核、笔记本、控制台或Shell。终端会话-敞开所有映像终端和零碎终端。要敞开资源,请在左侧边栏中抉择Running Terminals and Kernels(运行终端和内核)图标。要敞开特定资源,请抉择与资源雷同行上的电源图标。 对于正在运行的实例,确认对话框列出了将敞开的所有资源。对于正在运行的应用程序,将显示确认对话框。抉择Shut Down All(全副敞开)以持续。内核会话或终端会话不显示确认对话框。要敞开一个局部中的所有资源,请抉择区域标签右侧的X图标。此时将显示确认对话框。抉择Shut Down All(全副敞开)以持续。 应用JupyterLab扩大程序主动敞开闲暇的内核您能够应用Studio主动敞开扩大程序自动检测和敞开闲置资源,而不是依赖用户来自行敞开不再应用的资源,从而节省成本。JupyterLab扩大程序是简略的附加组件,可扩大笔记本环境的基本功能。当Studio内运行的内核、应用程序和实例在规定的工夫内闲暇时,该扩大程序会主动敞开这些内核、利用和实例。您能够通过UI直观地配置闲暇工夫阈值(以分钟为单位)。在内核闲暇足够长时间后,扩大程序会主动敞开它们。无关如何下载和装置扩大程序的阐明,请参阅GitHub存储库。 JupyterLab扩大程序https://jupyterlab.readthedoc...GitHub存储库https://github.com/aws-sample...如果您正在为用户应用Amazon Identity and Access Management(IAM)验证,则能够在启动JupyterServer期间主动装置扩大程序;如果您应用的是单点登录(SSO)身份验证,则能够手动装置扩大程序。 Amazon Identity and Access Managementhttp://aws.amazon.com/iam装置扩大后,它会在Studio界面的左侧边栏中作为图标显示。您能够应用此扩大程序提供的用户界面配置闲暇工夫限度。GitHub存储库中提供了装置阐明。 ...

December 23, 2021 · 1 min · jiezi

关于ml:使用Amazon-Step-Functions-Data-Science-SDK创建基于无服务器架构的工作流

市场营销是金融畛域的一个重要方向,在机构倒退新客户的过程中,不容忽视老用户的散失状况。如果取得一个新客户的老本是保留一个老客户的老本的5倍,那么将其客户流失率升高5%,其利润就可能减少25%以上。 在本文中,咱们将利用无服务器架构工作流,用于数据分析,模型部署,批量推理,从而实现提前发现可能的散失客户,及时保护防止散失。 想要理解更多亚马逊云科技最新技术公布和实际翻新,敬请关注在上海、北京、深圳三地举办的2021亚马逊云科技中国峰会!点击图片报名吧~ 计划概述本文将以一个常见的应用案例,通过 Amazon Step Functions Data Science SDK创立基于无服务器架构的工作流,过程如下: 1.应用Amazon Glue进行ETL工作,生成样本数据集 2.应用Amazon SageMaker部署本地训练好的模型,用于机器学习推理 下图演示了上述Amazon Step Functions无服务器架构工作流: 后续操作应用了下列亚马逊云科技服务: Amazon Step Functionshttps://www.amazonaws.cn/step...是由多个离散步骤组成的状态机,其中每个步骤都能够执行工作、作出抉择、启动并行执行或治理超时。其中一个步骤的输入作为下一个步骤的输出,并反对将错误处理嵌入到工作流中。 在Amazon Step Functions Data Science SDK诞生前,只能应用基于JSON的Amazon States Language定义Amazon Step Functions;但当初能够借助此SDK应用Python代码轻松创立、执行和可视化Amazon Step Functions工作流。 Amazon Step Functions Data Science SDKhttps://docs.amazonaws.cn/zh_...本文是以Amazon Step Functions Data Science SDK为主线,探讨如何创立Amazon Step Functions步骤、应用参数、集成服务特定的性能以及将这些步骤关联在一起以创立和可视化工作流。 Amazon SageMaker可为开发人员和数据科学家提供构建、训练和部署不同类型机器学习模型时所需的工具。 Amazon SageMakerhttps://www.amazonaws.cn/sage...Amazon Glue是一项齐全托管的提取、转换和加载(ETL)服务,在分布式Apache Spark环境中运行,可能充分利用Spark而无需治理基础设施。将Glue指向受反对的数据存储,它将会生成代码以从指定的存储中提取数据并加载到指标存储中。 Amazon Gluehttps://www.amazonaws.cn/glue/本文应用机器学习办法进行客户散失预测,采纳模仿的数据(近期生产记录,在线时长等)为示例数据集,首先应用Amazon Glue进行数据处理,再应用Amazon SageMaker进行模型部署,并进行批量转换。 该场景的应用的算法为XGBoost(eXtreme Gradient Boosting) ,它是一种监督式学习算法, 尝试将一组较简略且较弱模型的一系列估计值联合在一起,从而精确地预测指标变量,能够用来解决回归、分类(二进制和多类)和排名问题。利用XGBoost预测客户是否会散失,以及早进行干涉。 1.创立Jupyter Notebook1.1 创立Amazon SageMaker 笔记本实例,部署模型 1.2 创立一个笔记本实例,类型抉择t2.medium。抉择或者创立一个IAM角色(IAM Role)1.3 其余局部抉择默认选项,点击创立(Create) ...

December 23, 2021 · 1 min · jiezi

关于ml:在-Amazon-Inferentia-上为-PyTorch-自然语言处理应用程序实现-12-倍的吞吐量和低延迟

Snap、Alexa 和 Autodesk 等亚马逊云科技客户始终在应用 Amazon Inferentia 部署各种机器学习 (ML) 模型以实现高性能和低成本。自然语言解决 (NLP) 模型在实时和离线批处理应用案例中越来越受欢迎。咱们的客户在许多应用程序中部署这些模型,例如聊天机器人、搜寻、排名、文档摘要和自然语言了解。借助 Amazon Inferentia,您还能够在开源 NLP 模型上实现开箱即用的高性能和低成本,而无需进行自定义。 Amazon Inferentiahttps://aws.amazon.com/machin...在本文中,您将理解如何在低提早需要下最大限度地进步实时应用程序和批处理的吞吐量,而高吞吐量和低成本是 Amazon Inferentia 的要害性能指标。在本文中,咱们应用 HuggingFace Transformers 预训练的 BERT Base模型,不须要对模型进行任何批改,并且在 PyTorch 框架级别只更改一行代码即可应用 Amazon Inferentia。与在 GPU 上部署的雷同模型相比,该解决方案在 Amazon Inferentia 上以低 70% 的老本实现了 12 倍的吞吐量。 Transformershttps://github.com/huggingfac... 为了最大限度地进步 Hugging Face 模型在 Amazon Inferentia 上的推理性能,您能够应用 Amazon Neuron PyTorch 框架进行集成。Neuron 是一款软件开发工具包 (SDK),它与常见的机器学习框架(如 TensorFlow 和 PyTorch)集成,从而扩大了框架的 API,从而使您可能在 Amazon EC2 Inf1 实例上轻松且经济高效地运行高性能推理。只需起码的代码更改,您就能够编译和优化曾经训练好的模型,以便在 Amazon Inferentia 上运行。Neuron 团队在一直地公布具备新性能和模型性能改良的更新。1.13 版本公布后,基于 Transformer 的模型性能又进步了 10%–15%,以达到更小提早和更大吞吐量,即便对于更大的 NLP 工作负载也是如此。 Neuronhttps://awsdocs-neuron.readth...Amazon EC2 Inf1 实例https://aws.amazon.com/ec2/in...在一直地公布https://aws.amazon.com/machin...1.13 版本公布https://awsdocs-neuron.readth...要自行测试 Neuron 开发工具包性能,请查看最新的实用于 PyTorch 的利用 Neuron 性能教程。 ...

December 23, 2021 · 2 min · jiezi

关于ml:Amazon-Forecast现可支持对单一条目进行准确性评估

咱们快乐地发表,当初您曾经能够在Amazon Forecast当中评估单一条目标预测准确性,借此更好地理解您的预测模型在最重要的多数外围条目上领有怎么的预测体现。一般来说,改良对特定条目(例如价格较高或老本较高的条目)的预测准确性往往要比对全副条目进行整体加强更具现实意义。通过此次性能公布,当初您能够查看单一条目标准确性,并在训练期间察看其预测输入。利用这部分信息,您能够轻松将预测体现与察看到的实在历史需要进行比拟,在自定义SKU或特定时段内的自定义汇合中汇总各项准确性指标,或者在不保留独自验证数据集的前提下进行后果可视化,从而更好地解释后果。以此为根底,咱们能够进一步定制试验,深刻摸索如何优化可能切实满足业务需要的外围条目标预测准确性。 想要理解更多亚马逊云科技最新技术公布和实际翻新,敬请关注在上海、北京、深圳三地举办的2021亚马逊云科技中国峰会!点击图片报名吧~ 特地是对于零售商而言,不同SKU往往有着不同的业务影响。一般来讲,批发行业遵循“二八定律”——即80%的支出次要来自20%的多数单品。因而,零售商当然更偏向于在这20%单品上取得更高的预测准确性。尽管咱们能够为这前20%的单品创立独立的预测模型,但因为此模型齐全接触不到其余80%的商品(条目),因而准确性很可能受到影响。此外,零售商兴许更偏向于让某些商品放弃高于所需的库存程度、并让另一些商品低于所需的库存程度,因而须要训练繁多模型以评估不同库存程度下不同商品的预测准确性。 为了在条目层级或者部门层级评估预测准确性,咱们通常会将验证数据集保留在Forecast之外,只向Forecast提供训练数据集以创立优化模型。在模型训练实现之后,咱们能够生成多项预测,并将其与验证数据集进行比拟。但这会减少试验阶段的老本,并削减Forecast在训练中所能接触的数据量。 通过明天的性能公布,当初大家能够拜访Forecast内部测试中的预测值。此测试会将数据间接拆分为训练数据组与回测数据组,借此将预测后果同察看到的数据与条目级准确性指标进行比拟。如此一来,咱们无需在Forecast之外保留测试数据集。在训练模型的各步骤中,Forecast会主动将历史需要数据集划分为训练数据集组与回测数据集组。Forecast应用训练数据集进行模型,再将后果与回测数据集组内的察看值进行比拟,从而在回测期间实现对不同指定库存程度的预测剖析。当初,您能够随时导出各具体条目标回测预测后果与各个条目标准确性指标。 要针对特定条目或基于不同类别的自定义条目集对其预测模型进行强度评估,咱们能够将这些条目标回测预测后果汇总起来,借此计算出准确性指标。如果您抉择了不同的库存程度,还能够抉择评估某些库存程度下的条目准确性,同时度量不同库存程度下其余条目标准确性。最初,当初您能够将回测预测导出至Amazon QuickSight或者您指定的任何其余可视化工具,借此轻松将预测后果与历史需要进行比拟。 要应用此项性能,请参阅咱们的博客以理解如何导出各条目标回测后果。同时参考CreatePredictorBacktestExportJob API。咱们还在GitHub repo中提供一份notebook ,可帮忙大家逐渐理解如何应用Forecast API导出各条目标准确性指标,并据此计算出一组自定义条目标准确性指标。 博客https://aws.amazon.com/cn/blo...当初,您能够在正式上线Forecast服务的所有亚马逊云科技区域内应用此项性能。对于区域服务可用性的更多详细信息,请参阅区域表。 参考资料CreatePredictorBacktestExportJob API:https://docs.aws.amazon.com/f... notebook:https://github.com/aws-sample... 区域表:https://aws.amazon.com/about-... 原文链接(英文):https://aws.amazon.com/cn/abo... 博客链接:https://aws.amazon.com/cn/blo...

December 23, 2021 · 1 min · jiezi

关于ml:动手用-Java-训练深度学习模型

很长时间以来,Java 始终是一个很受企业欢送的编程语言。得益于丰盛的生态以及欠缺保护的包和框架,Java 领有着宏大的开发者社区。只管深度学习利用的一直演进和落地,提供给 Java 开发者的框架和库却非常短缺。现今次要风行的深度学习模型都是用 Python 编译和训练的。对于 Java 开发者而言,如果要进军深度学习界,就须要重新学习并承受一门新的编程语言同时还要学习深度学习的简单常识。这使得大部分 Java 开发者学习和转型深度学习开发变得困难重重。 为了缩小 Java 开发者学习深度学习的老本,亚马逊云科技构建了Deep Java Library (DJL),一个为 Java 开发者定制的开源深度学习框架。它为 Java 开发者对接支流深度学习框架提供了一个桥梁。DJL 同时对 Apache MXNet,PyTorch 和 TensorFlow 最新版本的反对,使得开发者能够轻松应用Java构建训练和推理工作。在这个文章中,咱们会尝试用 DJL 构建一个深度学习模型并用它训练MNIST 手写数字辨认工作。 什么是深度学习?在咱们正式开始之前,咱们先来理解一下机器学习和深度学习的基本概念。机器学习是一个通过利用统计学常识,将数据输出到计算机中进行训练并实现特定指标工作的过程。这种演绎学习的办法能够让计算机学习一些特色并进行一系列简单的工作,比方辨认照片中的物体。因为须要写简单的逻辑以及测量规范,这些工作在传统计算迷信畛域中很难实现。 深度学习是机器学习的一个分支,次要侧重于对于人工神经网络的开发。人工神经网络是通过钻研人脑如何学习和实现目标的过程中演绎而得出一套计算逻辑。它通过模仿局部人脑神经间信息传递的过程,从而实现各类简单的工作。深度学习中的“深度”来源于咱们会在人工神经网络中编织构建出许多层( layer )从而进一步对数据信息进行更深层的传导。深度学习技术利用范畴非常宽泛,当初被用来做指标检测,动作辨认,机器翻译,语意剖析等各类事实利用中。 想要理解更多亚马逊云科技最新技术公布和实际翻新,敬请关注在上海、北京、深圳三地举办的2021亚马逊云科技中国峰会!点击图片报名吧~ 训练MNIST手写数字辨认我的项目配置 你能够用如下的 gradle 配置来引入依赖项。在这个案例中,咱们用 DJL 的 api 包 (外围 DJL 组件) 和 basicdataset 包 ( DJL 数据集) 来构建神经网络和数据集。这个案例中咱们应用了 MXNet 作为深度学习引擎,所以咱们会引入 mxnet-engine 和 mxnet-native-auto 两个包。这个案例也能够运行在 PyTorch 引擎下,只须要替换成对应的软件包即可。 1plugins {2    id 'java'3}4repositories {                           5    jcenter()6}7dependencies {8    implementation platform("ai.djl:bom:0.8.0")9    implementation "ai.djl:api"10    implementation "ai.djl:basicdataset"11    // MXNet12    runtimeOnly "ai.djl.mxnet:mxnet-engine"13    runtimeOnly "ai.djl.mxnet:mxnet-native-auto"14}NDArray 和 NDManager NDArray 是 DJL 存储数据结构和数学运算的根本构造。一个 NDArray 表白了一个定长的多维数组。NDArray 的应用办法相似于 Python 中的 numpy.ndarray 。 ...

December 23, 2021 · 2 min · jiezi

关于ml:在Amazon-SageMaker中灵活使用多种存储服务

Amazon SageMaker 是一种齐全托管的端到端机器学习服务,数据科研人员、开发人员和机器学习专家能够疾速、大规模地构建、训练和托管机器学习模型。这极大地推动了您所有的机器学习工作,让您可能将机器学习技术迅速融入生产应用程序。Amazon SageMaker的次要工作组件包含:算法编写、模型训练、模型评估、模型托管等。 模型训练是机器学习工作流程中至关重要的一步,而为模型训练提供灵便、高效、精确的输出数据则间接决定了训练后果品质。通常,模型训练的工作不是欲速不达,而是一个动静调整,循序渐进的过程,须要重复调整以及多个部门和工作流程的合作实现。 本文中,咱们以机器学习中的图像分类算法为例,介绍典型的机器学习模型训练的输出数据筹备过程: 为了满足机器学习图像分类算法对训练和验证数据量的要求,咱们会保护一个微小的图片仓库,外面寄存着几万甚至更多的分类图片文件。数据筹备团队每天都会往仓库中减少新获取的图片文件并实现分类。同时,因为一些起因(比方,发现之前的分类谬误或者弃用一些类别),咱们也会对仓库中的图片文件进行批改或删除。 在理论的机器学习训练任务中,为了管制训练任务的工夫和规模,咱们会依据模型应用的场景,选取残缺仓库中的局部数据或者一个子集来组成训练数据集和验证数据集。 不同格局输出数据的应用差别Amazon SageMaker 的训练任务反对两种输出模式:管道模式和文件模式。 以管道模式运行训练任务的时候,训练实例不会将数据齐全下载到本地后才运行,训练实例按需从指定的管道中读取训练数据。管道模式能够减速训练实例启动和开始训练的过程,尤其是当训练数据量十分大,比方超过16TB的时候,训练实例的本地磁盘无奈承载全量的运行数据时,必须要应用管道模式能力进行训练。 接下去,咱们次要看一下Amazon SageMaker训练任务的文件模式输出,训练任务文件模式下目前反对的数据源包含:Amazon S3、Amazon EFS和Amzon FSx for Lustre 。不同的数据输出源以通道的模式提供给训练实例作为输出数据,一个训练实例能够最多配置20个不同的输出源通道,不同的通道能够应用不同的数据源类型。 咱们应用Amazon SageMaker提供的内置图像分类算法进行图像分类模型的训练,内置算法能够接管两种数据格式,一种是RecordIO格局,另一种是图片文件,对于如何解决数据到RecordIO格局能够参考MXNet的官网文档。以下咱们重点介绍图片文件的输出形式: 图像分类算法承受4个输出通道:train, validation, train_lst, validation_lst 别离对应训练数据集,验证数据集,训练数据集列表文件,验证数据集列表文件, 数据集和数据集列表文件在格局、存储模式和应用行为上有很大的差别。 数据集自身是图片文件,以某种模式的目录构造寄存,比方:按工夫、按类别、按部门等。图片文件一经生成后文件内容就固定下来,能够作为一个整体被读取,替换或删除。不同训练任务中,从图片仓库中选取局部图片组成训练数据集,同一个图片文件可能在不同的训练任务中被多次重复应用到。 数据集列表文件是一个以.lst为扩展名,文件外部以制表符(tab)作为宰割,为数据集里的图片文件提供索引信息。 一个典型的.lst索引文件格式如下: 15 1 your_image_directory/train_img_dog1.jpg231000 0 your_image_directory/train_img_cat1.jpg4522 1 your_image_directory/train_img_dog2.jpg第一列是图像文件的惟一索引号;第二列代表图像类别对应的数字号(从0开始),比方0代表猫,1代表狗;第三列是文件门路包含了文件绝对目录和文件名。 数据集列表文件须要依据每次训练任务的实用场景生成,可能频繁被读取和批改,包含: 屡次递进的训练任务中须要向列表文件中增加更多的图片文件索引记录;因为发现分类信息谬误,须要批改局部行的信息;因为图片仓库的批改,须要替换局部行的信息;多个lst文件之间须要频繁进行diff,通过比拟输出数据的差别来确认对训练输入模型的影响;分类规定扭转,原有分类细化分支或者合并到新的分类;须要在团队之间共享合作,实现对同一个.lst文件内容的确认和创立;其余一些场景。以图片模式的保留的图片仓库适宜以对象造成存储于Amazon S3上,当然,如果您心愿防止重复从Amazon S3下载大量的图片数据,或者现有的一些辅助工具是基于POSIX文件系统接口开发的,那么,Amazon EFS或Amazon FSx for Lustre同样能够提供一个简便、高效的数据长久化存储来构建您的图片仓库。 对列表文件.lst来说,须要频繁创立和批改,并可能须要联合工作流程,在多个成员之间合作的状况下实现最终文件内容的确定。因而列表文件.lst 适宜保留在具备POSIX接口的共享文件系统上,包含Amazon EFS和Amazon FSx for Lustre。当然您也能够应用S3来保留.lst文件,但思考到在文件块级别批改和读取上的便捷性以及文件分享简便性来说,在POSIX反对的共享文件系统上间接应用.lst文件的工作流程还是会更简便一些。 如何配置输出通道和数据源对于输出通道的具体配置,您能够在Amazon SageMaker控制台的训练任务创立过程中通过集成界面来具体指定: 以下是 S3作为输出通道数据源的配置: 以下是 EFS作为输出通道数据源的配置: 以下是应用 Amazon FSx for Lustre作为输出通道数据源的配置: ...

December 23, 2021 · 1 min · jiezi

关于ml:SageMaker-Neo优化目标检测模型加速推理

摘要该文以指标检测模型着手,演示如何一步步基于SageMaker Neo对训练后的模型文件进行编译优化,来晋升模型的推理速度。文中以yolo3_mobilenet1.0_coco模型为例,别离演示模型筹备,模型Neo编译,模型导出推理测试,可视化等过程,推理结果显示基于SageMaker Neo能够显著晋升推理速度,达到一倍以上的减速。 想学习更多人工智能与机器学习前沿案例?来2021亚马逊云科技中国峰会与业内当先的技术践行者们一起探讨交换吧!点击图片报名吧~ 模型筹备在利用SageMaker Neo编译模型之前,首先须要依据神经网络的框架筹备模型,具体能够参考官网指南Compile and Deploy Models with Neo:https://docs.aws.amazon.com/s... 不同的框架对模型的要求各不相同,以MXNet框架为例,其模型的要求形容为: MXNet models must be saved as a single symbol file *-symbol.json and a single parameter *.params files.为了阐明整个SageMaker Neo优化的具体流程,该文档以yolo3_mobilenet1.0_coco人形检测模型为例进行模型筹备,Neo编译,以及测试。 模型筹备分为两步,别离如下: 第一步:下载 yolo3_mobilenet1.0_coco人形检测模型: wget -c https://ipc-models-zoo.s3.amazonaws.com/body-detector/body_detector_yolo3_mobilenet1.0_coco-0000.paramswget -c https://ipc-models-zoo.s3.amazonaws.com/body-detector/body_detector_yolo3_mobilenet1.0_coco-symbol.json第二步:将上述两个文件打成.tar.gz包,即执行如下python脚本: import tarfiletar = tarfile.open("body_detector_yolo3_mobilenet1.0_coco.tar.gz", "w:gz")for name in ["body_detector_yolo3_mobilenet1.0_coco-0000.params", "body_detector_yolo3_mobilenet1.0_coco-symbol.json"]:tar.add(name)tar.close()Python脚本执行结束,会在当前目录生成名为 body_detector_yolo3_mobilenet1.0_coco.tar.gz的文件,该文件为SageMaker Neo编译工作的输出。 Neo编译作业SageMaker Neo编译作业能够间接在SageMaker控制台实现,它的输出是一个S3桶门路,优化后的模型导出也是一个S3桶门路,整个过程如下: 1.将其中生成的 body_detector_yolo3_mobilenet1.0_coco.tar.gz上传至任意一个指定的S3桶门路,如 s3://object-det-neo/input/body_detector_yolo3_mobilenet1.0_coco.tar.gz2.进入SageMaker控制台,点击左侧导航栏推理-编译作业,创立编译作业,输出作业名称,创立具备S3桶拜访权限的IAM角色,输出配置中的选项包含: 模型构件的地位: 模型存储的S3桶门路数据输出配置: 即模型的推理时输出尺寸,该指南中以宽高比为3:2的图像为基准,输出尺度为{"data": [1, 3, 416, 624]机器学习框架: 因为该指南以MXNet为例,故抉择MXNet3.输入配置选项包含: 指标设施/指标平台:抉择指标平操作系统:抉择LINUX;架构:抉择X86_64加速器:抉择NVIDIA编译器选项:输出{"gpu-code": "sm_75", "trt-ver": "7.0.0", "cuda-ver": "10.1"}S3输入地位:指定优化后的模型输入,如s3://object-det-neo/output/加密密钥:放弃默认(无自定义加密)最初点击提交,期待3-5分钟,待编译作业状态显示实现后编译后的模型(如 s3://object-det-neo/output/body_detector_yolo3_mobilenet1.0_coco-LINUX_X86_64_NVIDIA.tar.gz)便会输入到指定的S3桶地位。 EC2推理速度测试启动EC2实例 进入EC2控制台,启动实例,抉择Amazon零碎镜像(AMI)为 Deep Learning AMI (Amazon Linux 2) Version 44.0 - ami-01f1817a8a0c23c2e,抉择实例类型为g4dn.xlarge,点击下一步配置实例详细信息,放弃默认,点击下一步增加存储,放弃默认根卷大小95GiB,点击下一步增加标签(可选),点击下一步配置安组,放弃默认,点击审核和启动,抉择现有密钥对或创立新密钥对,点击启动。 稍等几分钟,期待实例的状态查看初始化实现后,通过terminal链接该实例: ssh -i "your_key.pem" ec2-user@ec2-xxx-xxx-xx-xxx.compute-1.amazonaws.com推理测试 通过SSH登录链接到实例之后,下载推理测试的代码和模型(未通过Neo优化的和通过Neo优化的),具体执行命令如下所示: git clone https://github.com/aws-samples/amazon-ipc-ai-saas.gitcd amazon-ipc-ai-saas/source/neomkdir -p models/human_body_detectorcd models/human_body_detectorwget -c https://ipc-models-zoo.s3.amazonaws.com/body-detector/body_detector_yolo3_mobilenet1.0_coco-0000.paramswget -c https://ipc-models-zoo.s3.amazonaws.com/body-detector/body_detector_yolo3_mobilenet1.0_coco-symbol.jsoncd ../../mkdir -p models/human_body_detector_neocd models/human_body_detector_neowget -c https://ipc-models-zoo.s3.amazonaws.com/body-detector/body_detector_yolo3_mobilenet1.0_coco-LINUX_X86_64_NVIDIA.tar.gztar -zxvf body_detector_yolo3_mobilenet1.0_coco-LINUX_X86_64_NVIDIA.tar.gz上述命令执行之后,在neo/目录下的构造如下所示: .├── eval.py├── models│   ├── human_body_detector│   │   ├── body_detector_yolo3_mobilenet1.0_coco-0000.params│   │   └── body_detector_yolo3_mobilenet1.0_coco-symbol.json│   └── human_body_detector_neo│       ├── compiled.meta│       ├── compiled_model.json│       ├── compiled.params│       ├── compiled.so│       └── manifest└── test_1280x1920x3.jpg装置neo-ai-dlr软件和gluoncv依赖包,参考https://github.com/neo-ai/neo...;这里测试平台为Amazon g4dn.xlarge,装置命令如下: wget -c https://neo-ai-dlr-release.s3-us-west-2.amazonaws.com/v1.9.0/gpu/dlr-1.9.0-py3-none-any.whlsource activate mxnet_latest_p37pip3 install dlr-1.9.0-py3-none-any.whlpip3 install gluoncv==0.8.0退回到neo/目录,执行速度评估脚本eval.py,如下所示: python3 eval.py 运行后果会间接打印在terminal之上,同时也会将推理的后果绘制进去并保留到当前目录下(未经SageMaker Neo优化的检测后果body_det_vis.jpg,经SageMaker Neo优化后的推理模型检测后果body_det_vis_with_neo.jpg)。 未经Neo优化和通过Neo优化后的推理后果可视化别离如下所示: 能够看出SageMaker Neo的优化根本没有影响到检测的精确度,运行工夫开销输入后果如下: [NEO Optimization Disabled] Time Cost per Frame (input size = 1x3x416x624) = 23.388335704803467 ms[NEO Optimization Enabled] Time Cost per Frame (input size = 1x3x416x624) = 10.05416750907898 msSageMaker Neo优化过的模型能够将推理速度晋升一倍以上,该推理工夫不含将图像进行base64解码以及resize的局部。 留神:在测试完结之后,敞开该实例,防止产生不必要的费用。 本篇作者 徐高伟亚马逊云科技解决方案架构师负责基于亚马逊云科技的云计算计划的征询与架构设计,致力于亚马逊云科技云服务在汽车,物联网,人工智能等行业的利用和推广。在退出亚马逊云科技之前曾在BMW无人驾驶研发核心负责机器人和人工智能专家,负责无人车环境感知,行为预测和决策布局研发。

December 23, 2021 · 1 min · jiezi

关于ml:重装上阵Graviton2提升ElastiCache-for-Redis的性价比

1. 前言从2020年10月开始,基于亚马孙云科技 Graviton2 的缓存实例逐渐推出,客户能够在应用 Amazon ElastiCache for Redis上应用这些实例。 Graviton2 处理器由 Amazon Web Services 应用 64 位 ARM Neoverse 内核定制,对第一代亚马逊云科技 Graviton 处理器进行了多种性能优化。这包含 7 倍的性能、4 倍的计算外围数量、每个内核 2 倍的公有内存、5 倍的内存速度和每个外围 2 倍的浮点性能。此外,Graviton2 处理器还具备全天候运行的全加密 DDR4 内存性能,且每核加密性能进步 50%。这些性能晋升使得配备了Graviton2 的实例成为缓存工作负载的上佳之选。 本文将向您展现Graviton2 R6g 缓存实例(测试实例类型cache.r6g,后续简称r6g或R6g)对R5缓存实例(cache.r5,后续简称r5或R5)的性能加强以及迁徙到Graviton2 R6g 缓存实例的办法流程。 通过测试咱们能够分明地看到,无论是何种工作负载和并发条件,R6g实例比之等同资源配置的R5实例性能均有显著的晋升,而且每小时单价却有降落,在这双重因素的叠加之下,抉择新一代的r6g实例,具备更好的性能和性价比。 2. 环境筹备2.1 环境信息 测试客户端(新加坡区域,AZ3) 表格:测试客户端配置 测试服务端(新加坡区域,主用在AZ3) 表格:测试服务端配置 ElastiCache for Redis抉择默认参数,开启了集群模式(Cluster),数据用3个分片(每个分片1主2从,共计9个节点,为了零碎的高可用和治理须要,默认参数会设置25%的内存作为预留内存,所以读者在本人做性能测试时要注意别把内存耗光导致后果失真,这也是咱们没有抉择最低配置的实例做测试的起因之一)。 部署结束后的集群地址: 表格:测试的集群终端节点 咱们把测试客户端和集群的主节点人工强行放到了同一个AZ以获取更间接的比照成果,同时选用的ElastiCache for Redis集群实例(3*3的2xlarge构建的集群)和测试客户端(8xlarge的EC2)均反对10G的带宽模式,读者在本人做测试时也要防止因网络带宽有余导致的测试后果失真。 可能很多读者会问,为什么测试的时候只抉择这一个机型?仔细的读者可能会发现,亚马逊云的机型是有肯定法则的,例如4xlarge的配置刚好是2xlarge的两倍,而8xlarge的又刚好是4xlarge的两倍(以此类推,具体机型定义请参看网页链接:https://docs.aws.amazon.com/z...) 所以此处咱们用r5.2xlarge和r6g.2xlarge做个具备代表性的比照测试,就不必其余机型一一比照了。 2.2压测工具此处咱们应用两个不同的压测工具做针对性测试,一个是Redis自带的简略易用的redis-benchmark,一个是Redis Labs开源提供的在更高并发的场景应用的memtier_benchmark。 2.2.1 redis-benchmarkredis-benchmark默认含在redis的散发外面,间接装置redis即可取得,在Amazon Linux 2操作系统上应用如下命令即可(这个装置在客户端上,后续迁徙的时候也会用到这个客户端源)。 amazon-linux-extras install redis4.0 -y 其命令的罕用参数选项如下: 表格:redis-benchmark的罕用参数 2.2.2 memtier_benchmarkmemtier_benchmark须要应用github上的源码进行编译能力应用,在Amazon Linux 2操作系统上能够应用如下形式: ...

December 23, 2021 · 1 min · jiezi

关于ml:动手训练属于自己的无人车这个超强服务现已开源

Amazon DeepRacer 是开始应用机器学习 (ML) 的最快形式。您能够在基于云的虚构模拟器中应用 1/18 比例主动驾驶车辆训练强化学习 (RL) 模型,并在寰球 Amazon DeepRacer League 中角逐奖金和荣誉。明天,咱们将通过对 Amazon DeepRacer 设施软件进行开源来扩大 Amazon DeepRacer 性能,以提供乏味的入手学习。 为什么要开源Amazon DeepRacer 虚构赛事和线下赛事已广受好评,但开发人员当初想要其汽车超过赛车联赛。Amazon DeepRacer 是一款基于 Ubuntu 的计算机轮式小车,该安装由咱们能够对代码进行开源的机器人操作系统 (ROS) 提供反对,能够让领有根本 Linux 编码技能的开发人员可能轻松对其汽车有意思的新用处进行原型开发。Amazon DeepRacer 设施软件现已公开可用,因而,任何领有汽车和创意的人员均可让其设施的新用处成为事实。 咱们汇编了 6 个来自 Amazon DeepRacer 团队和寰球 Amazon DeepRacer 社区成员的示例我的项目,以帮忙您开始摸索开源可实现的有限可能。在开发人员应用 #deepracerproject 分享新我的项目时,咱们将会在 Amazon DeepRacer 机器人我的项目页面突出显示咱们的珍藏。无论是应用 DeepBlaster 我的项目在汽车上挂载 Nerf 加农炮,还是通过 Mapping 我的项目创立家或办公室的虚拟化成果,亦或是通过 DeepDriver 我的项目提出与敌人和共事进行赛车的新形式,您都能够应用开源代码和示例我的项目实现所有这些工作。文档可在 GitHub 中找到,并且能够在 Amazon DeepRacer Slack 频道中与数千位社区成员进行合作。Amazon DeepRacer 潜能的惟一限度是您的想象力(当然,还有物理定律)。 让咱们开始试验将 Amazon DeepRacer 设施代码进行开源之后,您能够轻松疾速地更改以后所跟踪赛道的赛车的默认行为。想要通过部署反抗措施来阻止其余车辆超车?想要部署您本人的自定义算法,以便进步车辆从 A 点驶向 B 点的速度?您只有敢想,而后就可进行编码。咱们十分心愿看到您提出的创意,从新的赛车模式到 Amazon DeepRacer 的新用处。 即日起,您能够从六个我的项目中进行抉择 (追随首领、Mapping、越野(由 Amazon Web Services 创立)、RoboCat、DeepBlaster 和 DeepDriver(由开源社区创立),或者创建您本人的一个我的项目。您能够从追随领队示例我的项目动手,该我的项目将会训练汽车检测和跟踪一个物体。这是最快的构建和运行我的项目,在下一个局部,咱们将演示批改 Amazon DeepRacer 汽车的默认行为是如许的简略。要实现此设置,请降级到最新的软件版本,而后通过 SSH 进入汽车。 ...

December 23, 2021 · 1 min · jiezi

关于ml:新能源当道如何构建一个电动汽车电池告警预测平台

简介近年来,我国新能源汽车行业出现蓬勃发展的态势。主机厂曾经收集了大量的电动车的车联网数据,包含三大类(动态车辆数据、实时处理数据和实时车辆告警数据)160多项数据。主机厂心愿从这些数据中失去报警的统计和剖析,并且心愿延长到报警的预测,能够及时召回可能产生故障的车辆或者被动推送更新软件到车端进行修复,升高电池事变造成的损失,晋升客户的满意度。 本篇介绍了如何利用Amazon Web Services的服务组件疾速搭建电动车电池告警预测平台,包含存储海量测试数据,构建基于XGBoost分类算法的电池故障报警预测模型,推理预测数据以及可视化的数据展现。 代码仓库https://github.com/aws-sample... 架构概述 该解决方案是基于数据驱动来对电池单体一致性偏差报警事件进行预测,借助于Amazon SageMaker,您能够疾速便捷地构建本人的机器学习模型(如XGBoost,递归神经网络等),并实现模型训练,模型推理。该解决方案中应用Amazon DynamoDB和Amazon S3来存储预测事件的输出和推理后果。当您部署完该解决方案后,在SageMaker Notebook中会预置一个基于XGBoost二分类的机器学习模型脚本(xgboost_beginner.ipynb)以及样例数据(series_samples.csv),运行该机器学习脚本能够实现预测模型的疾速构建和主动部署。本解决方案反对的推理事件有两种形式:其一为用户间接应用POST申请携带输出特色数据获取推理后果,该形式是基于Amazon API Gateway和 Lambda实现;其二为用户上传收集到的批量电池数据(能够来源于您on-premise数据库,或实时车辆网收集到的电池数据)至Amazon S3桶,数据上传事件会主动触发Lambda进行推理。所有的POST申请推理和S3上传事件触发的推理均能够通过Apache Superset进行可视化,它是由 Fargate进行承载,不便您实时查看具体的电池单体一致性偏差报警事件。架构图中各个组件之间的关系用连贯箭头示意,其具体含意别离为: 主机厂或电池厂商将采集的电池数据上传至 S3桶中,用于模型建模和训练;SageMaker Notebook Instance获取电池数据;在SageMaker Notebook Instance中实现模型建模,训练和部署,部署后的Inference Model是一个Runtime Endpoint,它用来提供预测推理服务;利用场景一:车辆网上传的数据推送到的S3桶,S3桶中新减少的Batch数据即为须要推理的数据;利用场景一:新减少的Batch数据主动调用Lambda进行转发申请;利用场景一:Lambda调用SageMaker Runtime Endpoint进行前向推理;利用场景一:前向推理的后果写入到Dynamo DB进行存储;利用场景一:前向推理的后果写入到S3进行存储(供Superset可视化);利用场景二:用户调用API进行前向预测推理,用户采纳POST调用;利用场景二:API Gateway将申请路由到Lambda函数;利用场景二:Lambda调用SageMaker Runtime Endpoint进行前向推理;利用场景二:前向推理的后果写入到Dynamo DB进行存储;利用场景二:前向推理的后果写入到S3进行存储(供Superset可视化);Superset后盾部署在Fargate Service, 基于SQL数据查问拜访实时推理后果的数据;Amazon Athena从Glue Data Catalog中的数据库和表中查问数据;Glue Data Catalog的表格Schema是对预测后果S3桶中记录的定义。解决方案部署部署能够在北京区、宁夏区、美东一区进行,若在国内部署须要开明ICP Exception。能够间接基于Cloudformation部署,cloudformation的模板下载链接进行,创立堆栈时参数放弃默认值即可。 美东一区:https://aws-gcr-solutions.s3.... 中国区(宁夏/北京):https://aws-gcr-solutions.s3.... 数据分析/模型训练/模型部署在解决方案部署实现之后,在SageMaker控制台中会创立一个笔记本实例。内置XGBoost的脚本和电池样例数据集,用户在实在应用场景中能够基于本身的电池数据集来进行模型构建,训练和部署。 关上SageMaker控制台,能够看到部署之后预置的笔记本实例: 点击 [关上Jupyter],进入界面如下: 关上 xgboost_beginner.ipynb,顺次执行每一个代码块,便能够逐渐进行数据加载,各维度数据分析与可视化,数据集划分,XGBoost分类模型构建与训练,模型主动部署,模型性能测试等一系列操作。 样例数据集中蕴含了“车架号VIN”,“采集工夫Date”,“总电压(V)”,“总电流(A)”,“电池单体电压最高值(V)”,“电池单体电压最低值(V)”, “最高温度值(℃)”, “最低温度值(℃)” 信息。最初一列的Label表征数据在该天是否产生了电池单体一致性差报警,0示意没有报警,1示意产生报警。在xgboost_beginner.ipynb脚本中,选取历史14天的样本并聚合在一起造成一个 14*6 维度的特征向量,基于该向量预测将来14天内是否呈现电池一致性差报警,此问题被形象成一个二分类问题。 在构建模型输出数据集时,首先将历史特色聚合成一个大的向量,并将将来14天内的电池一致性报警标签进行聚合,举例说明:对于第x天而言,第x-14天(含)到第x-1天(含)这共计14天的特色(维度为6)聚合成一个84维度的特征向量;若第x天(含)到第x+13天(含)这将来14天呈现电池单体一致性报警,则该特征向量对应的分类标签为1;反之为0。通过滑窗操作对所有数据执行上述操作,提取所有的样本,再依照4:1划分为训练集和验证集。 实现模型训练后能够看到训练迭代过程中的error (loss)逐渐收敛,如下图所示: 模型部署须要5分钟左右,放弃脚本中的 sm_endpoint_name参数不变即可,在解决方案中lambda函数会以此名调用Sagemaker endpoint: 在XGBoost模型部署实现之后在SageMaker终端节点中会呈现如下处于“InService”状态的推理节点。 继续执行xgboost_beginner.ipynb的代码块,能够对电池故障报警分类算法的性能作出评估,采纳的性能指标包含: 真阳(True Positive): 实际上是正例的数据被分类为正例假阳(False Positive): 实际上是反例的数据被分类为正例真阴(True Negative): 实际上是反例的数据被分类为反例假阴(False Negative): 实际上是正例的数据被分类为反例召回率(Recall): Recall = TPR = TP / (TP + FN), 掂量的数据集中所有的正样本被模型辨别进去的比例准确率(Persion): Persion = TP / (TP + FP), 掂量的模型辨别进去的正样本中真正为正样本的比例假阳率(False Positive Rate, FPR): FPR = FP / (FP + TN), 掂量的是 被错分的反例 在所有反例样本中的占比基于不同分类阈值绘制出ROC曲线(FPR-TPR),当抉择的阈值越小,其TPR越大,FPR越大;ROC曲线下的面积约靠近1.0阐明模型越优。下图为示例数据训练后在验证集上的性能出现。 ...

December 23, 2021 · 1 min · jiezi

关于ml:即刻到位快速落地-Amazon-智能工厂解决方案

{ 智能工厂背景 }很多的制作企业正在利用数字化技术进行转型,并利用机器学习、计算机视觉和机器人等技术晋升制作自动化水平。智能工厂便是在制作数字化的根底上,整合信息技术(IT)和经营技术(OT),利用物联网,AI,机器学习等技术进行实时收集、连贯、剖析和推断企业数据。这些数据能够通过各种利用实现可操作性,这些数据还可用于无效掂量某条生产线或工厂的性能,与组织中的其余生产线或寰球基准进行比拟,以进步生产过程可控性、缩小生产线人工干预,优化打算排程,并在性能、品质和平安方面进行继续的优化。 然而大部分制作企业的数字化和智能工厂转型路线并不是一帆风顺,在这个过程中他们都会面临着各种各样的问题,这其中包含了很多产线设施数据因网络、协定等问题没有被很好的收集;海量的经营数据因本地存储限度而被抛弃,没有被很好的利用;企业紧缺的IT人才被繁琐的系统维护破费了大量的精力,而没有工夫投入到能为生产制作带来价值的翻新和优化上。近些年云计算、物联网、大数据、人工智能等技术正在从各个方面扭转咱们的生存,同时这些技术也能够为制作企业的数字化转型扫清很多技术阻碍,为智能工厂提供技术保障。本文将介绍亚马逊云科技如何利用这些技术为智能工厂提供解决方案并展现如何利用物联网技术将产线数据上云,如何利用边缘计算技术实时控制设施。 { Amazon智能工厂解决方案简述 }要让数据驱动咱们向智能制作的转型,就须要数字化和智能工厂平台让数据真正流动起来,这里咱们介绍亚马逊云科技的智能工厂的解决方案如何让工业数据流动起来,下图咱们给出一个端、边、云的智能工厂参考架构。 在右边的工厂站点“端”侧是底层的工业设施和PLC控制器,这是数据的源头,这些源头数据咱们能够通过协定转换将特定的工业协定转换为物联网通用的协定。在工厂侧的小数据中心咱们称“边缘”侧,这里能够部署边缘网关负责数据的收集和预处理工作,预处理后的数据通过专线或者互联网发送到“云端”,并且作为实时的热数据存储起来,对于这些实时数据一方面给到操作KPI仪表板展现给工厂经理和主管,同时对于一些异样数据比方温度过高、触动异样等数据须要立刻触发报警管理系统。另外这些热数据也会最终流入数据湖中作为温数据或者冷数据存储起来,用于机器学习和大数据分析或者构建数据仓库的数据源。 数据湖除了具备各种类型和体量数据的存储能力之外,还要具备灵便的数据拜访能力,以便于为数据工程师和科学家提供训练机器学习模型的能力。同时也为工厂经理企业决策者提供业务智能报表的能力。对于工厂生产工艺或者业务经理人员,也能够利用自助服务即可拜访数据湖的数据做相应的业务剖析。对于企业的IT数据例如ERP,CRM等能够通过远端的服务调用拜访相应的数据做OT和IT的交融。在这个参考架构的每一部分亚马逊云科技都提供了相应的服务来帮忙企业疾速构建本人的智能工厂平台,如下图所示,在工厂本地端和边缘侧,亚马逊云科技提供的Amazon IoT Greengrass服务能够帮忙做边缘数据的收集,预处理工作;在云端,亚马逊云科技也提供了各种的服务来满足不同业务的需要,比方应用IoT服务做工业数据的入口,应用Amazon S3做数据湖的载体,应用Amazon SageMaker服务做机器学习的训练等等。在后边的章节中将展现如何利用亚马逊云科技的合作伙伴研华的硬件设施来理论搭建智能工厂的演示环境。 { 利用研华硬件理论搭建智能工厂的演示环境 }整体架构图 咱们基于Amazon IoT合作伙伴研华的硬件设施,疾速搭建了一个演示环境。整体架构图如下: 如下是理论的演示环境: 图中所波及到的各类硬件设施介绍如下: ECU-1251 工业网关负责协定转换和通信。能够采集多个PLC的数据,并转换为工业标准协议,如OPC UA等。通过这个网关进行多种协定聚合和协定转换,对外提供规范的OPC UA或者MQTT协定格局。PLC 可编程逻辑控制器负责工业环境的数字/模拟量采集和管制。这里用于采集下方多个按钮的状态,并且实时反馈在其下方的多个LED下面,和电机下面。ADAM-4055传感器采集器提供8路数字输出通道和8路数字输入通道。采集工业现场的数字/模仿类型的传感器,比方电表等。电机本地可执行部件,用于多种场景,如启动风扇等。UNO-2484G工业边缘计算单元基于x86架构的边缘计算单元,装置了AWS Greengrass,协调1和6之间的本地通信,以及与Amazon IoT Core的交互。工厂的利用场景中可能有一台或多台的边缘计算设施,利用Greengrass的lambda等性能进行local shadow或者ML等高级性能。ADAM-3600无线智能RTU汇合了1和2和3的性能,并且带有无线传输的可选性能。提供8路数字输出通道和4路数字输入通道,以及8路模仿输出和USB/ETH/RS485等接口。按钮用于演示触发本地电机运行。本地可模仿多种事件,比方烟雾报警器等。SCADA工业现场软件(研华)本地数据采集与监控零碎。{ 数据采集与上传 Amazon IoT Core }什么是OPC UA OPC UA的全名是OPC Unified Architecture(OPC对立架构),他着重在数据收集以及管制为目标的通信,用在工业设施以及零碎中,并且它是一个跨平台的开源规范。 为什么工业现场须要OPC UA工业现场有多种通信协议,不齐全统计:工业现场罕用的通信协定不低于20种。OPC基金会在旧的开放平台通信(OPC)协定根底上开发一个针对全新而且独立的OPC UA通信协定栈来取代COM/DCOM。目前,OPC UA是少数工业现场事实上的对立协定规范? amazon-iot-greengrass-opcua-adapter是如何实现的? 基于OPC UA的协定,amazon-iot-greengrass-opcua-adapter 利用了node-OPC UA 编写的OPC UA stack 模仿成OPC UA client, 而依据OPC UA的client-server的架构向OPC UA Server订阅node的information,OPC UA Server会在这些node的数据扭转时, 将数据发送给这些订阅者。除了向OPC UA Server订阅收集数据外,Amazon IoT OPC UA adapter并且整合了Greengrass SDK,使之能成为一个Lambda function,这样一来就能随着Greengrass的部署从云端download到边缘端执行该function。 ...

December 23, 2021 · 2 min · jiezi

关于ml:使用-Amazon-IoT-和-Amazon-SageMaker-进行设备实时预测性维护

物联网(IoT)的一个典型利用场景是可能从传感器数据中获取上下文洞察力,例如剖析设施异样或者进行预测性保护,及时给予用户告诉。在本文中,咱们将专一于通过设施多项指标对设施进行预测性保护,利用机器学习算法,对设施运行状态进行预测,提前发现可能呈现的异样,及时进行保护,避免出现重大的生产事变。  { 计划概述 } 本文应用机器学习办法进行预测性保护,采纳风力发电机模仿数据为示例数据集,利用Amazon SageMaker进行模型训练,并且部署推理端点。边缘侧设施将数据公布到Amazon IoT Core,应用IoT规定触发Lambda函数调用部署在Sagemaker下面的预测性保护端点的API,判断设施是否将出现异常,如出现异常,通过更新Amazon IoT Shadow从而主动敞开设施并发送告诉。 咱们应用的算法称为XGBoost (eXtreme Gradient Boosting),它是一种监督式学习算法, 尝试将一组较简略且较弱模型的一系列估计值联合在一起,从而精确地预测指标变量,能够用来解决回归、分类(二进制和多类)和排名问题。利用XGBoost预测设施是否会损坏,进行提前预测性保护。 本文中的演示应用风力发电机模仿数据,数据字段包含: 风速:wind_speed叶片转速:RPM_blade油温:oil_temperature油位:oil_level温度:temperature湿度:humidity振动频率vibrations_frequency压力:pressure风向:wind_direction是否损坏:breakdown 您能够应用此解决方案自动检测潜在的设施故障,并提供倡议采取的措施。该解决方案易于部署,并蕴含示例数据集,您也能够批改该解决方案并应用其余数据集,从而构建您本人的IoT预测性保护计划。 下图显示了本计划采纳的架构 1.用于预测性保护的模型利用了存储在S3上的设施历史数据在Amazon SageMaker上进行训练。 2.训练好的模型利用SageMaker部署并裸露Endpoints提供预测服务。 3.数据从传感器发送到 IoT Core,通过IoT Rules Engine路由到Lambda函数。Lambda函数通过Sagemaker Endpoints调用预测性保护的机器学习模型。当检测到异样,Lambda函数将发送告诉,并通过IoT Shadow对设施进行相应操作。 在本文中,咱们将疏导您实现以下操作: 1.设置连贯的设施与 IoT Core进行通信2.训练和部署SageMaker模型3.创立云资源以监督和检测可能呈现行为异样的设施4.利用模仿设施进行预测性保护测试并发送告诉 { 试验筹备: IoT 设施模仿 } 本文采纳Cloud9 作为IoT 设施的模仿,从Cloud9下面收回模仿IoT音讯。 在EC2 控制台,启动一台EC2 实例,搜寻 Marketplace上的Cloud9。 ** { 创立 IoT 策略 } 1.关上 IoT 控制台https://console.amazonaws.cn/... 2.抉择 Secure (平安)-> Policies (策略)在 You don’t have a policy yet 页面上,抉择 Create a policy。如果您的账户之前曾经创立过策略,请抉择 Create. 3.创立策略页面 -在Name (名称) 中,输出策略的名称Windturbine_Policy -在Action (操作) 字段中,输出iot:Connect,iot:Receive,iot:Publish,iot:Subscribe。这些是设施在从设施开发工具包运行示例程序时须要执行的权限。无关 IoT 策略的更多信息,请参阅IoT Core 策略。https://samick-blog.s3.cn-nor... ...

December 23, 2021 · 2 min · jiezi

关于ml:巧用机器学习托管服务自动化合约处理从此不在话下

解决合约及协定等文档资料是一项费时费力的工作。在传统意义上,对典型的合约签订工作流进行审计往往波及合约条款的加载、浏览及提取等多个步骤,这往往须要消耗大量人工与劳力。 以往,Amazon Finance and Global Business Services (Amazon FGBS)每月也曾投入150多个人工解决这方面工作。在此期间,泛滥分析师须要将上百份合约一次性手动输出至Excel表格当中。 最近,专门负责剖析合约协定的Amazon FGBS团队开发建设一条自动化工作流,借此高效解决传入文档。其指标非常简单——把业余财会资源从繁琐的日常劳作中解放出来,将更多精力投入到增值性财务剖析当中。 最终,该团队构建了一套解决方案,可能在1分钟之内以高保真度与牢靠的安全性继续解析并存储整个合同中的重要数据。当初,整个自动化流程每月只须要1位分析师工作30小时即可实现平台的保护与运行。解决时长缩短至之前的五分之一,生产效率失去显著进步。 整个利用由两项亚马逊云科技反对的机器学习(ML)托管服务实现,别离为Amazon Textract(可高效实现文档内容提取)以及Amazon Comprehend(可提供上游文本处理,负责提取要害术语)。 本文将介绍整套解决方案的根本架构,深入研究架构设计并简要探讨其中的设计取舍。 合约工作流下图所示,为这套解决方案的根本架构: Amazon FGBS团队在亚马逊云科技机器学习(ML)业余服务(ProServe)团队的帮忙下,构建起一套自动化、长久且可扩大的合约解决平台。传入的合约数据被存储在Amazon Simple Storage Service (Amazon S3)数据湖当中。此解决方案应用Amazon Textract将合约转换为文本模式,而后应用Amazon Comprehend进行文本剖析与术语提取。从合约中提取到的要害条款及其他元数据,将被存储在Amazon DyanmoDB(一套可接管键-值与文档类型数据的数据库)当中。财会用户能够通过由Amazon CloudFront托管的自定义Web用户界面拜访数据内容,并执行要害用户操作,例如谬误查看、数据验证以及自定义术语输出等。此外,他们还能够由齐全托管应用程序流服务Amazon Appstream治理的Tableau服务器生成后果报告。您还能够应用Amazon CloudFormation模板在亚马逊云科技生产环境中启动并托管这套端到端合约解决平台。 构建高效且可扩大的文档输出引擎Amazon FGBS团队负责解决的合约往往相当简单,因而以往只能通过人工审查以解析并提取相干信息。这些合约的格局随时间推移而一直变动,且具体篇幅及复杂性各不相同。除此之外,文档中不仅蕴含自在文本,同时也有着大量波及重要上下文信息的表格与表单。 为了满足这些需要,这套解决方案应用Amazon Textract作为文档输出引擎。Amazon Textract是一项功能强大的服务,以一组通过事后训练的机器学习计算机视觉模型为根底,这些模型通过简单的调优对来自文档(例如图像或PDF)的文本及数字执行光学字符识别(OCR)。Amazon Textract可能辨认出文档中的表格与表单,保留每个单词的上下文信息。该团队心愿从每一份合约中提取出重要的外围条款,但也有一些合约中并不蕴含任何条款集。例如,可能有多份合约独特同一主表,此表左侧列出术语名称,右侧列出该术语的值。咱们的解决方案能够应用Amazon Textract的表单提取性能将其转化为一个键-值对,其链接至合约条款中的名称与值。 下图所示,为Amazon Textract中的批处理架构: 管道应用由分布式音讯队列服务Amazon Simple Queue Service (Amazon SQS)启用的异步Amazon Textract API解决传入的合约。Amazon Lambda函数StartDocumentTextAnalysis 负责启动Amazon Textract解决作业,而此函数会在有新文件被寄存至Amazon S3的合约数据湖时触发。因为合约以分批模式加载,而且异步API可能在不事后将合约转换为图像文件格式的状况下间接解决PDF文件,因而设计人员决定构建异步流程以进步计划的可扩展性。此解决方案应用DocumentAnalysis API(而非DocumentDetection API),用以实现对表格及表单的辨认。 在DocumentAnalysis作业实现之后,解决方案会返回JobID并将其输出至另一个队列当中,此队列负责以JSON对象的模式从Amazon Textract中检测曾经实现的输入。响应后果将以大型嵌套数据结构,同时包容提取到的文本以及文档元数据。GetDocumentTextAnalysis 函数将JSON输入的检索与存储搁置在S3存储桶内,以待后续解决及术语提取。 应用Amazon Comprehend提取规范与非规范条款下图所示,为关键词提取性能的根本架构: 本解决方案将Amazon Textract解决后的合约输入后果寄存在S3存储桶内,而后启动术语提取管道。此管道的次要工作程序为ExtractTermsFromTextractOutput函数,此函数对术语提取所失去的情报进行编码。 此步骤蕴含以下要害操作: 合约被拆分为多个局部,提取其中的根底属性,例如合约题目与合约ID编号。规范合约条款将被标识为键-值对。应用Amazon Textract输入后果中发现的表关系,本解决方案能够从蕴含要害术语的表中找到正确的术语与对应值,同时采取其余操作将术语值转换为正确的数据格式,例如解析日期。能够将一组非标准术语增加至表内,或者嵌入至合约特定局部的自在文本当中。该团队应用Amazon Comprehend自定义分类模型辨认这些须要关注的重要局部。为了为这套模型生成适当的训练数据,Amazon FGBS团队的主题专家对大量历史合约进行了标记,借此辨认出合约中的规范局部(不蕴含任何非凡术语)与非规范局部(蕴含非凡术语及用语)。这套托管在Amazon SageMaker实例之上的标记平台可能显示繁多合约中的各个局部,各局部由之前应用的ExtractTermsFromTextractOutput函数拆分而来,以便用户可能相应标记这些内容。 ...

December 22, 2021 · 1 min · jiezi

关于ml:农业与科技结合快来看Amazon-Rekognition自定义标签的作用吧

计算机视觉是人工智能 (AI) 的一个畛域,借助于价格合理且基于云的训练计算,更高性能的算法,优化的可扩大模型的部署和推理,该畛域越来越受到人们的关注和欢送。然而,只管在单个人工智能 (AI) 和机器学习 (ML) 畛域获得了这些停顿,然而将机器学习管道简化为统一且可察看的工作流程,以便规模较小的业务部门可能更轻松地拜访,这依然是一个很有挑战的指标。这一点在农业科技领域尤为显著,在这个畛域中,计算机视觉在通过自动化进步产能方面具备微小后劲。这种状况也存在于衰弱和平安畛域,在这些畛域中,危险的工作能够由人工智能而不是农民来实现。亚马逊云科技客户采纳的农业利用包含依据产品的等级和缺点对农产品进行分类(IntelloLabs、Clarifruit 和 Hectre),以及尽早无效地被动确定害虫控制措施 (Bayer Crop Science),这些都是计算机视觉大有可为的一些畛域。 只管这些计算机视觉利用具备肯定的吸引力,但通常只有大型农业企业能力应用,因为特定边缘硬件架构的训练–编译–部署–推断序列非常复杂,导致技术与能够从中取得最大利益的从业人员之间呈现某种程度的拆散。许多状况下,这种脱节的本源在于人工智能/机器学习的复杂性,以及其在农业、林业和园艺等高级畛域的端到端利用中不足明确的门路。在大多数状况下,雇用经验丰富的合格数据科学家来摸索机会,而管理人员和运营商无奈间接进行试验和翻新,这样的前景在财务和组织方面都是不切实际的。最近在新西兰举办的一次农业科技演讲中,一位高管与会者强调,不足端到端的亚马逊云科技计算机视觉解决方案是试验的限度因素,为了证实组织买进更弱小的技术评估是正当之举,须要进行试验。 这篇博文旨在揭开亚马逊云科技 AI/ML 服务如何协同工作的神秘面纱,并特地阐明如何生成带标记的图像,针对该图像训练计算机视觉模型,以及如何应用 Amazon Rekognition 自定义标签部署自定义图像识别模型。依照本教程进行操作,您应该可能在大概一小时内启动并运行自定义计算机视觉模型,并依据与您的特定需要相干的数据,做出对于进一步投资 AI/ML 翻新的更理智的判断。 训练图像存储如以下管道中所示,生成自定义计算机视觉模型的第一步是生成用于训练模型的带标签的图像。为此,咱们首先将未标记的训练图像加载到账户中的 Amazon Simple Storage Service (Amazon S3) 存储桶中,每个类别都存储在存储桶下其本人的文件夹中。在此示例中,咱们的预测分类为两种猕猴桃(黄金和蒙蒂),并具备已知类型的图像。收集每个训练类别的图像后,只需通过 Amazon S3 API 或亚马逊云科技治理控制台将图像上传到您的 Amazon S3 存储桶下其各自对应的文件夹中即可。 设置 Amazon Rekognition要开始应用 Amazon Rekognition,请实现以下步骤: 在 Amazon Rekognition 管制台上,抉择 Use Custom Labels (应用自定义标签)。抉择 Get started (开始) 以创立一个新我的项目。我的项目用于存储模型和训练配置。输出项目名称(例如,Kiwifruit-classifier-project)。抉择 Create (创立)。在 Datasets (数据集) 页面上,抉择 Create new dataset (创立新数据集)。输出数据集的名称(例如,kiwifruit classifier)。对于 Image location (图像地位),请抉择 Import images from Amazon S3 bucket (从 Amazon S3 存储桶导入图像)。 ...

December 22, 2021 · 1 min · jiezi

关于ml:业界福音快来使用Amazon-Transcribe服务减轻添加字幕的繁琐工序负担吧

背景介绍去年,从天而降的疫情给咱们的生存和学习,带来了极大的影响。一方面须要缩小人员汇集、升高疫情流传危险,同时又须要兼顾好日常工作推动,很多客户把线下会议转移到线上举办,亚马逊云科技也不例外。尤其是去年底的re:Invent 2020, 前所未有采纳收费线上会议的形式举办,同时,为了中国客户更好的观看体验,咱们也推出了本地化的亚马逊re:Invent国内站点,不便国内的客户观看,置信不少的粉丝曾经通过国内的站点观看了最新的fable和技术画。 因为re:Invent在寰球次要采纳英语进行直播,尤其是来自不同国家的英语口音对国内的开发者去学习和理解re:Invent的技术内容会有较大的挑战。在收到寰球站点传来视频之后,咱们既须要第一工夫在国内站点播出,又心愿可能为中国客户和开发者的体验减少英文字幕,这就须要咱们能极短的工夫内为每天新增的数十个甚至上百个视频减少英文字幕。在以往,为一个1小时的英文视频减少字幕,就须要翻译人员数小时的工作,去听取英文文本,同时还须要借助一些业余的工具,为听录的文本减少时间轴,这个过程老本极高,也无奈满足咱们第一工夫心愿可能公布的需要。 仔细的小伙伴们可能曾经发现了,在国内站点的视频英文字幕后面都有一句话:“字幕由Amazon Transcribe服务提供”,那么这是一个怎么神奇的服务,又是如何疾速帮忙咱们解决视频的英文字幕问题呢? Amazon Transcribe 是一项主动语音辨认 (ASR) 服务,让开发人员可能轻松地为其应用程序增加语音转文本性能,他能够反对多种语言的语音辨认服务,其中包含英文和中国普通话的反对,而且在北京区域(BJS)和宁夏区域(ZHY)也已反对该项服务。 为了让国内的客户和粉丝可能第一工夫看到re:Invent视频,很多时候从拿到数十个视频到公布,只有几个小时,这么短啊的工夫,咱们是如何借助Amazon Transcribe来为每天上线的英文视频减少字幕呢?上面我就介绍一下,这个简略易用,无服务器架构的主动生成字幕的解决方案。如果您也刚好有一个同样的需要,能够间接用起来噢! 体系架构示例的总体架构如下图所示: 上传视频文件到Amazon S3存储桶,能够选定一个特定的文件夹;Amazon S3监测到存储桶中某个文件夹有新增的文件,触发lambda函数;Lambda函数调用Amazon Transcribe服务,生成视频对应的文本(json格局);对字幕文本进行格局转换,生成反对播放器的字幕文件格式(srt);上传字幕文件到存储桶指定的文件夹中。实现过程1. 创立S3存储桶首先在亚马逊云科技治理控制台进入”S3“服务,点击“创立存储桶”, 输出存储桶的名称,点击“创立”按钮创立一个s3存储桶。并且在新创建的桶里,点击“创立文件夹“,创立一个名字叫做“videos”的文件夹用于寄存咱们的视频文件。 留神这里咱们新建一个文件夹寄存须要加载字幕的视频,而不是间接把视频放到桶里,这样能够防止咱们的Lambda函数被本人生成的字幕文件循环调用。 2.创立IAM角色每个Lambda函数都有一个与之关联的IAM角色。此角色定义容许该性能与其进行交互的其余Amazon Web Services服务。在本示例中,您须要创立一个IAM角色,授予您的Lambda函数权限,以便与Transcribe服务以及在上一步中创立的S3服务进行交互。 在Amazon Web Services治理控制台中,单击“服务”,而后抉择“IAM”。在左侧导航栏中抉择“角色”,而后抉择“创立角色”,顺次抉择“AWS产品”,“Lambda”作为角色类型,而后单击“下一步:权限”按钮,在“筛选策略”抉择“AmazonS3FullAccess”,“ AWSLambda_FullAccess”和“ AmazonTranscribeFullAccess”,点击“下一步:审核”,中角色名称中输出“addSubtitleRole”,点击“创立角色”。 3. 创立Lambda函数在Amazon Web Services治理控制台进入“Lambda”服务,点击“创立函数”按钮。在“函数名称”中填写函数名称,在“运行时”的抉择框中抉择“Python 2.7”。这里要特地留神,咱们抉择更改默认执行角色,在“执行角色”中抉择“应用现有角色”,而后抉择刚刚创立的角色名称,点击“创立函数”按钮实现函数的创立。在此示例中,咱们抉择了Python 2.7作为开发环境,并为该Lambda函数赋予了上一步创立的角色。 4. 配置触发条件在Lambda的函数配置页面,点击“增加触发器”按钮增加触发条件。抉择“s3”。 在触发条件配置页面,在“存储桶”下拉列表中抉择刚刚创立的存储桶名称,在“事件类型”下拉列表中抉择“Put”,在“前缀”中输出“videos/”(留神这里要有“/”),在“后缀”中输出“.mp4”,而后点击“增加”按钮,实现触发条件的增加。该触发条件设置监督刚刚创立存储桶的videos目录中扩大名为.mp4的文件,如果新增一个视频,将触发该lambda函数。 5. Lambda内存和超时配置在刚创立的Lambda函数中,咱们须要配置了内存的大小和执行超时。因为Lambda函数会调用Transcribe服务进行文字提取,因而不须要批改内容的大小,默认值为128MB。示例中咱们采纳的视频文件的时长均在半小时内,Transcribe的解决工夫通常不会超过10分钟,在这里咱们设置超时时长“Timeout”为10分钟。 6. 导入Lambda函数关上附件中的python文件,将其内容粘贴在Lambda函数实现的区域,点击右上角的“Deploy”按钮。 Lambda的实现次要包含以下几个步骤: 6.1. 参数获取从event对象中和零碎变量中获取相干参数信息。 region:以后区域,示例中应用的是区域是宁夏区域 bucket_name:存储桶名称,您刚刚创立的存储桶名称 sourceS3Key:视频文件的key值。这里是咱们方才所设置的监测videos目录下的mp4类型的文件,key值为videos/*.mp4 fn:依据sourceS3Key提取文件名。 dir:依据sourceS3Key提取目录名。 6.2. 调用Transcribe工作为每个工作job_name创立惟一的标识调用starttranscriptionjob,上面的代码中介绍了每个参数以及含意因为调用的job是异步工作,咱们通过轮训的办法检测job的返回后果生成转换工作的工夫戳now=int(time.time())    job_name = "conv-"+str(now)右滑查看残缺代码 启动转换工作 MediaFileUri:媒体门路,示例采纳s3的门路 MediaFormat:媒体格式,目前反对mp3,mp4,wav,flac LanguageCode:媒体的语言编码,咱们的视频是英文的,设置为en-US   `transcribe = boto3.client('transcribe')    transcribe.start_transcription_job(        TranscriptionJobName=job_name,        Media={'MediaFileUri': job_uri},        MediaFormat='mp4',        LanguageCode='en-US'    ) 右滑查看残缺代码 #转换须要肯定的工夫,这里进行轮训检测处理结果。您也能够通过控制台查看工作状态。  ```while True:        status = transcribe.get_transcription_job(TranscriptionJobName=job_name)        if status['TranscriptionJob']['TranscriptionJobStatus'] in ['COMPLETED', 'FAILED']:            break        print("Transcribe is processing...")        time.sleep(5)右滑查看残缺代码 ...

December 22, 2021 · 1 min · jiezi

关于ml:模型可解释性

对于模型可解释性的材料较少,这里对立做个整顿。如果想系统性学习,举荐浏览Interpretable machine learning 这本书。 What可解释性是人能够了解零碎决策的一个度量(Interpretability is the degree to which a human can understand the cause of a decision.) Why随着大量科学家在机器学习畛域的继续投入,现在各种模型形形色色,且毋庸置疑这些模型在生产环境都产生的肯定的成果。 但计算机系统做出的这些预测或决策的起因并无奈被人类感知,因此人类无奈直观的感知这些预测的成果或起因。 模型都是对事实世界的模仿,然而都不是 100% 的还原,因而没有一个繁多 metric(如 auc) 能形容模型在生成环境中的实在体现。 此外机器学习零碎并不知道本人在预测什么内容。 这个问题在某些畛域可能十分重要(例如临床医学,反欺诈)。 How(实践)应用有自解释性的模型(WB)基于模型不可知论的黑盒探测(BB)深度学习/神经网络模型的可解释性自解释性的模型线性回归模型逻辑回归决策树白盒解释,须要晓得模型具体实现,以及训练数据,甚至可能须要改模型代码。 黑盒探测 Partial Dependence Plot (PDP)Global SurrogateLocal Surrogate Model-Agnostic Method(LIME)Anchors(If-Then-That)Shapley ValuesSHAPPDPA partial dependence plot can show whether the relationship between the target and a feature is linear, monotonic or more complex.Advantages: intuitiveDisadvantages:The assumption of independence is the biggest issue with PD plots. ...

August 11, 2021 · 2 min · jiezi

关于ml:机器学习的持续交付CD4ML

机器学习的继续交付-CD4ML端到端自动化构建部署机器学习利用原文:Continuous Delivery for Machine Learning - CD4ML关键字:继续部署、继续交付、机器学习、CD4ML作者:Danilo Sato, Arif Wider, Christoph Windheuser译者:周冠龙 Guanlong Zhou 写在后面ThoughtWorks在最新一期的技术雷达中,将CD4ML举荐为“试验”评级,我所在的team恰好在给客户做一套与ML相干的零碎,用到很多CD4ML中的概念和实际。因为文章较新,网上还没有适合的译文,故本人翻译以便与大家独特学习。第一次翻译此类文章,如有不当,敬请斧正,不胜感激。现在,机器学习(ML)在各行各业中变得越来越遍及,与传统软件(例如Web服务或挪动利用)相比,ML的开发、部署和继续优化会更加简单。复杂性源于三个维度的可变性:代码自身、机器学习的模型和数据。它们的变动通常很简单又难以预测,而且不容易测试,难以解释并且难以改良。机器学习的继续交付(CD4ML)将继续交付的原理和实际引入到机器学习利用(程序),给咱们提供一些能够遵循的基本准则。 简介和定义2015年,Sculley等人在Google发表驰名论文“Hidden Technical Debt in Machine Learning Systems“,其中强调指出,在事实世界里的机器学习零碎中,真正的机器学习代码只占整个工程的一小部分。零碎中存在大量围绕ML相干的基础设施架构和流程用于反对ML零碎演进。在论文中,他们还探讨了许多此类零碎中积攒的技术债,比方和数据依赖性、模型复杂性、可再现性、测试、监控以及应对外部世界的变动相干的问题。许多传统软件系统中也存在相似的问题,所以继续交付引入一个基于自动化流程、质量保证和标准,牢靠并可复用地将软件部署到生产环境的办法。杰兹和戴夫曾在他们的开创性著述《继续交付》中指出:“继续交付是一种可能以可继续的形式平安疾速地将所有的变更--包含性能增加、配置更改、谬误修复和试验 -- 投入生产或交付用户的能力。”-杰兹·汉布尔(Jez Humble)和戴夫·法利(Dave Farley)除了代码之外,ML模型和训练数据的变动是另一种类型的变更,咱们须要对它们进行治理并将其纳入软件交付过程中(图1)。 图1: 在机器学习利用中3个维度的变更 - 数据、模型和代码 - 和一些变更的起因 思考到这些方面,咱们能够扩大“继续交付”的定义,以纳入事实世界机器学习零碎中存在的新元素和挑战,咱们将这种办法成为“机器学习的继续交付(CD4ML)”。CD4ML是一种软件工程方法论,应用此办法,跨性能团队可基于代码、数据和模型小步且平安地增量训练机器学习利用,并且这个机器学习利用能够在任何的工夫点更加牢靠地被疾速重现和部署。 上面对定义中的关键字进行逐个解释软件工程办法:它使团队可能无效地产出高质量的软件。跨性能团队:一群来自数据工程、数据迷信、机器学习工程、开发、运维和其余常识畛域,具备不同技能和工作形式的专家合作在一起,充分发挥每个团队成员的技能和劣势。基于代码、数据和机器学习模型开发的利用(软件): ML软件生产过程的所有产物都须要通过不同的工具和工作流程,进行相应的版本治理。小而平安的增量(部署):一个软件应用程序的公布被分为了多个小步增量迭代公布,这将使每次公布所产生的变动具备可见性和可控制性,从而减少了部署过程的安全性。可重现和牢靠的软件公布:尽管模型的输入后果具备不确定性并且难以重现,但将ML软件公布到生产中的过程是牢靠且可重现的,在此过程中,该当尽可能进步自动化水平。不受限于工夫:能够随时将ML利用公布到生产环境至关重要。即便组织不想始终交付软件,它也应始终处于可公布状态。何时公布应该是由业务决策决定,而不是技术决策。适应周期短:短周期意味着开发周期只有数天,甚至几小时,而不是几周,也不是几个月甚至几年。牢靠的自动化流程是实现这一指标的要害。通过应用生产环境中取得的后果来调整ML模型能够造成一个疾速的反馈循环。 在本文中,咱们将实现CD4ML,并展现一系列机器学习应用程序里的重要技术组件,同时解释如何将不同的工具联合应用以实现残缺的端到端过程。在适当的时候,咱们将介绍一些咱们选用的其余工具。随着在咱们行业中的实际,咱们还将探讨更多的开发和钻研畛域。 一个预测销售数据的机器学习利用自2016年以来,咱们就开始思考如何将继续交付使用到机器学习零碎中,咱们公布了一个用于展现ML的案例钻研,这是咱们与AutoScout单干构建的一个我的项目,用于预测在其平台上发售的汽车价格。然而,咱们没有被容许应用实在的代码作为示例,所以咱们决定应用面向公众公开的问题和数据集构建一个ML示例利用,以论述CD4ML的实现过程。这个机器学习应用程序解决了许多零售商面临的一个常见预测问题:尝试依据历史数据预测给定产品在将来的销售量。咱们为厄瓜多尔大型杂货零售商Corporación Favorita公布在Kaggle上的问题构建了简化的解决方案。出于咱们的目标,咱们组合并简化了它们的数据集,因为咱们的指标不是找到最佳预测后果(您的数据科学家能做得更好),而是演示如何实现CD4ML。基于监督学习算法和风行的Scikit-learn Python库,咱们应用具备标签的输出数据训练失去预测模型。将这个模型集成到简略的Web应用程序中,而后将其部署到云生产环境中。图2简略展现了此流程。 图2:训练ML模型,将其与Web应用程序集成并部署到生产中的初始流程部署实现后,用户能够在Web应用程序(图3)中抉择产品种类和预测日期,而后预测模型将输入对该日选定产品销量的预测后果。 图3:Web UI演示模型 独特的挑战后面的探讨给咱们开了个好头,然而在发展施行端到端部署的实际过程时,咱们遇到了两个挑战。第一个挑战源于组织构造:不同的团队可能参加流程中不同的局部,并且存在交接(通常是“甩锅”)的问题,而对如何逾越这些边界却没有明确的冀望( 图4 )。数据工程师可能正在构建使数据可被拜访的流水线,而数据科学家正在为如何构建和晋升ML模型性能发愁。而后,机器学习工程师或开发人员将不得不为如何集成该模型并公布到生产环境而担心。 图4:大型组织中的常见职能孤岛可能会制作屏障扼杀了将机器学习应用程序部署到生产环境-端到端流程自动化的能力 这将导致我的项目的提早交付以及团队之间产生摩擦。一个常见的问题是模型只能停留在实验室,而永远不会来到概念验证阶段。还有一种状况,如果他们以手工形式将其投入生产环境,ML模型在之后将会过期且很难被更新。第二个挑战是技术层面的:如何确保此流程是可反复和可被审核的。因为这些团队应用的工具不尽相同并遵循不同的工作流程,端到端的自动化很难实现。除代码外,还须要治理许多其余组件,对其进行版本控制并不容易。在这些组件中,有些体积很大,须要用到更加简单的工具能力对他们进行无效的存取。只管解决组织挑战不在本文探讨范畴之内,然而咱们能够借鉴Agile和DevOps的教训,建设以后果为导向的且囊括不同学科的领域专家的跨职能团队,从而结构一个端到端的ML零碎。如果您的组织无奈做到这一点,则至多激励突破团队间的阻碍,并在整个过程中尽早进行合作。本文的其余部分将探讨咱们针对技术挑战得出的解决方案。咱们将深刻探索每个技术组件,并逐渐改良和扩大端到端流程以使其更加欠缺。 CD4ML的技术组件当咱们思考如何应用机器学习解决预测问题时,第一步是理解数据集。在这种状况下,数据存储在一系列CSV文件里,其中蕴含以下信息: 产品,例如它们的分类以及是否易腐商店,例如它们的地位以及它们如何汇集在一起非凡事件,例如公共假期,季节性事件或2016年厄瓜多尔产生的7.8级地震销售交易记录,包含给定产品的销售数量、日期和地位在这个阶段,数据分析师和数据科学家通常将执行某种探索性数据分析(EDA),以理解数据的“形态”,并确定粗粒度模式和异样值。例如,咱们发现某些产品的销售单位数为负,咱们将其解释为退货。而咱们仅打算摸索销售数据,因而退货数据将从训练数据集中删除。在许多组织中,训练ML模型所需的数据可能不会齐全依照数据科学家所需的形式来结构。因而,它着重强调了咱们的第一个技术组件:可被发现和可被拜访的数据。 可被发现和可被拜访的数据最常见的数据源是你的外围交易系统。然而,从组织内部引入其余数据源的价值也不容疏忽。咱们找到了一些用于数据收集和使数据可用的常见模式,例如Data Lake架构、更传统的数据仓库体系、实时数据流汇合,和最近咱们正在尝试构建的去中心化的Data Mesh架构。无论你应用哪种体系和架构,都须要保障你的数据是可被发现和可被拜访的。对数据科学家而言,寻找所需数据破费的精力越多,他们建设有用的模型所破费的工夫就越长。除此以外,他们会心愿在现有输出数据之上产生新的特色数据,这可能有助于改善其模型的性能。在咱们的示例里,进行初始探索性数据分析(EDA)之后,咱们决定将多个文件合并成为单个CSV文件,并清理无关数据点和可能在模型中引入无害噪声的数据点(例如负销售)。而后,咱们将输入的文件放云存储系统中。应用此文件作为输出训练数据的快照,基于文件夹构造和文件命名约定,咱们可能设计出一种简略的办法来对数据集进行版本控制。数据版本控制是一个绝对较大的话题,源于它能够在两个不同维度上进行扭转:数据结构的变动和随时间推移理论采样数据内容的变动·。咱们的数据科学家Emily Gorcenski 在其博客文章中更具体地介绍了此主题。不过在本文的前面,咱们将探讨随着工夫的推移对数据集进行版本控制的其余办法。值得注意的是,在事实世界中,你可能会搭建更简单的data pipelines(数据流水线),便于数据科学家能够轻松的从多个数据源获取数据并应用。 可反复训练的模型当数据筹备好之后,上面咱们将开始迭代数据迷信的工作流程以构建模型。咱们通常将数据分为训练集和验证集,尝试组合应用不同的算法以及调整其参数和超参数。这样就产生了一个能够被验证集评估的模型,以评估模型预测的品质。一步一步迭代训练模型的过程,咱们称之为机器学习(ML)流水线。在图5展现的是针对销售预测问题构建的ML流水线,其中蕴含了不同的代码、数据和模型组件。输出数据、两头训练后果和验证数据集以及输入模型文件可能很大,咱们不心愿将他们存储在代码仓库中。而且,流水线的各个阶段会常常须要被批改,这使得其很难在数据科学家的本地环境之外被复制。 图5:针对咱们的销售预测问题的机器学习流水线,以及应用DVC使其自动化的3个步骤 为了使模拟训练过程可能代码化,咱们应用了一个叫做DVC(Data Science Version Control)的开源工具。它提供了与Git相似的语义,同时它还解决了一些ML特有的问题: 它具备多个后端插件,可在源代码管制存储库之外的内部存储中获取并存储大文件;它能够跟踪存储文件的版本,从而容许咱们在数据更改时从新训练咱们的模型;它能够保留用于执行ML流水线的依赖关系图和命令,从而使该过程能够在其余环境中重现;它能够与Git分支集成,以容许多个试验共存;例如,咱们能够应用三个dvc run命令来配置图5中的初始ML流水线( -d指定依赖项, -o指定输入, -f是记录该步骤的文件名,而-M是后果度量):dvc run -f input.dvc \ ➊ -d src/download_data.py -o data/raw/store47-2016.csv python src/download_data.pydvc run -f split.dvc \ ➋ -d data/raw/store47-2016.csv -d src/splitter.py \ -o data/splitter/train.csv -o data/splitter/validation.csv python src/splitter.pydvc run ➌ -d data/splitter/train.csv -d data/splitter/validation.csv -d src/decision_tree.py \ -o data/decision_tree/model.pkl -M results/metrics.json python src/decision_tree.py每次执行完指令会创立一个相应的文件,该文件能够提交到版本控制器中,并容许其他人通过DVC repo来重现整个ML流水线。一旦找到适合的模型,咱们会将其视为须要版本化的工件(artifact),并将它部署至生产环境。在此,咱们应用dvc push和dvc pull命令来公布和获取它。有一些其余开源工具能够解决这些问题:Pachyderm应用容器技术执行流水线中的各个步骤,并通过追踪数据提交,解决了数据版本控制和记录数据出处问题,优化了流水线的执行。MLflow我的项目定义了一种新的文件格式,用于配置环境和流水线各个步骤,并提供了API和CLI工具,能够在本地或近程运行我的项目。咱们之所以抉择DVC,是因为它是一个非常简单的CLI工具,能够更好地解决这上述问题。 ...

July 26, 2021 · 1 min · jiezi

关于ml:归一化处理连续特征和离散特征并存情况

他人答的曾经很漂亮了,我就简略复述一下。1、从新布局间断特色边界:就是将间断值缩放到[-1,1],留神既能够缩也能够放大。2、标准化间断特色:这个就套公式就行,计算平均值和方差,然而如果方差小还是不大行。3、是针对离散变量而言,更像是skearn外面的哑变量解决,所有离散变量不管多大全副改为01。 另外:我本人补充,如果是机器特色学习上述就行。深度学习能够不改哑变量,当初万物皆可embedding,用嵌入层将离散变量压缩变得浓密,将连续变量rescale bound 就行。

December 17, 2020 · 1 min · jiezi

如何在Web应用里消费SAP-Leonardo的机器学习API

去年5月的时候,Jerry曾经写了一篇文章:使用Java程序消费SAP Leonardo的机器学习API,而最近另外做的一个项目,需要在Web应用里做同样的事情。 因为有了前一篇文章的铺垫,避免了很多重复的工作量。本文还是选择使用SAP Leonardo里的一个Product Image Classification API,即给定一张产品的图片,该API能识别出此产品的类别。 再回顾下这个API的功能:该API的模型是由SAP基于大约5万张Icecat图片训练而成,能区分29种不同的类别,这些类别具体罗列于官方文档上,比如电脑显示器,数码相机,外部存储设备,键盘,液晶电视,手机充电器,笔记本和其他外设等等。如果我们消费这个API时指定的图片代表的产品不属于这29种类别之一,API的表现如何?先卖个关子,文末解答。 关于如何在api.sap.com里找到这个API并且在API console里测试,请参考Jerry之前的文章:使用Java程序消费SAP Leonardo的机器学习API。 这里假定我们已经找到了该API,点击进入明细页面,将API Key复制下来,后续的UI5应用需要使用到。 然后进入SAP云平台的Neo环境。Jerry这个练习,使用免费的SAP Cloud Platform Neo测试环境即可。 在Service列表里找到WebIDE——我们将使用WebIDE进行UI5应用的开发。 Jerry已经开发好了一个UI5应用上传到我的Github上了:https://github.com/i042416/Ma... 大家可以直接在WebIDE里clone这个仓库,或者把仓库的内容以zip包的形式下载到本地,再使用WebIDE的本地Import功能导入。 我们要告诉UI5应用这个API的url,因此在Neo环境里创建一个Destination(作用和ABAP Netweaver事务码SM59里创建的Destination相同): 属性如上图所示,因为是Neo测试环境,所以url为对应的sandbox环境:https://sandbox.api.sap.com/ml 记下这个Destination名称sapui5ml-api, 因为稍后的UI5代码里需要使用。 记得维护额外的属性WebIDEnabled为true,这样该Destination才能在UI5应用里被使用。点击Check Connection确保看到绿灯。 打开WebIDE里UI5工程里的settings.json文件,将您之前从API console里拷贝的API Key粘贴到此处: 在项目根目录下的neo-app.json文件里,把类型为destination的target对象的名称维护成之前在SAP Cloud Platform Cockpit里创建的destination相同的名称。 运行这个UI5应用,能看到如下界面: 做一些简单的测试: SAP Leonardo的机器学习API,识别出这张图片有74.7%的可能性是一台笔记本电脑,13.8%的可能性是键盘,11.3%的可能性是Tablets。 点击按钮View JSON,能看到调用SAP Leonardo API返回的技术明细。 鼠标的图片也成功识别出来了: 本文开始曾经提到这个API能识别出29种不同的产品类别,现在换一种产品,如下图: 这是Jerry小时候就很痴迷的《终结者》系列的T800,我在2017年回复SAP社区上一篇博客时也引用到了这款经典的模型,和阿诺德 - 施瓦辛格那句激励无数中老年程序员的著名台词:I am old but I am NOT OBSOLETE ...

July 14, 2019 · 1 min · jiezi

部署在SAP-Cloud-Platform-CloudFoundry环境的应用如何消费SAP-Leonardo机器学习API

Jerry的前一篇文章 如何在Web应用里消费SAP Leonardo的机器学习API 里介绍的例子是Neo测试环境的Web应用消费sandbox版本的机器学习API,url如下: https://sandbox.api.sap.com/ml 本文介绍一个部署在SAP Cloud Platform CloudFoundry环境下的应用,如何消费SAP Leonardo上的机器学习API。 登录SAP Cloud Platform Cockpit,进入CloudFoundry环境的Service Marketplace,找到SAP Leonardo机器学习的服务,单击该服务的超链接进入明细页面: 创建一个新的服务实例: Service Plan就选默认的standard: 给这个服务实例取个名字: 单击这个创建好的服务实例,然后创建一个新的Service Key: 给Service Key也取个名字。 我们通过创建Service instance进而创建Service Key的目的,是为了得到下图的clientid和clientsecret。 而我们拿到clientid和clientsecret,是为了用它们换取OAuth2.0协议里的access token. 关于更多clientid和clientsecret基于OAuth2.0换取access token 的细节,请参考Jerry的文章:OAuth 2.0协议在SAP产品中的应用。 除了clientid和clientsecret外,我们还能在service key里得到当前这个SAP Cloud Platform CloudFoundry环境上所有可用的机器学习API的url,它们全部维护在节点serviceurls里: 注意观察,此时的IMAGE_CLASSIFICATION这个API 的url,路径已经从上一篇文章的https://sandbox.api.sap.com/ml,变成了包含CloudFoundry环境信息的: https://mlftrial-image-classi... 接下来通过clientid和client secret换取access token,使用下面这个链接里的应用获得access Token: https://generate_ml_token.cfa... 把这个Bearer开头的access Token记录下来。 之前创建service key时,我们已经从创建结果里获得了基于产品图片识别类别的API url: https://mlftrial-image-classi... 浏览器里访问这个url,得到一个采用Swagger(一个采用RESTFUL接口,基于YAML和JSON语言的API文档在线自动生成工具)实现的API控制台: 点击try out,从本地选择一张图片,我还是选择的这张图片: ...

July 14, 2019 · 1 min · jiezi

当SAP云平台account的service-Marke-place里找不到Machine-Learning服务该怎么办

问题症状:我在CloudFoundry环境的Service Market place里根本找不到Leonardo ML foundation这组服务。 解决方案: 进入global Account->Entitlements->Subaccount Assignments, 点击Configure Entitlements: 再点击Add Service Plans按钮: 从Service Catalog的All Categories列表里,选中SAP Leonardo Machine Learning foundation: 之后这个Service就出现在Service Assignments里了: 现在,该account的Service Marketplace里终于能看见SAP Leonardo Machine Learning服务了。 要获取更多Jerry的原创文章,请关注公众号"汪子熙":

July 14, 2019 · 1 min · jiezi

减肥这么难靠人工智能行不行

肥胖已经成为全球性问题,而减肥从来都是口号易喊实践难。很多人工智能公司利用大数据、机器学习、计算机视觉等技术,帮助广大「胖友」管住嘴,迈开腿,同时为其进行个性化瘦身建议。「复联 4」中,雷神索尔挺着大肚腩出现,昔日的男神竟然变成了「死肥宅」。于是很多影迷调侃:「2012 年我发誓要拥有雷神一样的身材,2019 年我终于做到了!」 然而,告诉你一个恐怖故事:雷神的肚腩是假的,可你的啤酒肚却是真材实料。 眼看着夏天来了,很多人又一次把减肥提上了日程。然而,节食,瑜伽,减肥操,轻断食……尝试了十八般武艺,镜子里的你依然自带「游泳圈」。还记得那首「燃烧我的卡路里」,唱出了多少人的心声。 看看身边有多少人,把头像换成了「不瘦十斤,不换头像」,后来发现自己当初太天真,还是默默地换掉;又有多少人在朋友圈晒了几天开水煮白菜和健身照,最后又回归了烧烤蛋糕甜甜圈…… 肥胖是个全球性问题根据世界卫生组织的在 2018 年的报告,肥胖问题已经越来越严重。 自 1975 年以来,世界肥胖人数已增长近三倍。2016 年,18 岁及以上的成年人中逾 19 亿人超重,其中超过 6.5 亿人肥胖。换成比例来说,就是 18 以上的成年人中有 39% 超重,且 13% 为肥胖。 国内身体健康状况也不容乐观,根据中国疾病预防控制中心数据,全国肥胖率为 11.9%,超重率为 30.1%;天津超重率最高,达 40.9%;北京肥胖率最高,为 25.9%。 这些数字再次提醒我们,减轻体重,拥有健康体型刻不容缓。但是,说起来容易做起来难,年复一年,总是越减越肥。 其实,无论减肥的花样有多少,终极要诀总是这六个字:管住嘴,迈开腿。然而,就是这简简单单的六个字,却是很多人努力多年都无法到达的彼岸。 那么如今无处不在的人工智能,有办法解决这一问题吗? 管不住嘴?AI 帮你所谓减肥塑形讲究「七分靠吃,三分靠练」,所以,管住嘴是减肥第一要务。 雀巢、 Poundaweek 等公司都利用大数据与计算机视觉等技术,为广大胖友分析饮食热量、营养,并推荐合理饮食计划,从而帮助他们「管住嘴」。 控制饮食是减肥成功的关键一步。在这个方面,基于数据分析出来的饮食条件,自然要贴合个人的情况。 目前已经有很多饮食方面的 AI 应用。比如用户拍摄食物的照片上传至平台,通过机器学习模型,分析出食物中的卡路里和营养,再结合用户的生活习惯,年龄性别等因素,给出更合理的饮食建议。避免过多热量的摄入。 雀巢还推出了能够建议人们合理饮食的 AI 音箱 迈不开腿? AI 帮你AI 不仅帮大家管住嘴,还要促进大家迈开腿。 现在能够监控大家的硬件和软件都不在少数,其中就有一些产品,利用大数据和人工智能的方法,提醒用户有一个健康的锻炼习惯。 比如利用可穿戴设备,监控用户的活动数据,通过对数据的分析,结合用户的个人习惯,能够定制出实行的智能方案,打造出个性化的健身教练。 Google Coach 会为用户推荐健身方式,跟踪锻炼进度等 这一领域比较著名的就是 Google Coach ,它还能为用户提供一些日常健康提示,例如饮用多少水,何时服用药物或应采取多少步骤。 想吃零食?AI 帮你 Say No国外一些计算机专家正在研究用人工智能技术来塑造一个聊天机器人,旨在帮助超重人群从心底拒绝高热量,接受健康饮食。 现在 App 商店里,计算卡路里的软件很多,但是单纯地计算热量很难让人们放弃眼前的美食。所以,这类聊天机器人的设计者希望,从心理上了解人们为什么为什么想要吃得不健康。 ...

May 14, 2019 · 1 min · jiezi

母亲节倒计时选礼物救急指南

选礼物是千古大难题之一,母亲节来临之际,借助机器学习、大数据分析、图像增强等 AI 技术,可以帮你为母亲送上一份走心的礼物。距离母亲节只剩两天了,你为母亲大人选好礼物了吗? 要让礼物达到美观、实用兼具且能讨母上大人喜欢,这实在是一个令人纠结的难题,对于平时置身代码海洋中的程序员来说更是令人头大。 置身代码海洋无法自拔的程序员 根据不靠谱情报,在母亲节来临之际,程序员表现各有不同: 第一种:什么?母亲节快到了? 第二种:奥,母亲节快到了,到时候给我妈打个电话吧,问问她想要啥礼物。 第三种:打开某电商 App,搜索「母亲节礼物」,从推荐列表的前三个里面选 1 个(一般是按摩工具之类)。 第四种:打开某电商 App,搜索「清洁工具套装」,然后买一套扫帚拖把鸡毛掸子寄给母上大人…… 「妈妈再打我一次」礼物套装 还有连电商 App 都没有的程序员,可能会直接选择最简单直接的方法:发红包。 所以,礼物到底该怎么选? 听说,AI 已经比你会选了。 选项一:用算法推荐中意的礼物有一款叫做「礼记」的小程序,利用大数据与机器学习,通过 5-6 个对送礼对象问题的回答,就能推荐出量身定制的礼物清单。 「礼记」的选礼问卷 经过亲测,推荐跟被赠送者喜好匹配度还不错,如果没有最中意的,也能通过推荐清单寻找灵感。 此外,欧莱雅也曾有过类似的尝试,在 2017 年推出了一款聊天机器人 Beauty Gifter,根据送礼者及收礼者的问答,推荐最合适的化妆品礼物。 这款机器人是欧莱雅与 Automat 的一个合作项目,Beauty Gifter 选礼物的方式,还是通过精心设计的问卷,寻找出最贴合的礼品。 被赠予者会收到卡片询问他们的护肤、美妆偏好等。如果担心破坏了惊喜,只要送礼物的一方对这些信息足够了解,也可以自己来回答卡片问卷。 选项二:送妈妈靓丽穿搭母亲节,也可以考虑送给妈妈一个穿搭助理。 在 2017 年 Facebook 年度开发者大会 F8 上,就有潮流和美妆服务机器人 Epytom Stylist 和 Sephora 现身。此后,亚马逊也推出了 Echo Look,这款机器人将图形识别功能和 Alexa 结合在一起,帮助人们挑选服装。 Echo Look 兼具图形识别与语音识别功能 Echo Look 有一个深度感应摄像头,和用于闪光灯的 LED 照明,以及计算机视觉等技术。它的工作原理是,穿好衣服后,通过声控,帮自己拍摄全身长的景深照片或者短视频,然后建立起用户的个人服装风格喜好数据集。 之后,它会利用机器学习算法,结合时尚专家的建议,评估用户的穿搭是否合适。 甚至对用户的穿搭颜色、风格与潮流提供指导建议。 ...

May 10, 2019 · 1 min · jiezi

【技术性】AI/ML知识

Pandas引入:import pandas as pd常也需import numpy as npcreate df:df = pd.DataFrame(…)selection:选列:df[‘A’]选行:df[0:3]多维:df.loc[:, [‘A’, ‘B’]]或df.iloc[:, 0:2]选值:df.at[2,‘A’]或者df.iloc[2,0]处理空值:df.dropna df.fillnaapply funcs:df.apply(lambda)SQL-like join: pd.merge(A, B, on="…")文件:df.to_csv("…") pd.read_csv("…")列表项目

February 18, 2019 · 1 min · jiezi

深度学习在CTR预估中的应用

欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦本文由鹅厂优文发表于云+社区专栏一、前言二、深度学习模型1. Factorization-machine(FM)FM = LR+ embedding2. Deep Neural Network(DNN)3. Factorisation-machine supported Neural Networks (FNN)4. Product-based Neural Network(PNN)5. Wide & Deep Learning(Wide&Deep)6. Factorization-Machine based Neural Network (deepFM)7. Neural Factorization Machines (NFM)8. Attention Neural Factorization Machines (AFM)9. Deep&CrossNetwork(DCN)10. Deep Interest Network (DIN)三、写在最后四、参考文献作者:辛俊波 | 腾讯 应用研究员一、前言深度学习凭借其强大的表达能力和灵活的网络结构在NLP、图像、语音等众多领域取得了重大突破。在广告领域,预测用户点击率(Click Through Rate,简称CTR)领域近年也有大量关于深度学习方面的研究,仅这两年就出现了不少于二十多种方法。本文就近几年CTR预估领域中学术界的经典方法进行探究, 并比较各自之间模型设计的初衷和各自优缺点。通过十种不同CTR深度模型的比较,不同的模型本质上都可以由基础的底层组件组成。本文中出现的变量定义: • n: 特征个数,所有特征one-hot后 连接起来的整体规模大小 • f: 特征field个数,表示特征类别有多少个 • k: embedding层维度,在FM中是隐向量维度 • H1: 深度网络中第一个隐层节点个数,第二层H2,以此类推。二、深度学习模型1. Factorization-machine(FM) FM模型可以看成是线性部分的LR,还有非线性的特征组合xixj交叉而成,表示如下:其中vi是第i维特征的隐向量,长度k<<n,包含k个描述特征的因子。参数个数为kn。所有包含xi的非零组合特征都可以用来训练vi,缓解数据稀疏问题。图1是从神经网络的角度表示FM, 可以看成底层为特征维度为n的离散输入,经过embedding层后,对embedding层线性部分(LR)和非线性部分(特征交叉部分)累加后输出。图1 FM模型结构FM = LR+ embedding待学习的参数如下:(1)LR部分: 1+n(2)embedding 部分:nkFM下文中将作为各种网络模型的基础组件2. Deep Neural Network(DNN)图2是经典的DNN网络, 结构上看就是传统的多层感知机(MultiLayer Perceptron,简称MLP)。在MLP网络中,输入是原始的特征n维特征空间,假设第一层隐层节点数为H1,第二层为H2,以此类推。在第一层网络中,需要学习的参数就是nH1。对于大多数CTR模型来说,特征体系都极其庞大而且稀疏,典型的特征数量级n从百万级到千万级到亿级甚至更高,这么大规模的n作为网络输入在ctr预估的工业界场景中是不可接受的。下面要讲到的大多数深度学习CTR网络结构,都围绕着如何将DNN的高维离散输入,通过embedding层变成低维稠密的输入工作来展开。图2 DNN模型结构DNN待学习参数: nH1+H1H2+H2H3+H3o(o为输出层大小,在ctr预估中为1)DNN(后文称MLP)也将作为下文各种模型的基础组件之一3. Factorisation-machine supported Neural Networks (FNN)在上述的DNN中,网络的原始输入是全部原始特征,维度为n,通常都是百万级以上。然而特征维度n虽然空间巨大,但如果归属到每个特征所属的field(维度为f),通常f维度会小很多。如果有办法将每个特征用其所属的field来表示,原始输入将大大减少不少。Factorisation-machine supported Neural Networks,简称FNN就是基于这种思想提出来的。图3 FNN模型结构FNN假设每个field有且只有一个值为1,其他均为0。x为原始输入的特征,它是大规模离散稀疏的。它可以分成n个field,每一个field中,只有一个值为1,其余都为0(即one hot)。field i的输入可以表示成 x[start_i: end_i], W0i为field i的embedding矩阵。Zi 为embedding后的向量,是一个k维的向量,它由一次项wi ,二次项vi=(vi1,vi2,…vik) 组成,其中k是FM中二次项的向量的维度。而后面的l1,l2则为神经网络的全连接层的表示。除此之外,FNN还具有以下几个特点:Ø FM参数需要预训练 FM部分的embedding需要预先进行训练,所以FNN不是一个end-to-end模型。在其他论文中,有试过不用FM初始化embedding, 而用随机初始化的方法,要么收敛速度很慢,要么无法收敛。有兴趣的同学可以实验验证下。Ø 无法拟合低阶特征 FM得到的embedding向量直接concat连接之后作为MLP的输入去学习高阶特征表达,最终的DNN输出作为ctr预估值。因此,FNN对低阶信息的表达比较有限。Ø 每个field只有一个非零值的强假设 FNN假设每个fileld只有一个值为非零值,如果是稠密原始输入,则FNN失去意义。对于一个fileld有几个非零值的情况,例如用户标签可能有多个,一般可以做average/sum/max等处理。FNN = LR + DEEP = LR + embedding + MLP(1)LR部分: 1+n(2)embedding部分: nk(3)MLP部分: fkH1+H1H2+H2 可以看到,对比DNN,在进入MLP部分之前,网络的输入由n降到了fk(f为field个数,几十到几百之间,k为隐向量维度,一般0100)4. Product-based Neural Network(PNN)FNN的embedding层直接concat连接后输出到MLP中去学习高阶特征。PNN,全称为Product-based Neural Network,认为在embedding输入到MLP之后学习的交叉特征表达并不充分,提出了一种product layer的思想,既基于乘法的运算来体现体征交叉的DNN网络结构,如图4所示。图3 PNN模型结构 对比FNN网络,PNN的区别在于中间多了一层Product Layer层。Product Layer层由两部分组成,左边z为embedding层的线性部分,右边为embedding层的特征交叉部分。除了Product layer不同,PNN和FNN的MLP结构是一样的。这种product思想来源于,在ctr预估中,认为特征之间的关系更多是一种and“且”的关系,而非add"加”的关系。例如,性别为男且喜欢游戏的人群,比起性别男和喜欢游戏的人群,前者的组合比后者更能体现特征交叉的意义。根据product的方式不同,可以分为inner product(IPNN)和outer product(OPNN),如图5所示。图5 PNN(左图:IPNN;右图:OPNN)Product layer的输出为PNN = FM + product + MLPØ Inner Product-based Neural Network IPNN的叉项使用了内积g(fi, fj) = <fi, fj>。f个filed,两两求内积共计交叉项p部分的参数共f(f-1)/2(f为特征的field个数,原始论文里用的N)个,线性部分z部分参数共fk个。需要学习的参数为: (1)FM部分: 1+ n + nk (2)product部分: (fk + f(f-1)/2)H1 (3)MLP部分:H1H2+H21Ø Outer Product-based Neural Network OPNN用矩阵乘法来表示特征的交叉, g(fi, fj)=fifit。f个field两两求矩阵乘法,交叉项p共f(f-1)/2kk个参数。线性部分z部分参数共fk个。需要学习的参数为: (1)FM部分: 1+ n + nk (2)product部分: (fk + f(f-1)/2kk)H1 (3)MLP部分:H1H2+H215. Wide & Deep Learning(Wide&Deep)前面介绍的两种变体DNN结构FNN和PNN,都在embedding层对输入做处理后输入MLP,让神经网络充分学习特征的高阶表达,deep部分是有了,对高阶的特征学习表达较强,但wide部分的表达是缺失的, 模型对于低阶特征的表达却比较有限。google在2016年提出了大名鼎鼎的wide&Deep的结构正是解决了这样的问题。Wide&deep结合了wide模型的优点和deep模型的优点,网络结构如图6所示,wide部分是LR模型,Deep部分是DNN模型。图6 Wide&Deep 模型结构在这个经典的wide&deep模型中,google提出了两个概念,generalization(泛化性)和memory(记忆性)Ø Memory(记忆性)wide部分长处在于学习样本中的高频部分,优点是模型的记忆性好,对于样本中出现过的高频低阶特征能够用少量参数学习;缺点是模型的泛化能力差,例如对于没有见过的ID类特征,模型学习能力较差。Ø Generalization(泛化性)deep部分长处在于学习样本中的长尾部分,优点是泛化能力强,对于少量出现过的样本甚至没有出现过的样本都能做出预测(非零的embedding向量);缺点是模型对于低阶特征的学习需要用较多参才能等同wide部分效果,而且泛化能力强某种程度上也可能导致过拟合出现bad case.除此之外,wide&deep模型还有如下特点Ø 人工特征工程LR部分的特征,仍然需要人工设计才能保证一个不错的效果。因为LR部分是直接作为最终预测的一部分,如果作为wide部分的LR特征工程做的不够完善,将影响整个wide&deep的模型精度Ø 联合训练模型是end-to-end结构,wide部分和deep部分是联合训练的Ø embedding层deep部分单独占有LR部分直接作为最后输出,因此embedding层是deep部分独有的。wide&deep = LR + embedding + MLP (1)LR部分: 1+n (2)embedding部分:nk (3)MLP部分: fkH1 + H1H2 + H216. Factorization-Machine based Neural Network (deepFM)google提出的wide&deep框架固然强大,但由于wide部分是个LR模型,仍然需要人工特征工程。但wide&deep给整个学术界和工业界提供了一种框架思想。基于这种思想,华为诺亚方舟团队结合FM相比LR的特征交叉的功能,将wide&deep部分的LR部分替换成FM来避免人工特征工程,于是有了deepFM,网络结构如图6所示。图7 DeepFM模型结构比起wide&deep的LR部分,deeFM采用FM作为wide部分的输出,FM部分如图8所示。图8 deepFM模型中的FM部分结构除此之外,deepFM还有如下特点:Ø 低阶特征表达wide部分取代WDL的LR,比FNN和PNN相比能捕捉低阶特征信息Ø embedding层共享wide&deep部分的embedding层得需要针对deep部分单独设计;而在deepFM中,FM和DEEP部分共享embedding层,FM训练得到的参数既作为wide部分的输出,也作为DNN部分的输入。Ø end-end训练embedding和网络权重联合训练,无需预训练和单独训练deepFM = FM + embedding + DNN(1)FM部分: 1+n(2)embedding部分:nk(3)DNN部分: fkH1 + H1H2+H1通过embedding层后,FM部分直接输出没有参数需要学习,进入DNN部分的参数维度从原始n维降到fk维。7. Neural Factorization Machines (NFM) 前面的deepFM在embedding层后把FM部分直接concat起来(fk维,f个field,每个filed是k维向量)作为DNN的输入。Neural Factorization Machines,简称NFM,提出了一种更加简单粗暴的方法,在embedding层后,做了一个叫做BI-interaction的操作,让各个field做element-wise后sum起来去做特征交叉,MLP的输入规模直接压缩到k维,和特征的原始维度n和特征field维度f没有任何关系。网络结构如图9所示。图9 NFM模型结构这里论文只画出了其中的deep部分, wide部分在这里省略没有画出来。Bi-interaction听名字很高大上,其实操作很简单:就是让f个field两两element-wise相乘后,得到f(f-1)/2个向量,然后直接sum起来,最后得到一个k维的向量。所以该层没有任何参数需要学习。NFM = FM + embedding + MLP需要学习的参数有:(1)FM部分: 1+n(2)embedding部分:nk(3)MLP部分: kH1 + H1H2+…+Hl1NFM在embedding做了bi-interaction操作来做特征的交叉处理,优点是网络参数从n直接压缩到k(比FNN和deepFM的fk还少),降低了网络复杂度,能够加速网络的训练得到模型;但同时这种方法也可能带来较大的信息损失。8. Attention Neural Factorization Machines (AFM) 前面提到的各种网络结构中的FM在做特征交叉时,让不同特征的向量直接做交叉,基于的假设是各个特征交叉对ctr结果预估的贡献度是一样的。这种假设其实是不合理的, 不同特征在做交叉时,对ctr预估结果的贡献度是不一样的。Attention Neural Factorization Machines,简称NFM模型,利用了近年来在图像、NLP、语音等领域大获成功的attention机制,在前面讲到的NFM基础上,引入了attention机制来解决这个问题。AFM的网络结构如图10所示。和NFM一样,这里也省略了wide部分,只画出了deep部分结构。图10 AFM模型结构AFM的embedding层后和NFM一样,先让f个field的特征做了element-wise product后,得到f(f-1)/2个交叉项。和NFM直接把这些交叉项sum起来不同,AFM引入了一个Attention Net,认为这些交叉特征项每个对结果的贡献是不同的,例如xi和xj的权重重要度,用aij来表示。从这个角度来看,其实AFM其实就是个加权累加的过程。Attention Net部分的权重aij不是直接学习,而是通过如下公式表示这里t表示attention net中的隐层维度,k和前面一样,为embedding层的维度。所以这里需要学习的参数有3个,W, b, h,参数个数共tk+2t个。得到aij权重后,对各个特征两两点积加权累加后,得到一个k维的向量,引入一个简单的参数向量pT,维度为k进行学习,和wide部分一起得到最终的AFM输出。总结AFM的网络结构来说,有如下特点:Ø Attention NetworkAFM的亮点所在,通过一个attention net生成一个关于特征交叉项的权重,然后将FM原来的二次项直接累加,变成加权累加。本质上是一个加权平均,学习xjxj的交叉特征重要性Ø Deep Network没有deep,卒。Attention net学习得到的交叉项直接学些个pt参数就输出了,少了DNN部分的表达,对高阶特征部分的进一步学习可能存在瓶颈。另外,FFM其实也引入了field的概念去学习filed和featrue之间的权重。没有了deep 部分的AFM,和优化的FFM上限应该比较接近。AFM = FM + embedding + attention + MLP(一层)需要学习的参数有:(1)FM部分参数:1+n(2)Embedding部分参数: nk(3)Attention Network部分参数: kt+t2(4)MLP部分参数:k19. Deep&CrossNetwork(DCN)在ctr预估中,特征交叉是很重要的一步,但目前的网络结构,最多都只学到二级交叉。LR模型采用原始人工交叉特征,FM自动学习xi和xj的二阶交叉特征,而PNN用product方式做二阶交叉,NFM和AFM也都采用了Bi-interaction的方式学习特征的二阶交叉。对于更高阶的特征交叉,只有让deep去学习了。为解决这个问题,google在2017年提出了Deep&Cross Network,简称DCN的模型,可以任意组合特征,而且不增加网络参数。图11为DCN的结构。图10 DCN模型结构整个网络分4部分组成:(1)Embedding and stacking layer之所以不把embedding和stacking分开来看,是因为很多时候,embedding和stacking过程是分不开的。前面讲到的各种 XX-based FM 网络结构,利用FM学到的v向量可以很好的作为embedding。而在很多实际的业务结构,可能已经有了提取到的embedding特征信息,例如图像的特征embedding,text的特征embedding,item的embedding等,还有其他连续值信息,例如年龄,收入水平等,这些embedding向量stack在一起后,一起作为后续网络结构的输入。当然,这部分也可以用前面讲到的FM来做embedding。为了和原始论文保持一致,这里我们假设X0向量维度为d(上文的网络结构中为k),这一层的做法就是简答的把各种embedding向量concat起来。(2)Deep layer netwok在embedding and stacking layer之后,网络分成了两路,一路是传统的DNN结构。表示如下为简化理解,假设每一层网络的参数有m个,一共有Ld层,输入层由于和上一层连接,有dm个参数(d为x0向量维度),后续的Ld-1层,每层需要m(m+1)个参数,所以一共需要学习的参数有 dm+m(m+1)(Ld-1)。最后的输出也是个m维向量Hl2(3)Cross layer network Embedding and stacking layer输入后的另一路就是DCN的重点工作了。假设网络有L1层,每一层和前一层的关系可以用如下关系表示可以看到f是待拟合的函数,xl即为上一层的网络输入。需要学习的参数为wl和bl,因为xl维度为d, 当前层网络输入xl+1也为d维,待学习的参数wl和bl也都是d维度向量。因此,每一层都有2d的参数(w和b)需要学习,网络结构如下。经过Lc层的cross layer network后,在该layer最后一层Lc层的输出为Lc2的d维向量(4)Combination Output Layer经过crossnetwork的输出XL1(d维)和deep network之后的向量输入(m维)直接做concat,变为一个d+m的向量,最后套一个LR模型,需要学习参数为1+d+m。总结起来,DCN引入的crossnetwork理论上可以表达任意高阶组合,同时每一层保留低阶组合,参数的向量化也控制了模型的复杂度。DCN = embedding + cross + deep + LR待学习参数有:(1)embedding部分参数: 根据情况而定(2)cross部分参数:2dLc(Lc为cross网路层数)(3)deep部分参数:d(m+1)+m(m+1)(Ld-1)(Ld为深度网络层数,m为每层网络参数)(4)LR 部分参数:1+d+m10. Deep Interest Network (DIN) 最后介绍阿里在2017年提出的Deep Interest Network,简称DIN模型。与上面的FNN,PNN等引入低阶代数范式不同,DIN的核心是基于数据的内在特点,引入了更高阶的学习范式。用户的兴趣是多种多样的,从数学的角度来看,用户的兴趣在兴趣空间是一个多峰分布。在预测ctr时,用户embedding表示的兴趣维度,很多是和当前item是否点击无关的,只和用户兴趣中的局部信息有关。因此,受attention机制启发,DIN在embedding层后做了一个action unit的操作,对用户的兴趣分布进行学习后再输入到DNN中去,网络结构如图12所示图12 DIN模型结构DIN把用户特征、用户历史行为特征进行embedding操作,视为对用户兴趣的表示,之后通过attention network,对每个兴趣表示赋予不同的权值。• Vu:表示用户最终向量• Vi:表示用户兴趣向量(shop_id, good_id..)• Va:表示广告表示向量• Wi: 对于候选广告,attention机制中该兴趣的权重可以看到,对于用户的每个兴趣向量Vi,都会通过学习该兴趣的权重Vi, 来作为最终的用户表示。三、写在最后前面介绍了10中深度学习模型的网络结构,总结起来可以用如下的所表示各种CTR深度模型看似结构各异,其实大多数可以用如下的通用范式来表达,Ø input->embedding把大规模的稀疏特征ID用embedding操作映射为低维稠密的embedding向量Ø embedding层向量concat, sum, average pooling等操作,大部分CTR模型在该层做改造Ø embedding->output通用的DNN全连接框架,输入规模从n维降为kf维度甚至更低。图3 通用深度学习模型结构其中,embedding vector这层的融合是深度学习模型改造最多的地方,该层是进入深度学习模型的输入层,embedding融合的质量将影响DNN模型学习的好坏。个人总结大体有以下4种操作,当然后续可能会有越来越多其他的变形结构。图14 embedding层融合方式另外,DNN部分,业界也有很多或state-of-art或很tricky的方法,都可以在里面进行尝试,例如dropout,在NFM的Bi-interaction中可以尝试以一定概率dropout掉交叉特征增前模型的泛化能力等。写在最后 ctr预估领域不像图像、语音等领域具有连续、稠密的数据以及空间、时间等的良好局部相关性,ctr预估中的大多数输入都是离散而且高维的,特征也分散在少量不同的field上。要解决这样的一个深度学习模型,面临的第一个问题是怎么把输入向量用一个embedding层降维策划那个稠密连续的向量,如本文介绍的用FM去做预训练,或者和模型一起联合训练,或者其他数据源提取的embedding特征向量去做concat。其次,在宽和深的大战中,在google在提出了wide&deep的模型框架后,这套体系基本已成为业内的基本框架。无论wide部分或者deep怎么改造,其实本质上还是一些常见组件的结合,或者改造wide,或者改造deep,或者在wide和deep的结合过程中进行改造。ctr预估领域方法变化层出不穷,但万变不离其宗,各种模型本质上还是基础组件的组合,如何结合自己的业务、数据、应用场景去挑选合适的模型应用,可能才是真正的难点所在。四、参考文献[1]Factorization Machines[2]Wide & Deep Learning for Recommender Systems[3]Deep Learning over Multi-Field Categorical Data: A Case Study on User Response Prediction[4]Product-based Neural Networks for User Response Prediction[5]DeepFM: A Factorization-Machine based Neural Network for CTR Prediction[6]Neural Factorization Machines for Sparse Predictive Analytics[7] Attentional Factorization Machines: Learning the Weight of Feature Interactions via Attention Networks[8]Deep & Cross Network for Ad Click Predictions[9]Deep Interest Network for Click-Through Rate Prediction问答如何把深度学习应用在云中?相关阅读IPv6原理、应用与实践Python 工匠:编写条件分支代码的技巧AI从入门到放弃:CNN的导火索,用MLP做图像分类识别? 【每日课程推荐】机器学习实战!快速入门在线广告业务及CTR相应知识 ...

October 21, 2018 · 2 min · jiezi