Deep Learning:MXNet 基于docker 容器的分布式训练实践

Python地理空间数据库之geopandas使用详解 地理空间数据分析在许多领域中都有着广泛的应用,包括地理信息系统(GIS)、城市规划、环境科学、地质勘探等。Python GeoPandas是一个强大的库,旨在简化地理空间数据的处理和分析。本文将深入介绍GeoPandas库,包括其基本概念、功能特性、示例代码以及在实际应用中的应用场景。 阅读详情

引言

MXNet supports distributed training enabling us to leverage multiple machines for faster training.
 
MXNet支持分布式培训,使我们能够利用多台机器进行更快速的培训。这段话来自于 MXNet官网 ,说明了MXNet 支持跨越设备运行。
 
How to Start Distributed Training?
那么MXNet是怎样实现分布式训练的?
 
仔细阅读官方文档,官方文档给出了一个示例并写了这样一段话:
For distributed training of this example, we would do the following:
If the mxnet directory which contains the script image_classification.py is accessible to all machines in the cluster (for example if they are on a network file system), we can run:

../../tools/launch.py -n 3 -H hosts --launcher ssh python image_classification.py --dataset cifar10 --model vgg11 --epochs 1 --kvstore dist_sync

这是个使用 ssh 方式进行分布式训练的例子。

其中使用的测试代码,来源于 https://github.com/apache/incubator-mxnet

注意,这里的 launch.py 是一个非常重要的工具,如果仔细阅读 python 源码,会发现正是由于执行它才能实现分布式训练,它目前支持了5种分布式或并发训练方式:

launch 方式

–launcher denotes the mode of communication. The options are:

  • ssh if machines can communicate through ssh without passwords. This
    is the default launcher mode.
  • mpi if Open MPI is available
  • sge for Sun Grid Engine
  • yarn for Apache Yarn
  • local for launching all processes on the same local machine. This can be used for debugging purposes.

官网介绍了5种方式进行分布式或并行训练。这些方式都是以类似于集群管理的方式进行分布式训练。如果阅读整个测试代码,你可能还会发现其他几种集群管理方式,如mesos,不知道什么原因,官网没有介绍,也没有明确说支持 mesos 调度。

实际上,跟 tensorflow 或者 pytorch 进行分布式训练稍有不同。
在tensorflow 或者 pytorch 进行分布式训练,可能需要自己手动 或者 通过 mpi 工具起 不同角色,如 tensorflow 中的 ps 和 worker ,pytorch 中的 rank 。
而 MXNet 起不同的角色,全部都交给 launch.py 做完了。相当于对普通用户进行了一定程度上的屏蔽。
 
MXNet 这样做有一定的好处,普通用户只需要关注 训练脚本 的编写,而不需要关注 分布式计算 集群 如何运作。相对应的,当用户想抛开 launch.py 进行多机器多节点分布式训练 时,这也会成为弊病。因为MXNet 官网并没有仔细介绍如何手动启动 分布式训练。

官方单机并发训练
export COMMAND='python example/gluon/image_classification.py --dataset cifar10 --model vgg11 --epochs 1 --kvstore dist_sync'
DMLC_ROLE=server DMLC_PS_ROOT_URI=127.0.0.1 DMLC_PS_ROOT_PORT=9092 DMLC_NUM_SERVER=2 DMLC_NUM_WORKER=2 $COMMAND &
DMLC_ROLE=server DMLC_PS_ROOT_URI=127.0.0.1 DMLC_PS_ROOT_PORT=9092 DMLC_NUM_SERVER=2 DMLC_NUM_WORKER=2 $COMMAND &
DMLC_ROLE=scheduler DMLC_PS_ROOT_URI=127.0.0.1 DMLC_PS_ROOT_PORT=9092 DMLC_NUM_SERVER=2 DMLC_NUM_WORKER=2 $COMMAND &
DMLC_ROLE=worker DMLC_PS_ROOT_URI=127.0.0.1 DMLC_PS_ROOT_PORT=9092 DMLC_NUM_SERVER=2 DMLC_NUM_WORKER=2 $COMMAND &
DMLC_ROLE=worker DMLC_PS_ROOT_URI=127.0.0.1 DMLC_PS_ROOT_PORT=9092 DMLC_NUM_SERVER=2 DMLC_NUM_WORKER=2 $COMMAND

