脸书AI首席开发布道师:如何贡献PyTorch代码

640?wx_fmt=jpeg

全文共9175字,预计学习时长18分钟

640?wx_fmt=png
图片来源:redcharlie Unsplash

本文作者是Facebook的机器学习/人工智能首席开发布道师,为其麾下的PyTorch团队助力,曾经是一名软件工程师。

值得注意的是,在之前,作者从未使用过PyTorch。他将用自己的亲身经历告诉你:PyTorch并不难学。

640?wx_fmt=jpeg

PyTorch内容集锦

PyTorch及其工作原理:

640?wx_fmt=png

• PyTorch是Facebook开发的深度学习框架,用于快速灵活实验。这是一个基于Python的计算软件包,含有 C++后端API。

• PyTorch的Python前端有三个不同部分:

Torch

这是一个包含多维张量与数学运算的数据结构包。

Torch.nn

用于创建并训练神经网络。区域块的导入数据以张量形式传递。

例如:为处理图像而训练卷积神经网络时,可使用nn.conv2D模块(这一想法来自笔者同事塞斯)。

Torch.optim

该优化算法可训练神经网络。

例如:适用于初学者的SGD或适合进阶者的Adam等算法,都可训练神经网络(这个好例子也源自塞斯)。

Tensors(张量)

PyTorch的Tensors 与Numpy数组类似。不同之处在于,Tensors数据可以是单个数字,或一维矩阵(向量),或囊括各种数据的多维结构。

算梯度即求导(没错,机器学习即微积分)。求出张量的梯度,便可最大程度地规避错误。

梯度下降这一算法能有效实现错误最小化。错误由数据决定,而数据的分类也有适当与不适当之别。

通过梯度降低不当分类项目数。

张量最重要的特点即自动跟踪梯度。每个张量中的数据代表神经网路的连接层。这其中,有三点值得一提:

• 阶 (rank): 确定张量的维数。例如,向量为一阶。

• 形状 (shape): 行数和列数,表现形式为tensor. Size ([x]). 

• 数据类型 (type): 给张量元素所指定的数据类型。

PyTorch的神经网络训练循环如下:确定目标函数、迭代输入其他数据、将数据运用于神经网络、执行梯度操作减少误差,将异常参数运用于神经网络。

在神经网络中重复迭代整个训练数据集即可。

C++ 后端

C++“后端”有五个不同部分。 

• Autograd: 自动求导,即张量上的记录操作,进而生成自动求导图,基本上依据梯度张量求导。

• ATen: 张量及数学运算库。

• TorchScript: 连接TorchScript的JIT编译器与解释器的界面(JIT为“即时”)

• C++前端: 训练与评价机器学习模型的高级构造。

• C++ 扩展: 通过自定义C++与CUDA的例程扩展,扩展Python的API.

CUDA (计算机统一设备架构) 是由Nvidia推出的并行计算架构及应用程序界面 (API) 模型。

上述内容皆援引自维基百科,总的来说,CUDA常用于GPU上的各项操作。

GPU即图像处理器。可将其视为具有强大运算力的电脑。

“说好的概览呢?这些知识点简直让人摸不着头脑。”虽然上述内容的确晦涩难懂,但它们至关重要。

若想对相关知识有深入全面的了解,请参阅优达课程(https://classroom.udacity.com/courses/ud188)并阅读PyTorch docs(https://pytorch.org/docs/stable/index.html)这份资料,必能让你获益匪浅。

那份资料并不着眼于PyTorch的方方面面,而是帮助读者开始给GitPyTorch开源数据库贡献代码(https://github.com/pytorch/pytorch)。

在这份repo中,你可根据上述信息,自行推断大量所含文件夹的内容。

640?wx_fmt=jpeg

搭建开发环境

贡献任何代码之前,务必阅读CONTRIBUTING.md这份文档(https://github.com/pytorch/pytorch/blob/master/CONTRIBUTING.md),切勿有所遗漏。这是笔者从血泪中总结出的教训。

若条件允许,无论是处理Python还是C++问题,最好都借助GPU。

还可采用其他途径(如AWS DLAMI或Nvidia Docker),这会显著提升运行速度。

作为初学者,笔者犯下的第一个错误就是在本地电脑上开工。由于本地电脑性能不够强大,各种令人困惑头疼的段错误也就层出不穷。

最终,笔者用SSH、MOSH、TMUX等登陆GPU服务器,效果极佳。如果想就此做好准备,可参阅以下博文:

• HPC上的GPU运算简介:安装GPU与SSH

https://sydney-informatics-hub.github.io/training.artemis.gpu/setup.html

• PyTorch必备——GPU

https://discuss.pytorch.org/t/solved-make-sure-that-pytorch-using-gpu-to-compute/4870

• GPU内存须知 </

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值