云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

消息队列_中小企业数据库_免费申请

小七 141 0

深入学习数据库

我们很高兴宣布图形处理单元(GPU)的普遍可用性和对数据库的深入学习支持!这篇博客文章将帮助用户通过一个教程开始,该教程提供了有用的提示和资源,目标是需要大规模运行深度学习应用程序的数据科学家和工程师。有什么新消息吗?Databricks现在提供了一种利用gpu来增强图像处理、文本分析和其他机器学习任务的简单方法。用户可以使用ec2p2实例类型创建支持GPU的集群。Databricks包括预装的NVIDIA驱动程序和库,为gpu配置的apachespark部署,以及一些流行的深度学习库入门资料。我们之前关于Databricks中的GPU加速的博客文章提供了关于我们的GPU产品的更多技术细节。它还包含一些例子基准测试,展示了gpu在机器学习方面是如何非常经济高效的,特别是对于深度学习所需的昂贵计算。这篇博客文章提供了一个关于如何开始使用gpu和深入学习数据库的教程。我们将通过一个集成Spark和TensorFlow的示例任务,其中我们将部署一个深层神经网络来识别图像中的对象和动物。使用ApacheSpark进行深度学习在深入学习本教程之前,让我们讨论用户如何利用GPU实例并在数据库上应用深度学习库。常见工作流包括:大规模部署模型:部署经过训练的模型,对Spark rdd或dataframe中存储的数据进行预测。在这篇博文中,我们将部署著名的计算机视觉初始模型。分布式模型培训:使用TensorFlow这样的深入学习库对每个工人测试不同的模型超参数,用Spark加速这个时间密集型的任务。请查看我们之前关于使用apachespark和TensorFlow进行深度学习的博客文章中的示例。GPU工作站:如果您的数据适合于一台机器,那么创建一个只包含驱动程序的集群(0个worker)并在GPU驱动的驱动程序上使用深度学习库是非常划算的。请注意,深度学习不需要GPU。这些深入学习的库都将运行在cpu上,尤其是与计算优化的实例类型一起使用时。教程:大规模部署深度学习模型我们将简要介绍如何在apachespark上部署预先培训的深度学习模型。了解任务在本例中,我们使用一个现有的单机工作流并将其修改为在apachespark之上运行。我们使用了TensorFlow的"具有初始点的简单图像分类"示例,它应用初始模型来预测一组图像的内容。例如,给定这样的图像:初始模型将告诉我们图像的内容,在本例中:("水肺潜水员",0.88708681),('电鳐,水蛭,麻鱼,鱼雷',0.012277877),("海蛇",0.005639134),(‘虎鲨,Galeocerdo cuvieri’,0.0051873429),("卷筒",0.0044495272)上面的每一行代表一个"synset",或者一组代表一个概念的同义词。赋予每个synset的权重表示synset对图像的适用程度的置信度。在这种情况下,"水肺潜水员"是相当准确的!使用Inception-v3进行预测成本高昂:每个预测需要大约48亿次操作(Szegedy等人,2015年)。即使使用较小的数据集,并行化这种计算也是值得的。我们将使用Spark分发这些昂贵的预测。创建启用GPU的群集用户可以在Databricks上创建一个支持GPU的集群,就像其他集群一样。我们将指出主要的区别。选择启用GPU的"Apache Spark Version"。选择支持GPU的版本可确保NVIDIA CUDA和cuDNN库已预装在您的群集上。我们避免在非GPU集群上安装这些库,因为它们需要额外的资源。通过选择支持GPU的Spark版本,您同意NVIDIA EULA。目前,在EC2上很难获得GPU spot实例,因此我们建议使用按需实例以保持稳定性。为您的集群工作机和驱动程序选择GPU实例类型。Databricks目前支持所有P2实例类型:P2.xlarge(1gpu)、P2.8xlarge(8gpu)和P2.16xlarge(16gpu)。(更新:P2实例在三个AWS区域可用:美国东部(弗吉尼亚州北部)、美国西部(俄勒冈州)和欧盟(爱尔兰)。您的Databricks部署必须驻留在支持的区域中才能创建支持GPU的集群。)目前,AWS对P2实例类型的默认限制仅为1个实例,因此您可能需要从AWS请求增加限制。注意:我们最初的博客文章讨论了G2实例类型,一种支持ec2gpu的旧类型。我们正在发布P2实例支持,因为P2每美元可以提供更多的内存和GPU内核。最后,用户不必添加内置存储类型的P2-SSD。您可以使用单个p2.xlarge worker和单个EBS卷运行这个小示例。对于一个更大的数据集,使用更多的工人将从分布计算中提供近似线性的加速。关于创建集群的更多细节,以及NVIDIA驱动程序和库版本,在GPU集群的Databricks指南中给出。安装TensorFlowDatabricks为在集群上安装深度学习库提供了Init脚本。因为这些库通常是从源代码构建的,并且需要自定义配置,所以我们建议通过可自定义脚本安装这些库。您只需要创建一次Init脚本,这个创建可以使用任何集群(没有gpu)来完成。克隆TensorFlow Init脚本笔记本](https://docs.databricks.com/applications/deep learning/tensorflow.html安装-tensorflow使用init脚本),并在脚本中修改集群名称以匹配您的GPU集群(或将来要创建的GPU集群的名称):#要在其上安装TensorFlow的群集的名称:clusterName="tensorflow gpu"运行安装脚本的笔记本。下次使用这个名称创建集群时,它将使用Init脚本并在Spark驱动程序和workers上预安装TensorFlow。如果已经有一个同名的集群在运行,那么重新启动它以安装TensorFlow。在Spark上部署张量流模型现在我们已经安装了一个支持GPU的集群并安装了TensorFlow,我们可以部署一个深度学习模型。有关完整的工作流程,请参阅Databricks指南中的完整笔记本。我们将在这里讨论关键点。我们首先下载Inception-v3模型,它由TensorFlow托管:型号\u URL='https://download.tensorflow.org/models/image/imagenet/inception-2015-12-05.tgz'我们广播了Inception模型,以便与Spark集群中的员工有效沟通:型号_data_bc=sc.广播(模型数据)如果您阅读完整的笔记本,您将看到我们还广播了其他有用的元数据,例如node_lookup信息,用于将Inception的预测映射为人类可读的结果。然后,我们读取图像文件URL列表,并在Spark RDD中并行化该列表:批处理数据=读取文件索引()URL=sc.并行化(批处理数据)#稍后在此工作流中这为我们提供了一组要处理的分布式图像。剩下的工作将在Spark workers上以分布式方式完成,每个worker将处理这些图像的一个子集。我们定义了一个处理单个图像的函数:对映像运行推断(sess、img_id、img_url、node\u lookup)此函数执行以下操作:下载图像:图像数据=urllib.request.urlopen(img_url,timeout=1.0).read()使用TensorFlow进行预测:预测=sess.运行(softmax_tensor,{'DecodeJpeg/内容:0':图像数据)将结果转换为人类可读的格式。为了提高效率,我们进行了批量计算,这样TensorFlow可以同时处理多个图像。函数apply_inference_on_batch(batch)处理整个批处理。这两个函数都可以在Spark之外使用。在实际并行化工作流的各个部分之前,为了简单起见,在单个机器上开发深入学习的工作流是很有帮助的。这里,我们没有显式地告诉TensorFlow使用GPU,因此TensorFlow会自动选择使用哪个设备。当我们用一个p2.xlarge worker和日志设备使用情况运行这个笔记本时,TensorFlow使用GPU进行大部分计算。最后,我们通过将推理函数映射到我们的分布式图像集来应用它们:标记的图像=网址.flatMap(对批处理应用推理)就这样!这个工作流提供了一个很好的模板,您可以从中构建定制的深度学习+apachespark集成。重点包括:在并行化部分工作流之前,尝试在一台机器上开发深度学习逻辑。知道哪些任务可以有效地分配。预测(推理)和模型调整通常是很好的候选者。高效地使用Spark:广播像模型数据这样的大对象,并行化工作流中昂贵的部分,最小化Spark工作人员之间的通信。入门本教程只介绍了TensorFlow,但我们也为其他流行的深度学习库提供了素材。其中几个库有更复杂的安装要求,因此我们提供的Init脚本非常有用。阅读Databricks指南中关于深度学习的部分。每个库页面都包含一个用于安装的Init脚本和一个在Databricks中使用库的简短示例。Databricks指南还包含一个关于创建GPU集群的页面。期待在不久的将来有更多的导游!要从今天开始,请注册免费试用。免费试用Databricks。今天就开始吧