这是MXNet官方给出的在单节点机器,起一个 scheduler ,两个 worker, 两个 server 进行分布式训练。但是实际情况中,我们希望将 上述三种角色, 以在不同主机上进行启动,进行大规模硬件资源进行分布式训练。
 
另外,我们还希望通过仅仅提供硬件资源,以云计算的方式提供服务,用户之间具备隔离。也就是我们希望所有计算服务,以 docker 容器化方式启动。通过指定 worker 和 server 的数量以及要使用的资源,来启动容器。
 
如此一来,我们不能使用官方的 推荐 的 集群管理方式进行分布式训练。我们真正需要实现的是,launch.py 实现的功能,并以自动化的方式在分布式集群上 启动 docker 容器, 进行分布式训练。
 
所有的用户可以创建自己的 docker image,push 到分布式 image 仓库,并挂载不同的存储,达到用户隔离的目的。

这个 例子中用的 cifar10 数据 在执行过程中下载非常慢,我把它 放在https://download.youkuaiyun.com/download/github_37320188/11584523 , (由于没有积分了,小收几个积分用用,不能老做公益呀)

实践部分

如果已经尝试过绕过 launch.py 进行分布式训练,最直接的方法是修改官方给出的 单机 并发训练 脚本。往上翻 可以看到。
 
实际上,该脚本通过设置环境变量的方式,设置 不同 角色的参数,然后执行 python 脚本。
官方对相关参数已经有部分解释。

  • DMLC_ROLE: Specifies the role of the process. This can be server,
    worker or scheduler. Note that there should only be one scheduler.
    When DMLC_ROLE is set to server or scheduler, these processes start
    when mxnet is imported.
  • DMLC_PS_ROOT_URI: Specifies the IP of the scheduler
  • DMLC_PS_ROOT_PORT: Specifies the port that the scheduler listens to
  • DMLC_NUM_SERVER: Specifies how many server nodes are in the cluster
  • DMLC_NUM_WORKER: Specifies how many worker nodes are in the cluster

 
但是尝试修改参数过后,如果成功找到方向的话,会发现,官方给出的环境变量是不够的。

解决思路

这里提供 3 个解决思路去进行解决这个问题。

  1. 仔细阅读 launch.py 的源码,这是官方给的示例,虽然不清楚什么原因官方没有仔细解释这部分功能、并将说明写的再详细些。但是 这部分确实实现了分布式 训练,代码中对所有必须的环境变量进行了export,具有非常重要的参考的价值。
  2. 如果没有 完整 阅读 launch.py 的耐心或者准备,你可以想办法打印出以 ssh 方式分布式训练时 export 的环境变量,但不保证能找到所有的。
  3. 最后,网络上有一些开源的产品,做了类似自己实现 MXNet 分布式训练,不依赖 launch.py ,并以云计算的方式提供服务。但是不保证他们在文档方面说的很详细,不过能实现说明研究过 手动进行分布式训练 。这里推荐一个 https://github.com/bytedance/byteps,来源于 Bytedance
实际操作

一开始我打印出以 ssh 方式分布式训练时 export 的环境变量,用来确定了确实是忽略了一些环境变量。
 
然后,我才开始阅读 launch.py 的代码,整个官方源码包其他的代码,找到了一些官方说明没有提到的变量。
 
操作一波

  • 首先,假设,我们要起一个分布式训练,包括 1 个 scheduler,2 个 worker,2 个 server。
  • 把他们起来两台机器上,机器 1 的 ip 为 192.168.61.55,机器 2 的 ip 为 192.168.61.56
  • 机器 1 上起 scheduler ,1 个 worker, 1 个 server
  • 机器 2 上 起 1 个 worker, 1 个 server
