树莓派4B ubuntu 20.04 server编译安装Pytorch

因为实验原因要在pi上安装pytorch,下面是安装记录,虽然经历一点坎坷,但也是顺利装上了!希望能给大家一点帮助!

1.安装Miniconda3(没成功,算了)

为了更好的隔离python环境,并且有轻量化效果,我们选用更加轻量化的miniconda3。

方法:https://docs.anaconda.com/miniconda/ 从这个网址下载,因为网速问题,我从win上下载,通过 ssh 传输到树莓派中。

2.安装virtualenv(python的虚拟环境工具)

   pip install virtualenv
   
   virtualenv gnn        # 建一个gnn的虚拟环境
   
   source ~/gnn/bin/activate    #激活环境    (这里默认将gnn建立在~里, 所以是这样。如果环境有变动,也是需要改变的。)

  
   #查看自己环境的python,pip的路径,看是否正确:
   which python  
   which pip

退出环境:

deactivate 

3.设置交换内存空间(防止编译期间raspberry pi内存爆掉)

在 Ubuntu 系统中,如果你看到交换空间(Swap)的大小为 0,这可能有几个原因:

  1. 创建一个交换文件

    sudo fallocate -l 5G /swapfile  # 创建一个大小为5GB的交换文件
    
  2. 设置正确的文件权限

    sudo chmod 600 /swapfile  # 设置文件权限,确保只有root可以读写
    
  3. 将文件设置为交换空间

    sudo mkswap /swapfile  # 格式化文件为交换空间
    
  4. 启用交换文件

    sudo swapon /swapfile  # 启用交换空间
    
  5. 使交换空间永久有效
    将以下行添加到 /etc/fstab 文件中,以便在系统启动时自动启用交换文件:

    echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
    

检查交换空间是否启用

运行 free -hswapon -s 来检查交换空间是否已经成功启用。

4. 下载、编译pytroch(pytorch v2.3.1 python 3.8 )

在树莓派上安装 PyTorch 可以是一个挑战,特别是对于 ARM64 架构。由于 PyTorch 官方并没有为 ARM 架构提供预编译的二进制包,你可能需要从源代码编译或使用第三方提供的预编译版本。以下是一些可能的方法来在树莓派的 Ubuntu 20.04 ARM64 架构下安装 PyTorch:

从源代码编译 PyTorch

从源代码编译 PyTorch 是一个更通用但也更耗时的方法。以下是编译 PyTorch 的基本步骤:

  1. 安装依赖

    sudo apt update
    sudo apt install python3-pip libopenblas-dev libblas-dev m4 cmake cython python3-dev python3-yaml python3-setuptools
    
  2. 增加交换空间(可选,但推荐以避免内存不足,):

    sudo fallocate -l 5G /swapfile
    sudo chmod 600 /swapfile
    sudo mkswap /swapfile
    sudo swapon /swapf来ile
    echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
    

    查看交换空间的方法

    top    
    #或者是
    free -h
    
    
  3. 克隆 PyTorch 源代码

    (方法1)直接git

    git clone --recursive https://github.com/pytorch/pytorch
    cd pytorch
    

    (方法2)github下载最新版本的release,自行解压。

  4. 设置编译选项

    export NO_CUDA=1
    export NO_DISTRIBUTED=1
    export NO_MKLDNN=1 
    export NO_NNPACK=1
    export NO_QNNPACK=1
    

    期间报错的问题如下:

    gnn) nudt@nudt:~/pytorch_install/pytorch-v2.3.1$ python3 setup.py bdist_wheel
    fatal: not a git repository (or any of the parent directories): .git
    Building wheel torch-2.3.0a0+gitUnknown
    Traceback (most recent call last):
      File "setup.py", line 345, in <module>
        cmake = CMake()
      File "/home/nudt/pytorch_install/pytorch-v2.3.1/tools/setup_helpers/cmake.py", line 40, in __init__
        self._cmake_command = CMake._get_cmake_command()
      File "/home/nudt/pytorch_install/pytorch-v2.3.1/tools/setup_helpers/cmake.py", line 67, in _get_cmake_command
        raise RuntimeError("no cmake or cmake3 with version >= 3.18.0 found")
    RuntimeError: no cmake or cmake3 with version >= 3.18.0 found
    
    1. Git 仓库问题

    错误信息 fatal: not a git repository (or any of the parent directories): .git 表示当前目录不是一个 Git 仓库。这通常发生在从压缩包解压的源代码中,因为压缩包通常不包含 .git 目录。虽然这个问题不会阻止编译过程,但可能会影响构建过程中的某些 Git 依赖��操作,如版本号的生成。

    虽然这个 Git 问题不是阻止编译的直接原因,但如果你想避免相关的警告或错误,可以在解压的源代码目录中初始化一个新的 Git 仓库
    git init
    git add .
    git commit -m "Initial commit"   (在这个命令时,让我填写信息,照填就行/)
    
    (填写用户名和邮箱:)
    
    1. CMake 版本问题

    错误信息 RuntimeError: no cmake or cmake3 with version >= 3.18.0 found 指出没有找到符合版本要求(3.18.0 或更高)的 CMake。CMake 是一个跨平台的自动化构建系统,PyTorch 使用它来配置和生成必要的构建文件,进行编译。

    解决方案

    1.安装必要的软件包:

     sudo apt-get install -y software-properties-common lsb-release
    

    2.添加官方 CMake APT 仓库:

       sudo apt-get update
       sudo apt-get install -y apt-transport-https ca-certificates gnupg software-properties-common wget
       wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc | sudo apt-key add -
       sudo apt-add-repository "deb https://apt.kitware.com/ubuntu/ $(lsb_release -cs) main"
       sudo apt-get update
    

    3.安装cmake:

       sudo apt-get install cmake
    

    4.确保安装的版本:

    cmake --version
    

    OK,继续编译。

    又报错:

    问题:缺少typing_extensions 的 Python包。

    解决:

    which python  # 查看python路径
    which pip  # 查看pip路径      
    如果使用的是虚拟环境,正确的路径应该是~/virtualenv/gnn/bin/python
    

    我的虽然是在设置的gnn环境下,但是路径一直不对,于是我又新创建了一个环境。终于对了。

    source ~/virtualenv/gnn2/bin/activate   #激活当前环境
    
    pip install typing_extensions  #下载该包
    
  5. 编译 PyTorch

    python3 setup.py build   #(现在用的是这个命令)
    

这个过程可能需要几个小时,具体时间取决于你的树莓派型号和性能。从上午一直干到下午,小pi都发烧了!

编译后是这样的:
在这里插入图片描述

python setup,py install   # 直接安装
python setup.py develop   # 如果后期对pytorch做源码的修改,会直接在本地生效,不需要重新安装。

6.验证是否安装成功(请注意 ,不可以在源代码的文件夹中运行下面的程序,因为 Python 在尝试导入 PyTorch 时,会错误地加载了源代码目录中的 torch 文件夹,而不是安装后的库中的编译好的 C 扩展。)

import torch
print(torch.__version__)
print(torch.rand(2, 2))

OK,运行成功!
在这里插入图片描述
总结: 这是第一次在pi上编译安装pytorch, 多亏了前人的经验,比想像中要顺利一些。接下来要安装pyg,希望能继续顺利下去!奥利给!

参考文章:梦远花落白衣衫油炸花生米34

  • 22
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值