【无标题】

MXNet 是亚马逊(Amazon)选择的深度学习库,并且也许是最优秀的库之一。它拥有类似于 Theano 和 TensorFlow 的数据流图,为多 GPU 配置提供了良好的配置,有着类似于 Lasagne 和 Blocks 更高级别的模型构建块,并且可以在你可以想象的任何硬件上运行(包括手机)。对 Python 的支持只是其冰山一角—MXNet 同样提供了对 R、Julia、C++、Scala、Matlab,和 Javascript 的接口。
MXNet 是一个旨在提高效率和灵活性的深度学习框架。像MXNet这样的加速库提供了强大的工具来帮助开发人员利用GPU和云计算的全部功能。虽然这些工具通常适用于任何数学计算,但MXNet特别强调加速大规模深度神经网络的开发和部署。特别是,我们提供以下功能:
• 设备放置:使用MXNet,可以轻松指定每个数据结构的生存位置。
• 多GPU培训:MXNet可以通过可用GPU的数量轻松扩展计算。
• 自动区分:MXNet自动执行曾经陷入神经网络研究的衍生计算。
• 优化的预定义图层:虽然您可以在MXNet中编写自己的图层,但预定义的图层会针对速度进行优化,优于竞争库。
MXNet 官方自我评价:MXNet结合了高性能,干净的代码,高级API访问和低级控制,是深度学习框架中独一无二的选择。
1、优缺点
优点:

  1. 速度的标杆

  2. 灵活的编程模型:非常灵活。支持命令式和符号式编程模型以最大化效率和性能。

  3. 从云端到客户端可移植:可运行于多CPU、多GPU、集群、服务器、工作站甚至移动智能手机。

  4. 多语言支持:支持七种主流编程语言,包括C++、Python、R、Scala、Julia、Matlab和JavaScript。事实上,它是唯一支持所有 R 函数的构架。

  5. 本地分布式训练:支持在多CPU/GPU设备上的分布式训练,使其可充分利用云计算的规模优势。

  6. 性能优化:使用一个优化的C++后端引擎并行I/O和计算,无论使用哪种语言都能达到最佳性能。

  7. 云端友好,可直接与S3,HDFS和Azure兼容
    缺点:

  8. 最小的社区

  9. 比 Theano 学习更困难一点
    2、相关文章
    MXNet: A Flexible and Efficient Machine Learning Library for Heterogeneous Distributed Systems
    在这里插入图片描述

     MXnet是一个多语言机器学习(ML)库,用于简化ML算法的开发,特别是对于深度神经网络。它嵌入在宿主语言中,将声明性符号表达式与命令式张量计算混合在一起。它提供自动微分来推导梯度。MXnet具有计算和内存效率高的特点,可以在各种异构系统上运行,从移动设备到分布式GPU集群。本文介绍了MXnet的API设计和系统实现,并解释了如何统一处理符号表达式和张量操作的嵌入。我们的初步实验表明,在使用多个GPU机器的大规模深度神经网络应用中,有着很好的结果。
    

3、相关链接
官网地址 :Apache MXNet | A flexible and efficient library for deep learning.
GitHub地址01:https://github.com/dmlc/mxnet
GitHub地址02:https://github.com/apache/incubator-mxnet/tree/master/example
MXNet - Python API:http://mxnet.incubator.apache.org/api/python/index.html#python-api-reference
PyPi地址:mxnet · PyPI https://pypi.org/project/mxnet/

MXNet 的安装

1、第一次安装

pip install --upgrade mxnet
# for pytorch
pip install torch==1.6.0+cpu torchvision==0.7.0+cpu -f https://download.pytorch.org/whl/torch_stable.html

pip install --upgrade gluoncv
# Here we assume CUDA 10.2 is installed. You can change the number
# according to your own CUDA version.

# for mxnet
pip install --upgrade mxnet-cu102
# for pytorch
pip install torch==1.6.0 torchvision==0.7.0

pip install --upgrade gluoncv
# for mxnet


pip install --upgrade mxnet -f https://dist.mxnet.io/python/all
# pytorch
pip install --pre torch torchvision torchaudio -f https://download.pytorch.org/whl/nightly/cpu/torch_nightly.html
git clone https://github.com/dmlc/gluon-cv
cd gluon-cv && python setup.py install --user

MxNet中,可以通过gpu_device=mx.gpu()来创建GPU的context

gpu_device=mx.gpu() # Change this to mx.cpu() in absence of GPUs.
 
 
def f():
    a = mx.nd.ones((100,100))
    b = mx.nd.ones((100,100))
    c = a + b
    print(c)
# in default mx.cpu() is used
f()
# change the default context to the first GPU
with mx.Context(gpu_device):
    f()

2、参数同步:当我们使用多个GPU来训练模型时,gluon.Trainer会自动做数据并行,例如划分小批量数据样本并复制到各个GPU上,对各个GPU上的梯度求和再广播到所有GPU上。这样,我们就可以很方便地实现训练函数了。

loss = gloss.SoftmaxCrossEntropyLoss()
 
def train(num_gpus, batch_size, lr):
    train_iter, test_iter = gb.load_data_fashion_mnist(batch_size)
    ctx = [mx.gpu(i) for i in range(num_gpus)]
    print('running on:', ctx)
    net.initialize(init=init.Normal(sigma=0.01), ctx=ctx, force_reinit=True)  # 网络初始化于各个设备
    trainer = gluon.Trainer(
        net.collect_params(), 'sgd', {'learning_rate': lr})  # 优化器会自动识别net对象的设备列表
    for epoch in range(1, 6):
        start = time()
        for X, y in train_iter:
            gpu_Xs = gutils.split_and_load(X, ctx)  # 数据划分到各个设备
            gpu_ys = gutils.split_and_load(y, ctx)
            with autograd.record():
                ls = [loss(net(gpu_X), gpu_y) for gpu_X, gpu_y in zip(
                    gpu_Xs, gpu_ys)]  # 记录各个设备的损失函数
            for l in ls:
                l.backward()  # 各个设备分别反向传播
            trainer.step(batch_size)  # 优化时自动同步各个设备参数
        nd.waitall()
        print('epoch %d, training time: %.1f sec'%(epoch, time() - start))
        test_acc = gb.evaluate_accuracy(test_iter, net, ctx[0])
        print('validation accuracy: %.4f'%(test_acc))
 
train(num_gpus=2, batch_size=512, lr=0.3)
在这里插入代码片
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

皮肤小白生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值