# 机器 1 输入
export COMMAND='python3 /mnt/mxnet-test/incubator-mxnet/example/gluon/image_classification.py --dataset cifar10 --model vgg11 --epochs 1 --kvstore dist_sync'
DMLC_ROLE=scheduler DMLC_PS_ROOT_URI=192.168.61.55 DMLC_PS_ROOT_PORT=9091 DMLC_NUM_SERVER=2 DMLC_NUM_WORKER=2 $COMMAND &
DMLC_ROLE=server DMLC_PS_ROOT_URI=192.168.61.55 DMLC_NODE_HOST=192.168.61.55 DMLC_PS_ROOT_PORT=9091 DMLC_NUM_SERVER=2 DMLC_NUM_WORKER=2 DMLC_SERVER_ID=0 $COMMAND &
DMLC_ROLE=worker DMLC_PS_ROOT_URI=192.168.61.55 DMLC_NODE_HOST=192.168.61.55 DMLC_PS_ROOT_PORT=9091 DMLC_NUM_SERVER=2 DMLC_NUM_WORKER=2 DMLC_WORKER_ID=0 $COMMAND

# 机器 2 输入
export COMMAND='python3 /mnt/mxnet-test/incubator-mxnet/example/gluon/image_classification.py --dataset cifar10 --model vgg11 --epochs 1 --kvstore dist_sync'
DMLC_ROLE=server DMLC_PS_ROOT_URI=192.168.61.55 DMLC_NODE_HOST=192.168.61.56 DMLC_PS_ROOT_PORT=9091 DMLC_NUM_SERVER=2 DMLC_NUM_WORKER=2 DMLC_SERVER_ID=1 $COMMAND &
DMLC_ROLE=worker DMLC_PS_ROOT_URI=192.168.61.55 DMLC_NODE_HOST=192.168.61.56 DMLC_PS_ROOT_PORT=9091 DMLC_NUM_SERVER=2 DMLC_NUM_WORKER=2 DMLC_WORKER_ID=1 $COMMAND

python 版本为 3.6.8
scheluder 不需要跟 任何其他 角色 绑定到 同一个 节点,也能独立运行。
甚至 可以把 这 5 个服务起在 5台机器上
DMLC_PS_ROOT_PORT 指定的是 起 scheduler 的机器上未被分配的可用端口
/mnt/mxnet-test/ 是一个分布式存储挂载目录

这里看到的是,相对于 官网 给到的介绍 多了几个环境变量:

  • DMLC_NODE_HOST 启动 worker 或者 server 时标示自己所在主机的地址,可以是 ip 也可以是 ib 卡的地址
  • DMLC_SERVER_ID 启动 server 时用来标记 index ,从 0 开始 计数,不可重复
  • DMLC_WORKER_ID 启动 worker 时用来标记 index ,从 0 开始 计数,不可重复

如果你使用了ib 卡,除了直接指定 DMLC_NODE_HOST=ib卡的地址 ,还可通过 DMLC_INTERFACE 环境变量指定
除此之外,指定 DMLC_PS_ROOT_URI 和 DMLC_NODE_HOST 不能使用主机名,必须使用 ip 地址 或者 ib 卡的地址。原因是 MXNet 的通信依赖于 zmq ,其不支持 主机名。具体原因或者代码可以网上查阅

docker 分布式训练

如果已经通过了上述 多机 分布式训练。后面就会变的稍微容易些。
首先,需要一个支持 python3 的 image,并且 支持 mxnet。你可以 在 docker hub 上找到一个

docker pull loongc/mxnet:v1

操作一波

  • 假设 要启动 5 个容器,1 个运行 scheduler,2 个 worker, 2 个 server
  • 准备两台机器,机器 1 的 ip 为 192.168.61.55, 机器2 的 ip 为 192.168.61.56
  • 机器 1 上起 scheduler 容器,1 个 worker 容器,1 个server 容器
  • 机器 2 上起 1 个 worker 容器, 1 个 server 容器
