因为我是特邀用户,所以我拿到了内部优惠的大师码,如果要购买其他GPU云服务器的话,可以在付款的时候输入我的大师码2323,可以再享受9折优惠。

  当然你也可以购买装好环境的Notebook,或者是按照时常购买。Notebook好处是预装了各种环境,上手可用,但是缺点是不支持定制化,一些操作不太方便。毕竟有了云服务器可以自己搭建Notebook,但是Notebook并不支持服务器的功能。

  如果你想要使用其他云服务器平台,可以查看我之前的文章

  想要学深度学习但是没有GPU?我帮你找了一些不错的平台

  环境配置

  为了防止一些小白租借了机器不会用,接下来提供一下配置环境的详细教程(基于滴滴云)。如果你用的别家的服务器,由于环境不一定完全相同,所以可能并不一定适用,只能当做参考。

  总之我们整个流程是:安装Python3,安装jupyter,配置jupyter远程访问,安装Pytorch。

  这些是明面上的流程,如果机器环境不健全,还会有一些隐藏流程。比如说普通的Linux环境需要配置apt-get,还需要下载git,wget等常用工具。如果没有cuda驱动的话,还需要自己安装cuda配置。如果其中的步骤出现了问题,还需要分析问题的原因解决问题。所以说配置环境说起来简单,但是实际操作的时候问题并不少。

  安装Python3

   yum install python36

  安装 jupyter notebook

   sudo pip3 install ipython jupyter notebook lab

  设置jupyter的密码

   jupyter notebook password

  生成jupyter notebook的配置,这个配置默认不存在,需要我们通过这个命令来生成。

   jupyter notebook --generate-config

  运行之后,会返回配置文件所在的路径:

  我们用vim打开,修改其中的几行:

   c.NotebookApp.ip='0.0.0.0'

    c.NotebookApp.open_browser = False
    c.NotebookApp.port =8888 # 可以自己指定

  我们需要将本地的端口和远程进行绑定,这样我们就可以在本地打开远程的jupyter了。这一行代码当中我们将本地的8899绑定了远程的8888端口。这里的8888端口就是上面配置当中的远程的jupyter端口。

   ssh dc2-user@116.85.10.225 -L 127.0.0.1:8899:127.0.0.1:8888

  如果你喜欢的话,还可以安装一下jupyter lab

   sudo pip3 install jupyterlab

  使用方法和notebook类似,在远程执行命令开启jupyter

   jupyter lab --allow-root

  启动没有问题的话,我们在本地访问::8899就可以打开Jupyter,输入密码之后就可以使用了。

  当我们用完了云服务器之后,要记得删除机器。但由于平台机器数量有限,根据当前平台的设置,关机之后依然会为用户保留资源,但是前提是需要付费。如果你是按时租的服务器显然不能接受自己没在使用还需要付费。针对这个问题,我们可以通过快照来解决。我们在关机之前先创建快照:

  云服务器配置教程_猎鹰登陆器普及版配置教程_传奇单机登陆器配置教程

  然后删除云服务器,下次重新创建服务器的时候选择从快照创建。这样下次创建的机器还可以保留当前的配置和数据,而且也不需要扣费了。如果你嫌麻烦的话,还可以加我的微信联系我,我帮你找到工作人员加入关机免扣费的白名单。

  我们用pip安装一下Pytorch和一些其他需要用到的包。安装好了,之后,我们通过torch.cuda.is_avaiable()查看一下cuda的情况,如果输出是True,那说明已经安装好了。

  猎鹰登陆器普及版配置教程_传奇单机登陆器配置教程_云服务器配置教程

  tensor

  Pytorch当中很重要的一个概念就是tensor,它直译过来是张量,TensorFlow当中的tensor也是这个意思。我们可以认为tensor是一个高维的数组。当它是0维的时候就是一个数,一个标量。当它是一维的时候就是一个向量,二维的时候是一个矩阵,多维的时候是高维的数组。它和Numpy当中的数组类似,不过Tensor可以使用GPU进行加速。

  我们通过torch当中的接口来初始化tensor,和Numpy当中的数组类似,它支持好几种初始化的方式。

  empty函数创建一个指定大小的未初始化的tensor,当中的元素内容是不可保证的。

  传奇单机登陆器配置教程_云服务器配置教程_猎鹰登陆器普及版配置教程

  rand创建一个随机初始化的数组:

  传奇单机登陆器配置教程_猎鹰登陆器普及版配置教程_云服务器配置教程

  ones和zeros创建全是0或者全是1的数组:

  云服务器配置教程_猎鹰登陆器普及版配置教程_传奇单机登陆器配置教程

  我们可以传入类型指定元素的类型

  猎鹰登陆器普及版配置教程_云服务器配置教程_传奇单机登陆器配置教程

  我们也可以通过现成的数组创建tensor:

  这些创建函数都有对应的like方法,可以传入一个已有的tensor,创建出一个和它一样大小的新的tensor来。

  这里只是列举了常用的几种,官方的api当中还有其他的几种创建tensor的方式:

  除此之外,tensor还支持从numpy的数组当中创建,我们可以利用from_numpy函数来实现:

  猎鹰登陆器普及版配置教程_传奇单机登陆器配置教程_云服务器配置教程

  同理,我们也可以通过numpy函数,从一个tensor得到numpy的数组:

  传奇单机登陆器配置教程_云服务器配置教程_猎鹰登陆器普及版配置教程

  还可以通过tolist方法将tensor转化成Python的数组:

  猎鹰登陆器普及版配置教程_传奇单机登陆器配置教程_云服务器配置教程

  我们在创建tensor的时候不仅可以指定它们的类型,还可以指定它们存放的设备。比如是CPU还是GPU。当然前期我们暂时用不到这点,只需要记得即可。

  总结

  这是Pytorch的第一篇文章,我们简单了解了一下这个框架,以及它当中tensor这个数据结构。简单来说,我们可以用常用的Numpy去类比它。基本上Numpy当中有的功能它都有,它还有一些自己特性Numpy没有的api。但不管怎么说,万变不离其宗,tensor的用处就是为了方便我们处理数据的。

  关于Pytorch中tensor的用法还有很多,实在是没有办法在一篇文章当中穷尽,所以这里只是简单介绍,具体的用法将会放在下一篇文章当中,让我们下周再见吧。

  如果喜欢本文,可以的话,请点个关注,给我一点鼓励,也方便获取更多文章。

最后修改:2024 年 08 月 16 日
如果觉得我的文章对你有用,请随意赞赏