MxNet系列——how_to——cloud

2023-05-16

博客新址: http://blog.xuezhisd.top
邮箱:xuezhisd@126.com


在云上配置MXNet

从头开始设置一个AWS的GPU集群

本节提供了如何设置AWS集群以使用MXNet的详细教程。描述了如何:

  • Use Amazon S3 to host data
  • Set up an EC2 GPU instance with all dependencies installed
  • Build and run MXNet on a single computer
  • Set up an EC2 GPU cluster for distributed training

使用Amazon S3来存储数据

Amazon S3 提供了分布式数据存储,便于存储大数据。使用S3,需要 AWS 证书,它包含一个 ACCESS_KEY_ID 和一个 SECRET_ACCESS_KEY

如果希望在 MXNet 中使用 S3,需要 设置环境变量 AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY,方法是:将下面的2行命令添加到 ~/.bashrc(注意:需要将环境变量的值替换成自己的密匙)。

export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

有多种将数据上传到S3的方法。一个简单的方法是使用 s3cmd。例如:

wget http://data.mxnet.io/mxnet/data/mnist.zip
unzip mnist.zip && s3cmd put t*-ubyte s3://dmlc/mnist/

设置一个EC2的GPU实例

MXNet 需要下面的库:

  • 支持C++11的C++编译器。比如, gcc >= 4.8
  • CUDA (CUDNN 可选)。用于GPU线性代数运算
  • BLAS (cblas, open-blas, atblas, mkl, 或其它) 用于CPU线性代数运算
  • opencv 用于图像预处理和数据增强。
  • curlopenssl 用于Amazon S3 存/取数据。