# 机器 1 上的 启动 shell 脚本 mxnet-test.sh
docker run -d --env-file /tmp/mxnet_env/worker  \
--name worker_1 \
-v /mnt/mxnet-test/incubator-mxnet:/incubator-mxnet \
-w /incubator-mxnet/example/gluon/ \
--net=host loongc/mxnet:v1 \
python3 image_classification.py --dataset cifar10 --model vgg11 --epochs 10 --kvstore dist_sync

docker run -d --env-file /tmp/mxnet_env/server  \
--name server_1 \
-v /mnt/mxnet-test/incubator-mxnet:/incubator-mxnet \
-w /incubator-mxnet/example/gluon/ \
--net=host loongc/mxnet:v1 \
python3 image_classification.py --dataset cifar10 --model vgg11 --epochs 10 --kvstore dist_sync

docker run -d --env-file /tmp/mxnet_env/scheduler  \
--name scheduler \
-v /mnt/mxnet-test/incubator-mxnet:/incubator-mxnet \
-w /incubator-mxnet/example/gluon/ \
--net=host loongc/mxnet:v1 \
python3 image_classification.py --dataset cifar10 --model vgg11 --epochs 10 --kvstore dist_sync

这里在机器 1 上启动了 3 个容器。
其中 的 /tmp/mxnet_env/worker , /tmp/mxnet_env/server , /tmp/mxnet_env/scheduler 文件 中写的是环境变量

这里举个例子

# 机器1 上的 scheduler 配置 /tmp/mxnet_env/scheduler
DMLC_ROLE=scheduler
DMLC_PS_ROOT_URI=192.168.61.55
DMLC_PS_ROOT_PORT=9091
DMLC_NUM_SERVER=2
DMLC_NUM_WORKER=2

# 机器1 上的 worker 配置 /tmp/mxnet_env/worker 
DMLC_ROLE=worker
DMLC_PS_ROOT_URI=192.168.61.55
DMLC_PS_ROOT_PORT=9091
DMLC_WORKER_ID=0
DMLC_NODE_HOST=192.168.61.55
DMLC_NUM_SERVER=2
DMLC_NUM_WORKER=2

# 机器1 上的 server 配置 /tmp/mxnet_env/server
DMLC_ROLE=server
DMLC_PS_ROOT_URI=192.168.61.55
DMLC_PS_ROOT_PORT=9091
DMLC_NODE_HOST=192.168.61.55
DMLC_SERVER_ID=0
DMLC_NUM_SERVER=2
DMLC_NUM_WORKER=2

这些是机器 1 上的配置, 机器 2 上的配置很相似
区别在于:

  1. 机器 2 上的启动脚本 mxnet-test.sh 不需要启动 scheduler 容器,直接拿 机器 1 上脚本 改改 删掉 scheduler 部分
  2. 机器 2 上不需要 /tmp/mxnet_env/scheduler 配置脚本
  3. 机器 2 上 /tmp/mxnet_env/worker 和 /tmp/mxnet_env/server 两个文件中 DMLC_NODE_HOST 修改成机器2 的地址,DMLC_WORKER_ID、DMLC_SERVER_ID 修改为 1 (从 0 开始 计数)

分别启动两台机器上的 启动脚本 mxnet-test.sh ,无严格先后顺序。可以查看 /mnt/mxnet-test/incubator-mxnet/example/gluon/image-classification.log 查看执行情况。

讨论

其实,通篇内容主要是 多机多CPU 的分布式运算。当然,我们还做了 多机多GPU 的分布式运算,并且使用 ib 卡(InfiniBand)进行通信。
如果需要使用 多机多GPU 并且 基于Docker 进行分布式运算。你需要以下几个条件:

  1. 环境准备:
    (1)需要支持 GPU 运算的系统环境:这里就不介绍 cuda 的安装配置了,我们主要的目标是解释如何实现分布式训练。本地系统的 cuda 版本为 10.1
    (2)支持 GPU 运算和 mxnet 的 Docker image:我尝试了几次自己写个 Dockerfile 用来创建一个支持 gpu 的 image,但是都没有获得成功。这里有一个最省事的办法,在docker hub 上找一个官方的image。我使用的 tag 为 mxnet/python:latest_gpu 的 image。写这篇博客的时候,该 image 中 python 版本为 3.5, cuda 版本 >9.0
     
  2. 需要修改上边提到的启动脚本 mxnet-test.sh
