因为实验原因要在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,这可能有几个原因:
-
创建一个交换文件:
sudo fallocate -l 5G /swapfile # 创建一个大小为5GB的交换文件
-
设置正确的文件权限:
sudo chmod 600 /swapfile # 设置文件权限,确保只有root可以读写
-
将文件设置为交换空间:
sudo mkswap /swapfile # 格式化文件为交换空间
-
启用交换文件:
sudo swapon /swapfile # 启用交换空间
-
使交换空间永久有效:
将以下行添加到/etc/fstab
文件中,以便在系统启动时自动启用交换文件:echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
检查交换空间是否启用
运行 free -h
或 swapon -s
来检查交换空间是否已经成功启用。
4. 下载、编译pytroch(pytorch v2.3.1 python 3.8 )
在树莓派上安装 PyTorch 可以是一个挑战,特别是对于 ARM64 架构。由于 PyTorch 官方并没有为 ARM 架构提供预编译的二进制包,你可能需要从源代码编译或使用第三方提供的预编译版本。以下是一些可能的方法来在树莓派的 Ubuntu 20.04 ARM64 架构下安装 PyTorch:
从源代码编译 PyTorch
从源代码编译 PyTorch 是一个更通用但也更耗时的方法。以下是编译 PyTorch 的基本步骤:
-
安装依赖:
sudo apt update sudo apt install python3-pip libopenblas-dev libblas-dev m4 cmake cython python3-dev python3-yaml python3-setuptools
-
增加交换空间(可选,但推荐以避免内存不足,):
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
-
克隆 PyTorch 源代码:
(方法1)直接git
git clone --recursive https://github.com/pytorch/pytorch cd pytorch
(方法2)github下载最新版本的release,自行解压。
-
设置编译选项:
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
- 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" (在这个命令时,让我填写信息,照填就行/) (填写用户名和邮箱:)
- 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 #下载该包
-
编译 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,希望能继续顺利下去!奥利给!