在EC2实例上安装 CUDA,需要较大的功夫。Caffe有一个较好的[教程](https://github.com/BVLC/caffe/wiki/Install-Caffe-on-EC2-from-scratch-(Ubuntu,-CUDA-7,-cuDNN),它描述了如何在Ubuntu 14.04上安装CUDA 7.0。

注意: 2015年11月7日,我们尝试了 CUDA 7.5,但发现存在问题。

你可以使用包管理器来安装剩下的部分。比如,在Ubuntu上:

sudo apt-get update
sudo apt-get install -y build-essential git libcurl4-openssl-dev libatlas-base-dev libopencv-dev python-numpy

Amazon Machine 镜像 ami-12fd8178中包含上面列出的安装包。

在GPU实例上构建和运行 MXNet

下面的命令用于构建支持 CUDA/CUDNN, Amazon S3, 和分布式训练的MXNet。

git clone --recursive https://github.com/dmlc/mxnet
cd mxnet; cp make/config.mk .
echo "USE_CUDA=1" >>config.mk
echo "USE_CUDA_PATH=/usr/local/cuda" >>config.mk
echo "USE_CUDNN=1" >>config.mk
echo "USE_BLAS=atlas" >> config.mk
echo "USE_DIST_KVSTORE = 1" >>config.mk
echo "USE_S3=1" >>config.mk
make -j$(nproc)

为了测试是否安装成功,使用GPU在MNIST上训练一个卷积神经网络(CNN):

python tests/python/gpu/test_conv.py

如果你已经将MNIST数据集放在 s3://dmlc/mnist,你可以使用下面的命令直接读取存储在Amazon S3上的数据:

sed -i.bak "s!data_dir = 'data'!data_dir = 's3://dmlc/mnist'!" tests/python/gpu/test_conv.py

注意: 你可以使用命令 sudo ln /dev/null /dev/raw1394 来修复 OpenCV 错误 libdc1394 error: Failed to initialize libdc1394

配置一个EC2 GPU集群,用于分布式训练

一个集群包含多个电脑。你可以使用安装了MXNet的电脑作为主电脑(Root),用于提交作业,并启动一些从电脑(slave)来执行作业。比如,使用AMI启动多个实例,镜像ami-12fd8178已经安装了依赖。有2个选项:

  • 让所有从电脑(主电脑一样)的端口可访问,通过在安全用户组中设置类型:TCP,源:任何地方来实现。
  • 使用相同的 pem 作为主计算机来访问所有从计算机,然后将 pem 文件复制到主计算机的 ~/.ssh/id_rsa 文件中。如果已经这样操作,主计算机能通过SSH来访问所有的从计算机。

现在,在多个电脑中运行CNN。假定在主计算机的一个工作目录下,比如 ~/train,且MXNet位于 ~/mxnet

  1. 为了容易同步,将 MXNet Python 库打包到工作目录 ~/train 下。
cp -r ~/mxnet/python/mxnet .
cp ~/mxnet/lib/libmxnet.so mxnet/

然后复制训练程序:

cp ~/mxnet/example/image-classification/*.py 
  1. 建立一个host文件,将所有从计算机的IPs写入该文件。例如,cat hosts
172.30.0.172
172.30.0.171
  1. 假定有2个计算机,使用2个workers训练CNN:
../../tools/launch.py -n 2 -H hosts --sync-dir /tmp/mxnet python train_mnist.py --kv-store dist_sync

注意: 有时候,即使你在主节点上已经按下 Ctrl-c,从节点上的作业依然存在。使用下面的命令终止它们:

cat hosts | xargs -I{} ssh -o StrictHostKeyChecking=no {} 'uname -a; pgrep python | xargs kill -9'

***注意:***上面使用的模型很简单,很容易训练,因此这不是一个比较好的分布式训练的基准。考虑使用其它 例程。

更多选项

使用多个数据块

将一个数据集分成几个文件很常见,尤其是在分布式环境下。MXNet支持直接从多个数据块加载数据。将所有的记录文件放到一个文件夹,并设置数据路径指向该文件夹。

使用 YARN 和 SGE

当没有集群调度框架时,使用SSH比较简单。MXNet被设计成能在不同平台之间具有可移植性。我们在tracker中提供了其它的脚本,以便于在其它集群框架(包括Hadoop-YARN和SGE)下运行MXNet。我们欢迎你贡献在你喜欢的分布式平台上运行MXNet的例程。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MxNet系列——how_to——cloud 的相关文章

  • Google Cloud Platform 为什么我声明的防火墙规则不起作用?

    我已在虚拟机实例中安装 Debian Stretch 作为操作系统 我已经下载了已安装的 通过 git AllStarLink 软件以将其安装在上述实例中 安装和测试一段时间后 我运行虚拟机实例并且工作正常 该应用程序显示已在 allsta
  • Google 云存储 JavaScript 使用情况

    我正在尝试使用以下命令将图像上传到 Google Cloud Storage 上的存储桶中JSON API https cloud google com storage docs json api 使用 Javascript 示例 API
  • 如何在 R 4.0.2 中安装“mxnet”包

    下午好 最近我在安装 mxnet 包时遇到了问题 我尝试了几种代码变体 但它们都没有真正安装这个包 1 cran lt getOption repos cran dmlc lt https apache mxnet s3 accelerat
  • Terraformer 合并多个 tfstate 文件

    我正在使用 terraformer 导入 不是 terraform 检查这个 https github com GoogleCloudPlatform terraformer https github com GoogleCloudPlat
  • 有哪些大型网站正在使用 Amazon EC2 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我正在寻找托管在 Amazon EC2 S3 Cloudfront 等上的大型网站的示例 我在一家公司工作 我们运行一个网站 该网站每月在运行 10
  • Android Firebase如何在特定用户下保存和检索数据

    我正在尝试将我的应用程序与 firebase 集成以在云上保存简单数据 Example 用户打开应用程序并登录 用户写一些东西 数据保存在云端 当用户再次使用该应用程序时 他将看到他的数据 我已阅读文档 但我找不到任何示例 结构在用户和数据
  • 如何列出从单个卷 ID EC2 实例创建的所有快照?

    在过去的几个月中 我们的快照备份量增加 因此我们每月在亚马逊 EC2 上的账单也随之增加 现在我想删除一些旧的 EC2 快照 所以问题是 如何使用 EC2 命令行工具查找从单个卷 ID 创建的所有快照 I tried ec2 describ
  • 在 Azure 中托管 WCF 和可扩展性怎么样?

    出于可扩展性原因 我希望在 Azure 云中托管我的 WCF 服务 例如 将提供用户身份验证服务 并且它将处于高负载 1000 用户 秒 下 这里有人有在 Azure 云中以高用户负载托管 WCF 服务的真实经验吗 这里的最佳实践 模式是什
  • 如何从实例创建 Amazon EC2 AMI? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 如何从实例创建 EC2 AMI 好的 我得到了一个 EC2 帐户 我使用 Fedora 8 Apache MySQL PHP 启动了一个实例 我还配置
  • Android 谷歌云消息传递示例无法正常工作

    我正在关注这里的教程http developer android com google gcm gs html http developer android com google gcm gs html为了设置 GCM 我目前正在尝试注册设
  • Azure 的云服务负载平衡极其不均匀

    我正在利用 Azure 托管云服务 最近我对其进行了修改 使其可以跨多个实例进行扩展 包括会话缓存辅助角色 我的问题是 为什么我会在一个实例上看到极端负载 高达 90 但在其他实例上却没有 所有其他实例为 15 20 我应该担心吗 在我设置
  • Mac上像Cloud App一样自动截图上传

    云应用程序 http getcloudapp com 有这个巧妙的功能 当新的屏幕截图添加到桌面时 它会自动上传它们 有什么想法如何做到这一点吗 您可以自己做类似的事情 而无需太多编程方式 在操作系统中 您可以配置 文件夹操作 http w
  • Java 的去中心化集群库 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 将 TF.exe 与 Team Foundation Service 结合使用?

    我们正在将构建从 Team Build Team Foundation Service 转移到使用 Jenkins CI 进行构建的本地构建机器 但是 我们仍然希望使用云进行源代码控制 所以现在我们需要访问云TFS来获取最新版本 Jenki
  • 在 iOS 上通过 上传存储在云服务上的文件 0 字节

    我无法弄清楚为什么某些从 iOS 上传到我们服务器的内容会导致空文件 上传页面是一个简单的表单 使用 POST 和 enctype 作为 multipart form data 该问题似乎仅在用户执行以下操作时才会出现 正在使用 iOS 尝
  • 当 DHT 中的节点死亡时,数据会发生什么?

    问题取自这里 https groups google com forum topic byu cs 460 computer networking hpESI0NapmY https groups google com forum topi
  • MXNet:nn.Activation 与 nd.relu?

    我是 MXNet 新手 我在 Python3 中使用它 他们的教程系列鼓励您定义自己的gluon blocks http gluon mxnet io chapter03 deep neural networks plumbing html
  • Google Cloud Text To Speech API 快速入门示例

    我是这个论坛的新手 我正在尝试让 Google Cloud TTS API 正常工作 但遇到了一些问题 页面是 https cloud google com text to speech docs quickstart protocol h
  • Amazon s3 putObject 标记不起作用

    我正在尝试使用 putObject 方法上传到 Amazon s3 时添加标签 根据文档 我已将标签创建为字符串类型 我的文件已上传到 Amazon s3 但我无法使用提供的标签数据查看文件对象的对象级别标签 根据文档遵循以下代码示例 va
  • 何时应使用以下各项:Amazon EC2、Google App Engine、Microsoft Azure 和 Salesforce.com? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我是在非常普遍的意义上问这个问题 无论是从云提供商还是云消费者的角度来看 此外 问题不针对任何特定类型的应用程序 实际上 目的是了解哪种类型的应

随机推荐

  • Eigen教程1 - 基础

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com 固定大小的矩阵和向量 参考链接 xff1a http eigen tuxfamily org dox 2 0 Tutorial
  • Eigen教程2 - 入门

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com 安装Eigen 无需安装 只需将Eigen位置添加到include路径中 Demo 1 MatrixXd xff0c X表示动
  • Eigen教程3 - 稀疏矩阵操作

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com 稀疏矩阵操作 操作和求解稀疏问题需要的模块 xff1a SparseCore SparseMatrix 和 SparseVec
  • Eigen教程4 - 稀疏矩阵快速参考指南

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com 本文对稀疏矩阵SparseMatrix的主要操作进行了总结 首先 xff0c 建议先阅读 Eigen教程2 稀疏矩阵操作 关于
  • Eigen教程5 - 求解稀疏线性方程组

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com Eigen中有一些求解稀疏系数矩阵的线性方程组 由于稀疏矩阵的特殊的表示方式 xff0c 因此获得较好的性能需要格外注意 查看
  • Eigen教程6 - Matrix-free solvers

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com Matrix free solvers 像ConjugateGradient 和 BiCGSTAB这样的迭代求解器可以用在 m
  • Eigen教程7 - Eigen和Matlab的比较

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com Eigen和Matlab比较 参考 http eigen tuxfamily org dox AsciiQuickRefere
  • MxNet系列——how_to——perf

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com 性能 下面是一些技巧 xff0c 以尽可能的获取MXNet的最佳性能 数据 对于输入数据 xff0c 需要注意以下内容 xff
  • MxNet系列——how_to——visualize_graph

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com 如何将神经网络可视化为计算图 该章节描述了如何在MXNet中使用在mx viz plot network来可视化 xff08
  • 修改antlr错误信息输出格式的方法

    找到 antlr DefaultFileLineFormatter java 修改类DefaultFileLineFormatter的函数getFormatString 我将其修改如下 以适应vc的错误信息输出格式 package antl
  • MxNet系列——how_to——torch

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com 如何将MXNet用作Torch的前后端 本章节描述了如何将MXNet用作Torch的两个主要功能 xff08 前端和后端 xf
  • MxNet系列——how_to——smart_device

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com 将深度学习库压缩成一个文件 xff0c 以便移植到智能设备中 深度学习系统是复杂的 xff0c 并且常常有些依赖环境 将深度学
  • MxNet系列——how_to——new_op

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com 如何创建新的操作符 网络层 本节内容描述了创建新的MXNet操作符 xff08 或网络 xff09 的过程 我们已经尽了最大努
  • MxNet系列——how_to——multi_devices

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com 在多个CPU GPUs上以数据并行方式运行MXNet MXNet 支持在多个CPUs和GPUs上进行训练 其中 xff0c 这
  • MxNet系列——how_to——model_parallel_lstm

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com 使用模型并行的方式在多个GPUs上训练LSTM 由于复杂的数据依赖 xff0c LSTM评价很困难 LSTM的训练过程 xff
  • MxNet系列——how_to——index

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com MXNet 怎么办系列 How tos 提供了一系列的有关安装 xff0c 基本概念 xff0c 说明 xff0c 命令和使用
  • MxNet系列——how_to——faq

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com 常见问题 本节回答了 mxnet issues上的常见问题 在提问前 xff0c 请先检查该页面 如果你想要贡献本页面 xff
  • MxNet系列——how_to——env_var

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com 环境变量 环境可以修改MXNet的一些设置 一般情况下 xff0c 你不需要修改这些设置 本节将它们罗列出来 xff0c 用于
  • MxNet系列——how_to——develop_and_hack

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com 开发和 Hack MXNet 创建新的操作符在MXNet中使用Torch设置MXNet的环境变量 其它资源 概述 MXNet的
  • MxNet系列——how_to——cloud

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com 在云上配置MXNet 从头开始设置一个AWS的GPU集群 本节提供了如何设置AWS集群以使用MXNet的详细教程 描述了如何