# 机器 1 上的 启动 shell 脚本 mxnet-test.sh
docker run -d --env-file /tmp/mxnet_env/worker  \
--name worker_1 \
-v /mnt/mxnet-test/incubator-mxnet:/incubator-mxnet \
-w /incubator-mxnet/example/gluon/ \
--net=host mxnet/python:latest_gpu \
python3 image_classification.py --dataset cifar10 --model vgg11 --epochs 10 --kvstore dist_sync_device --gpus 0

docker run -d --env-file /tmp/mxnet_env/server  \
--name server_1 \
-v /mnt/mxnet-test/incubator-mxnet:/incubator-mxnet \
-w /incubator-mxnet/example/gluon/ \
--net=host mxnet/python:latest_gpu \
python3 image_classification.py --dataset cifar10 --model vgg11 --epochs 10 --kvstore dist_sync_device --gpus 0

docker run -d --env-file /tmp/mxnet_env/scheduler  \
--name scheduler \
-v /mnt/mxnet-test/incubator-mxnet:/incubator-mxnet \
-w /incubator-mxnet/example/gluon/ \
--net=host mxnet/python:latest_gpu \
python3 image_classification.py --dataset cifar10 --model vgg11 --epochs 10 --kvstore dist_sync_device --gpus 0

这里主要修改了 3 部分:
1)换了一个 image ,该 image 支持 gpu 运算
2)修改了 python3 命令。将 --kvstore 参数改为 dist_sync_device ,这是 gpu 支持的。 --kvstore 支持 4 个参数,详细内容在https://mxnet.incubator.apache.org/versions/master/faq/distributed_training.html 查看。
3)修改了 python3 命令。添加了 --gpus 0 参数。这是让 python 程序执行时使用 gpu ,如果使用两个 gpu,可写作–gpus 0,1 。具体内容也可以到上述页面查找。
 
另外,机器 2 上的 mxnet-test.sh 也需要做对应修改。

结论

已经实现了手动分布式 训练,那么离 自动化 实现分布式训练就不困难了。
 
可以通过 k8s 或者 mesos 进行集群管理,通过调用 api 启动 指定数目的 worker 和 server 容器,并指定硬件资源,确定是否使用 ib 卡等。
 
如果有更好的实现 分布式训练 MXNet ,欢迎留言讨论。

跨时钟域传输数据——单bit和多bit信号(总结) 总结单bit和多bit信号的跨时钟域传输 阅读详情

相关推荐

分位数回归和stata

分位数回归与stata 找了半天也没找到我想看的那种完整点的stata教程,只好自己写一个了… 参考教材:《用STATA学微观计量经济学》&《高级计量经济学及STATA应用_第2版》 第一部分 纯理论 更加详细的百度吧,很长很长,这里主要是拿来和ols比较。ols是均值回归,求解的方法是残差的平方最小,而这里就是对残差的绝对值用分位数做惩罚。(思想了解一下即可) 第二部分 Stata...

Joycezzz的博客 1万+

解析ps-lite源码中的local.sh启动脚本

local.sh的内容如下: #!/bin/bash # set -x if [ $# -lt 3 ]; then echo "usage: $0 num_servers num_workers bin [args..]" exit -1; fi export DMLC_NUM_SERVER=$1 shift export DMLC_NUM_WORKER=$1 shift bin...

fkuner的博客 441

DSMA时序修复避坑指南:当Setup和Hold互卡时,除了调Margin还能做什么?

本文深入探讨DSMA时序修复中的Setup与Hold互锁问题,提供7种高阶策略,包括优先级判断、高级参数组合、单元类型智能替换等,帮助工程师突破时序收敛瓶颈。特别针对fix_eco_timing命令的隐藏参数和物理协同优化进行详细解析,助力芯片设计实现时序收敛。

