Linux服务器上安装TensorFlow,Pytorch以及Mindspore (虚拟环境下源代码安装方法)

  之前,在我的博客《Linux查看磁盘的使用》https://www.cnblogs.com/theda/p/15535844.html

  已经给出了在linux服务器上的anaconda3的安装方法和流程。

  安装好了之后在服务器上就能够使用python了。

  

  让我们回忆一下,在windows上,已经安装了anaconda3之后,是怎么在vscode上继续安装TensorFlow的

     第一次安装TensorFlow的时候,还不知道虚拟环境这个东西。当时使用的是师兄的电脑,电脑上已经安装好了anaconda这个软件,当时我还不知道anaconda这个软件,也不知道虚拟环境这个东西,但是不管怎么样最终稀里糊涂按照不知道哪篇教程就成功安装好了TensorFlow,并且还安装到了虚拟环境当中,也就是anaconda的envs当中。

  而且对于虚拟环境的理解也是一波三折。

  最后才知道:

  

   成功在虚拟环境当中安装好TensorFlow之后,直接这个命令就能进入虚拟环境。切换虚拟环境的一个显著的区别就是python的版本的改变。activate TensorFlow之后,直接python调出来的就是支持TensorFlow的python的版本。

  然后在之前的经验的基础上,我就想把Pytorch也安装在虚拟环境当中。

  安装过程我在我的博客https://www.cnblogs.com/theda/p/15364852.html当中详细地记载了。

  安装方法就是,首先创建一个Pytorch的虚拟环境。这一步可以在Anaconda Prompt当中轻松完成。之后进入Pytorch的虚拟环境下,运行安装官方网站的对应本机器版本的安装命令即可轻松完成Pytorch的安装。

  现在的问题就是,在Linux服务器上,如何成功安装MindSpore?  

  大概了解了一下之后,其实安装方法和安装Pytorch的安装方法是差不多的。

  首先需要在Linux服务器上创建一个MindSpore的虚拟环境。

  首先这个网站https://www.mindspore.cn/install,非常重要。我们安装的是cpu版本的mindspore,所以:

  

     这幅图告诉了我们需要安装3.7.5版本的python。

  那么我们就在anaconda上安装一个含有3.7.5版本的python的Mindspore的虚拟环境。

  问题等价于,如何在linux服务器上安装指定版本的python虚拟环境

  方法很简单:

  

   这样就能创建名字为mindsporeenv,python版本为3.7.5的虚拟环境了。

  插播一下,anaconda会有一个自带的环境(base):

  

   这样就能显示当前系统中的所有环境了,包含了之前的mindsporeenv以及base。

  安装好虚拟环境后,就如同在Windows下安装好TensorFlow之后,进入虚拟环境的命令是:activate tensorflow,退出虚拟环境的命令是deactivate。在linux服务器的环境上,假如虚拟环境下的虚拟目录名为xxx,那么进入虚拟环境的命令是source activate xxx,退出虚拟环境的命令是source deactivate。如果和Windows上一样输入activate xxx,那么就会输出:

  

  那么为什么会有这种区别呢?Linux下的这个source是什么来头?为什么需要在这里添加一个source?(这个问题没有得到解决)

   那么我们就探究一下这个问题。activate和deactivate都是anaconda3/bin目录下的可执行文件。而activate或者deactivate后面的虚拟环境名 xxx,将作为参数被传入这两个可执行文件当中。

   然后我们看一下之前为anaconda3添加到环境变量的命令:

  vim ~/.bashrc

  export PATH=/home/username/anaconda3/bin:$PATH

  还有source activate和conda activate是差不多一样的。但是有一个需要注意的事情就是:

   所以现在已经安装好了虚拟环境,那么现在就正式进入mindspore的安装了。我们首先看一下安装官网上的安装配置要求:

              

  我们可以确认第一个和第四个要求已经得到满足了。所以首先安装GCC7.3.0版本。但是在安装gcc之前,有三个前置安装包,一个是mpc,一个是gmp,一个是mpfr。安装的顺序依次为:gmp,mpfr, mpc,最后安装gcc。

  所以我们首先就安装gmp 6.1.2版本。

  安装之前,我们先申明一下,安装gcc这个软件要使用源代码安装方法安装,以及为什么要这样安装。

  首先介绍一下什么是源代码安装方法安装:

  可以参考这篇博客:https://blog.csdn.net/llh47519587/article/details/90444941。在linux上使用源代码安装的方法是一种相当专业的安装方法,安装是有一定的固定的套路和流程的。

  我们首先使用源代码安装方法安装gmp 6.1.2版本。

  下载的文件是:

  

   按照源代码安装方法的传统惯例,我们在username目录下安装一个叫做local的目录。然后将gmp-6.1.2.tar.xz这个压缩文件移动到local目录下。

  之后就是.tar.xz这个格式的文件的解压。解压的时候,这是两层的压缩。

  首先输入xz -d gmp-6.1.2.tar.xz,解压得到

   然后就是.tar格式的文件的解压,tar -xvf gmp-6.1.2.tar,运行这个命令之后就解压完成了。ls之后在local目录显示如下:

  

  之后按顺序执行如下指令:

  (该安装方法参照博客:https://blog.csdn.net/lwbeyond/article/details/77718040)

  $ cd gmp-6.1.2

  $ mkdir temp

  $ cd temp

  $ ../configure --prefix=/usrname/local/gmp-6.1.2

  $ make

  $ make install

  那么怎么才能知道gmp是否安装成功了呢?

  继续安装mpfr。

  已知需要安装GCC7.3.0版本,并且已经安装了gmp6.1.2版本。那么mpfr需要安装什么版本的呢?

  我从https://blog.csdn.net/With__Sunshine/article/details/80509949这篇博客看到了安装GCC7.3.0需要:

  

  那么现在按照同样的方法安装mpfr 3.1.4版本

  可以从http://mirror.linux-ia64.org/gnu/gcc/infrastructure/这个镜像网站上下载。

  下载成功:

  

  同样移动到local文件夹下。

   

   

  这样就完成了解压。

  按照下述命令进行安装:

  $ cd mpfr-3.1.4
  $ mkdir temp
  $ cd temp

  $ ../configure --prefix=/usr/local/mpfr-3.1.4 --with-gmp=/usr/local/gmp-6.1.2
  $ make
  $ make install

  然而遇到了问题,输入:

  $ ../configure --prefix=/usr/local/mpfr-3.1.4 --with-gmp=/usr/local/gmp-6.1.2的时候,提示:"/usr/local/gmp-6.1.2" shall be a valid directory???给我整不会了,这个目录显然是有效的呀?然后我把安装命令改为了:$ ../configure --prefix=/home/usr/local/mpfr-3.1.4 --with-gmp=/home/usr/local/gmp-6.1.2,这下开始安装了,可是最后还是报错了:

  

  大概就是gmp没有安装好吧。。。那我猜测是不是安装gmp的时候也需要加上绝对路径。。。试一试吧。

  可以了!!!就是把所有的路径改为绝对路径(前面加上/home),感觉https://blog.csdn.net/u014786330/article/details/115824646这个老哥遇到的问题和我一样。

  现在进入mpc1.0.3版本的安装。

  还是在前面提到的镜像网站上下载。

   

  

   

  这样就完成了解压。同样地,按照下述命令进行安装:

  $ cd mpc-1.0.3
  $ mkdir temp
  $ cd temp

  $ ../configure --prefix=/home/usr/local/mpc-1.0.3 --with-gmp=/home/usr/local/gmp-6.1.2 --with-mpfr=/home/usr/local/mpfr-3.1.4

  $ make
  $ make install

  三个包全部安装成功。

  接下来就是一个大问题:

  在我现在看的https://blog.csdn.net/lwbeyond/article/details/77718040这篇博客的安装教程当中,接下来需要,并且在这个文件当中输入:

/home/usr/local/gmp-6.1.2/lib
/home/usr/local/mpfr-3.1.4/lib
/home/usr/local/mpc-1.0.3/lib

  并且在输入完之后,执行ldconfig。

  但是在linux服务器上,我没有修改/home/usr目录之外的文件的权限呀。。。看起来只能另外寻找安装方法了。再次明确一下,gcc7.3.0安装所需要的三个前置安装包我们都已经全部安装好了。

  所以直接搜索:没有root权限怎么源代码安装GCC,按照https://blog.csdn.net/qq_36573282/article/details/79762028这篇博客。

  一开始我想要把旧版本的gcc给卸载掉,然而很快就发现这是不现实的。输入which gcc查看gcc的安装目录:

  

  这个usr不是代指我现在的用户名的usr,而是真正的usr。所以对这个gcc我是没有操作权限的。

  因此我安装的gcc应该是在我的用户目录下的一个新的gcc。

  

  

  现在还参考了https://www.shuzhiduo.com/A/MyJx8WLAJn/这篇文章来安装gcc。

  输入 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/usr/local/gmp-6.1.2/lib:/home/usr/local/mpfr-3.1.4/lib:/home/usr/local/mpc-1.0.3/lib/。(大概了解了一下export仅仅只在此次shell生效,不太明白为什么要输入这个,但是感觉这个的功效大抵等同于前面的vim /etc/ld.so.conf)(这条命令是参照博客https://www.shuzhiduo.com/A/MyJx8WLAJn/写的)

  然后还是从镜像网站上下载gcc7.3.0:https://mirror.linux-ia64.org/gnu/gcc/releases/gcc-7.3.0/。

  

  

  

  gcc解压完成。

  $cd gcc-7.3.0

  $mkdir build

  $cd build

  $ ../configure --prefix=/home/usr/local/gcc-7.3.0 --enable-threads=posix --disable-checking --enable--long-long --enable-languages=c,c++ --with-gmp=/home/usr/local/gmp-6.1.2 --with-mpfr=/home/usr/local/mpfr-3.1.4 --with-mpc=/home/usr/local/mpc-1.0.3

  然后报错了:

  

  显然这个错误与multilib有关。

  上面的这个gcc的安装命令还是参照https://blog.csdn.net/lwbeyond/article/details/77718040这篇博客写的。

  然后结合https://www.shuzhiduo.com/A/MyJx8WLAJn/这篇博客的安装命令:./configure –prefix=/usr/local/gcc –enable-threads=posix -disable-checking –disable-multilib –enable-languages=c,c++ –with-gmp=/usr/local/gmp –with-mpfr=/usr/local/mpfr/ –with-mpc=/usr/local/mpc/ &&make &&make install,我觉得可以加上 --disable-multiple。

  所以最终的输入命令为:

  $ ../configure --prefix=/home/usr/local/gcc-7.3.0 --enable-threads=posix --disable-checking --disable-multilib --enable--long-long --enable-languages=c,c++ --with-gmp=/home/usr/local/gmp-6.1.2 --with-mpfr=/home/usr/local/mpfr-3.1.4 --with-mpc=/home/usr/local/mpc-1.0.3

  然后运行(注意命令间全部用空格隔开)

  

  这样应该就可以进入下一步的步骤了。

  $make

  $make install

  make需要等待的时间巨长。

  搞好了之后,我们发现新的gcc所在的目录为/home/usr/local/gcc-7.3.0/bin

  加入到环境变量。vim ~/.bashrc

  加入export PATH=/home/usr/local/gcc-7.3.0/bin:$PATH

  最后再来一次 source ~/.bashrc就可以愉快地使用7.3.0版本的gcc了。

  这里还搞出了一个新的问题,那就是我第一次往环境变量里加这句话的时候,忘记加$PATH了,结果就出事了。输入ls结果发现ls都执行不了了。这是因为我对于$PATH(注意大写!)是什么东西当时懵里懵懂,$PATH就是环境变量!:$PATH的作用就是将新的环境变量加入到旧的环境变量当中去。自己亲自输入 echo $PATH,就能清楚地知道$PATH的内容,以及为什么要这样写。

  那么当时不能使用ls,关键是不能使用vim,这样就不能够修改~/.bash,那么我是怎么(在师兄一个人的操作下)将~/.bash正确地修改回来的呢?

  当时,惊讶地发现echo还能够使用,所以直接echo $PATH,将环境变量打印出来。因为vim,ls说到底就是环境变量当中的可执行文件,我们只要知道它们的源文件在哪里,就能够直接按照绝对路径访问它们。

  以下就是师兄的输入

  echo $PATH

  /usr/bin/cat ~/.bashrc

  /usr/bin/vim ~/.bashrc

  修改好~/.bashrc之后,由于source不能用,重启之后~/.bashrc就生效了。

 

  回到Mindspore的安装上来,现在已知我们已经安装好了GCC7.3.0。

  https://www.mindspore.cn/install,根据这篇网站可以简单安装mindspore。

  最后发现还是GMP库没有成功安装。报错.

  给出一个测试gmp是否成功安装的例子:

#include "stdio.h" //hello world 工程默认的,如果你建立的是空工程就不需要这句

#include "gmp.h"//记得引入GMP.H的头文件

int main(int argc, char* argv[])

{

mpz_t t; //mpz_t 为GMP内置大数类型

mpz_init(t); //大数t使用前要进行初始化,以便动态分配空间

mpz_ui_pow_ui(t, 2, 100); //GMP所有函数基本都是以mpz打头

gmp_printf("2^100=%Zd\n", t); //输出大数,大数的格式化标志为%Zd

mpz_clear(t);

return 0;
}
编译: gcc -o name -lgmp -lm name.c
运行:./name
运行结果:
2^100=126765060022822940149670320537

  

 

   

  https://cloud.tencent.com/developer/article/1828724

  最终参照这篇文章终于搞好了。就是库没有装全的问题。

  配置GMP时,默认情况下不启用C++支持。解压缩该软件包,并使用以下命令进行配置:./configure --prefix=/usr/local --enable-cxx-这还将安装gmpxx.h header 以及libgmpxx.dylib和/或libgmpxx.a库。之前就是没有启用C++支持,所以缺少了libgmpxx.so.4这个文件。

 

  之后只花了几分钟就完成了pytorch的安装,不过不是源码安装。首先创建一个3.6.1的python版本的虚拟环境,然后上pytorch官网,选中这段话,直接就安装好了。

  之后的TensorFlow的安装同样快到飞起。(只安装1.0版本的TensorFlow!!!)

  直接创建一个3.6版本的python虚拟环境,然后,如果是CPU版本的TensorFlow,pip install tensorflow==1.14.0 -i https://pypi.tuna.tsinghua.edu.cn/simple,如果是gpu版本的话,pip install tensorflow-gpu==1.14.0 -i https://pypi.tuna.tsinghua.edu.cn/simple。直接起飞~

 

 

 

 

 

  存疑的问题:setenv.sh这个文件有什么用?是可以新建一个虚拟环境配置吗?和vim ~/.bashrc有什么关系呢?local ,以及src。源码安装问题,make编译是怎么一个流程。发现我现在对于linux的环境变量的了解还是不够足够,可以看一下下面这篇博客:https://www.cnblogs.com/tinywan/p/7224011.html

 

posted @ 2021-11-13 17:04  TheDa  阅读(755)  评论(0编辑  收藏  举报