weixin_30162121的博客 298

mxnet-docker部署方法

mxnet-docker部署方法要点基本流程docker的安装生成自定义镜像镜像的部署及验证使用docker运行服务最后列一个各种软件包的版本列表 要点 最近有一个基于深度学习平台mxnet开发的cv类小项目,按客户要求需要部署在客户内网的服务器,安装、部署、使用阶段都无法连接互联网。在云端用apt-get\yum\pip能安装搞定的事,在这样的环境下都无法使用。所以使用docker的方式部署就是...

crmlei163com的博客 970

Android PackageManagerService 总结(一)应用市场下载安装apk流程

前言: 本篇文章是对系统包安装流程的总结,基于Android12 上 com.android.packageinstaller 源码的分析,第三方应用商城(华为商城,小米商城,应用宝,豌豆荚,酷安等)下载安装应 用,在普通安装和静默安装app两种方式下,对代码流程的梳理和讲解。 触发安装: 当你在商城界面中点击安装按钮,应用会自动下载,下载完成后就会调起系统安装应用的界面,此种触发方式一般是通过Intent 隐式调用的,我们先阅读如下代码: ......

u012514113的专栏 1万+

【自动驾驶端到端5:VADv2: End-to-End Vectorized Autonomous Driving via Probabilistic Planning】

从大规模人类驾驶演示中学习类人驾驶策略是有希望的。但是,规划的不确定性使得从驾驶演示中提取驾驶知识是有挑战性的。从统计学习的角度来看,动作(包括实际和速度)是高度随机的,受许多无法建模的潜在因素影响。

weixin_40000560的博客 1406

新手必看:Astrid RFC模板使用指南与最佳实践

Astrid RFC模板是参与Astrid agent runtime开发的重要工具,它提供了标准化的提案格式,帮助开发者清晰表达功能需求、设计思路和技术细节。本指南将详细介绍Astrid RFC模板的使用方法和最佳实践,让你快速掌握如何编写符合规范的RFC文档。 ## 什么是Astrid RFC RFC(Request for Comments)即请求评论,是Astrid项目中用于提出、讨论

gitblog_00859的博客 438

RK3588, FFmpeg 拉流 RTSP, mpp 硬解码转RGB

RK3588, FFmpeg 拉流 RTSP, mpp 硬解码转RGB

J。 2342

MXNet安装-docker

方法一:基于镜像nvidia/cuda:10.0-cudnn7-devel apt-get update apt-get install python2.7 apt-get install python-pip #pip install --upgrade pip#更新pip pip install mxnet-cu100 方法二:基于镜像mxnet/python:1.5.0_gpu_cu100_py2 ##避免安装opencv-python报错 #apt-get -y install libg

qq_44716044的博客 1616

20251121更新纷玩岛

【代码】20251121更新纷玩岛。

猫敷雪 1021

如何使用Google Maps API爬取地理数据:详细教程与Python实现

Google Maps API 是一组服务的集合,允许开发者访问地图、地点、路线等地理信息。:将地址转换为地理坐标,或将地理坐标转换为地址。:计算两点之间的行车路线、步行路线等。Places API:获取附近的地点、商店、餐馆等。:计算多个地点之间的距离和时间。在接下来的代码中,我们将结合这些 API,展示如何获取并处理地理数据。本文详细介绍了如何使用 Google Maps API 获取地理数据,涵盖了从地址转经纬度、获取地点详情、计算路线、计算多个地点的距离与时间等多个功能。

2201_76125261的博客 733

docker 安装 mxnet

1.根据自己的需求安装mxnet:https://hub.docker.com/u/mxnet 2.拉取镜像: nvidia-docker pull mxnet/python:1.5.0_gpu_cu90_py2 3.通过docker images查看镜像 4.通过镜像创建mxnet-insightface守护式容器 nvidia-docker run -...

baici9608的博客 479

超详细!Linux 服务器 6 大核心性能测试(附自动脚本 + 结果分析秘籍)---Linux 服务器性能测试文档

本文档旨在提供 Linux 服务器的 CPU、内存和磁盘性能测试方案,包括详细的测试大纲、操作步骤以及一键化测试脚本,帮助管理员快速评估服务器性能状况。通过以上测试方案,可以全面评估 Linux 服务器的 CPU、内存和磁盘性能,为系统优化、容量规划和问题排查提供重要参考依据。使用 sysbench 进行 CPU 基准测试。使用 sysbench 测试内存读写性能。使用 fio 工具进行更全面的磁盘测试。使用 dd 命令测试磁盘顺序读写性能。使用 dd 命令测试内存读写速度。记录磁盘 IO 性能。

jundao1997的专栏 381

MXNet 在云平台 CPU 实例上的部署指南:pip、Docker 与 AWS Deep Learning AMI 三种方案

本文以 MXNet 官方安装文档中面向“云平台 CPU 实例”的安装指引为核心,系统讲解在任意云厂商纯 CPU 实例上部署 MXNet 的三种主流方式:Python pip 安装、Docker 容器安装,以及 AWS Deep Learning AMI 预装环境。读完本文,你将掌握各方案的适用场景、具体命令、MKL-DNN 加速包的选型规则,以及如何在云上快速验证 MXNet 是否可用。 ##

gitblog_01111的博客 1114

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Apache MXNet 云上 CPU 实例部署指南:pip / Docker 安装与 AWS Deep Learning AMI 实战

Apache MXNet 可以运行在任意云厂商提供的纯 CPU 实例上,无需 GPU 即可完成模型训练与推理。本指南以 MXNet 官方 Get Started 的 Cloud CPU 安装说明为主体,完整覆盖三条路径——Python pip 安装、Docker 镜像部署,以及免安装的 AWS Deep Learning AMI 预置环境,并结合仓库内的安装文档、Dockerfile 与验证脚本,

gitblog_00990的博客 1025

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

在 AWS 云上部署与训练 Apache MXNet 的四种实战路径指南

Apache MXNet 的深度学习训练往往需要远超单机的能力——不仅包括一块或多块 GPU 的算力,还包括多台机器构成的集群。本指南基于 MXNet 官方文档《MXNet on the Cloud》,系统梳理在 AWS 上使用 MXNet 的四种主流方式(Amazon SageMaker、AWS Deep Learning AMI with Conda、AWS Deep Learning Con

gitblog_00278的博客 829

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

在云端部署 Apache MXNet GPU 训练环境:主流云厂商方案与 NVIDIA NGC 容器实战

本文基于 Apache MXNet 官方入门文档中的云端 GPU 部署指南,系统梳理在主流云厂商(AWS、GCP、Azure、阿里云、Oracle Cloud)上搭建 MXNet GPU 训练/推理环境的完整路径,包括各厂商提供的预装镜像、托管服务与容器方案。读完本文,你将掌握如何选择云上 GPU 部署方式、如何借助 NVIDIA NGC 的 MXNet Docker 容器快速拉起 GPU 环境,

gitblog_00793的博客 700

MXNet 云端部署与 AWS GPU 集群分布式训练实战指南

深度学习训练往往需要极其强大的硬件资源,且使用时长难以预先精确预估;同时,MXNet 框架本身能够充分利用多块 GPU 和多台机器进行并行加速。因此,以 AWS 为代表的云计算服务天然适合深度学习的训练场景——你可以随时按需拉起多台配备多块 GPU 的实例,并按需精确控制资源的使用时长。本指南以 [cloud.md](https://link.gitcode.com/i/a07d04609385b

gitblog_00526的博客 606

MXNet GPU 云端部署指南:主流云厂商 GPU 实例选型与 NVIDIA 容器方案

GPU 算力是深度学习训练与大规模推理的核心瓶颈,将 MXNet 部署到云端 GPU 实例,可以按需获取多卡算力并精确控制资源占用时间。本文基于 [docs/static_site/src/_includes/get_started/cloud/gpu.md](https://link.gitcode.com/i/3167067c369f6cfc2e59382050873933) 的官方指引,系统

gitblog_01118的博客 483

MXNet 云端部署实战指南:从 AWS SageMaker 到 EC2 深度学习环境的四种完整方案

本文以 MXNet 官方文档 [cloud.md](https://link.gitcode.com/i/1b548333a6a41e77be8e259e0eeaab93) 为核心骨架,系统讲解如何在 AWS(Amazon Web Services)云上运行 MXNet 深度学习训练与推理:既包括 SageMaker 这种开箱即用的托管服务,也包括 Deep Learning AMI、Deep L

gitblog_00084的博客 376

MXNet macOS 安装指南:使用 Docker 容器运行 CPU 版 MXNet(Python)

本篇技术指南讲解如何在 macOS 上通过 Docker 容器快速部署 MXNet 的 Python CPU 版本。围绕 [docs/static_site/src/_includes/get_started/macos/python/cpu/docker.md](https://link.gitcode.com/i/eb22a9b0896a0f252282b64ad65deefe) 的完整步骤展

gitblog_00814的博客 491

Apache MXNet 云端 GPU 部署指南:主流云平台选项、NVIDIA 容器与自建 GPU 构建实践

本篇技术指南以 Apache MXNet 官方文档中的云端 GPU 部署章节为核心,系统梳理 MXNet 在阿里云、AWS、Google Cloud、Microsoft Azure、Oracle Cloud 等主流云平台上使用 GPU 的落地路径,涵盖托管训练服务、预装镜像、NVIDIA VM 与 NGC Docker 容器等选项,并补充许可证边界提示、CUDA 版本匹配规则以及基于本仓库源码的

gitblog_00730的博客 853

MXNet 在 AWS 上的部署实战指南:EC2、SageMaker 与 S3 数据集成

Apache MXNet 的设计目标之一是轻量、便携、灵活,并天然支持分布式与移动端深度学习。当训练规模超出单机能力时,AWS 提供的弹性 GPU 实例、托管训练平台与对象存储便成为 MXNet 最具性价比的搭档。本文以仓库中 [run-on-aws 教程](https://link.gitcode.com/i/a2b937219fbc5c1322faed6c5432c53d) 为骨架,完整讲解在

gitblog_00735的博客 423

使用 Horovod 实现 MXNet 分布式训练:从环境搭建到性能调优完整指南

Horovod 是一个面向大规模集群的分布式深度学习训练框架,本文基于 Apache MXNet 仓库中的 [example/distributed_training-horovod](https://link.gitcode.com/i/e2b5f37d45cb74e4056b6b03cf861cec) 示例目录,系统讲解如何在 MXNet 上使用 Horovod 进行多机多卡分布式训练。读完本

gitblog_00035的博客 923

MXNet Scala API 实战指南:从张量计算到图像推理与分布式训练

MXNet 为 Scala 语言提供了完整的深度学习编程接口(Scala API)。借助该接口,你可以在 Scala 中直接编写高效的多 GPU 张量/矩阵计算代码,并基于符号式编程(Symbolic API)构造、定制与执行深度学习模型,将其应用于图像分类、数据科学等任务;通过 Infer API 与 KVStore API,还能完成单图/批量推理与多 GPU、多主机分布式训练。本文以官方 Sc

gitblog_01093的博客 743

MXNet 测试指南:从 C++ 单元测试(CMake/CTest/Ninja)到 Docker 内 Python 测试的完整实践

本文是 Apache MXNet 仓库中 [tests/README.md](https://link.gitcode.com/i/234612776f0b78169aa839f81ac4f4c9) 的深度实战指南。全文围绕两条主线展开:一是使用 CMake + CTest(或 Ninja)编译并运行 C++ 单元测试,二是借助 `ci/build.py` 在 Docker 容器内执行 Pytho

gitblog_00686的博客 869
上一篇: 白皮书:InfiniBand简介
下一篇: Deep Learning:PyTorch 基于docker 容器的分布式训练实践
github_37320188
博客等级 码龄10年 24粉丝 86原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值