python安装pytorch@FreeBSD

先上结论,最后在conda下安装成功了!

PyTorch是一个开源的人工智能深度学习框架,由Facebook人工智能研究院(FAIR)基于Torch库开发并维护。PyTorch提供了一个高效、灵活且易于使用的工具集,用于构建和训练深度学习模型。

pip 安装

在FreeBSD系统下pip安装pytorch,报错

bash 复制代码
Building wheels for collected packages: pytorch
  Building wheel for pytorch (setup.py) ... error
  error: subprocess-exited-with-error
  
  × python setup.py bdist_wheel did not run successfully.
  │ exit code: 1
  ╰─> [6 lines of output]
      Traceback (most recent call last):
        File "<string>", line 2, in <module>
        File "<pip-setuptools-caller>", line 34, in <module>
        File "/tmp/pip-install-08n_s_43/pytorch_94d503f93a464e71b575ea1cfef78bdc/setup.py", line 15, in <module>
          raise Exception(message)
      Exception: You tried to install "pytorch". The package named for PyTorch is "torch"
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for pytorch
  Running setup.py clean for pytorch
Failed to build pytorch
ERROR: Could not build wheels for pytorch, which is required to install pyproject.toml-based projects

安装pyproject

bash 复制代码
 pip install pyproject

再pip 安装pytorch还是同样的报错:

Building wheels for collected packages: pytorch

Building wheel for pytorch (setup.py) ... error

error: subprocess-exited-with-error

× python setup.py bdist_wheel did not run successfully.

│ exit code: 1

╰─> [6 lines of output]

Traceback (most recent call last):

File "<string>", line 2, in <module>

File "<pip-setuptools-caller>", line 34, in <module>

File "/tmp/pip-install-n_l8ufvy/pytorch_20c01d7c94e04917a97f282d03e31d92/setup.py", line 15, in <module>

raise Exception(message)

Exception: You tried to install "pytorch". The package named for PyTorch is "torch"

[end of output]

note: This error originates from a subprocess, and is likely not a problem with pip.

ERROR: Failed building wheel for pytorch

查找帮助说:

运行编译过程中出现错误,并提示"Too many arguments to functions call, expected...."的信息:

遇到这种情况时,该如何解决呢?解决方法是将属性"Enable Strict Checking of objc_msgSend Calls"的值设置成"No",即TARGETS------>项目------>Build Settings------>Apple LLVM 6.0 - Preprocessing------>Enable Strict Checking of objc_msgSend Calls

pkg安装

到pkg里发现有现成的pytorch包,于是pkg 安装:pkg install pytorch

报错冲突:

bash 复制代码
Proceed with this action? [y/N]: y
[1/1] Fetching libdca-0.0.7_1.pkg: 100%  113 KiB 115.3kB/s    00:01    
Checking integrity... done (2 conflicting)
  - pytorch-2.2.1 conflicts with libfmt-10.2.1 on /usr/local/include/fmt/args.h
  - pytorch-2.2.1 conflicts with libfmt-10.2.1 on /usr/local/include/fmt/args.h
Cannot solve problem using SAT solver, trying another plan
Checking integrity... done (0 conflicting)
Conflicts with the existing packages have been found.
One more solver iteration is needed to resolve them.
The following 2 package(s) will be affected (of 0 checked):

Installed packages to be UPGRADED:
	libdca: 0.0.7 -> 0.0.7_1

Installed packages to be REINSTALLED:
	pkg-1.21.1

Number of packages to be upgraded: 1
Number of packages to be reinstalled: 1

Proceed with this action? [y/N]: 

根据提示,是pytorch和fmt文件冲突了。删除libfmt包试试

pkg remove libfmt

删除之后再安装pytorch,会自动再安装上libfmt并继续报冲突。

pip安装python39-pytorch包

pkg install py39-pytorch

安装好之后导入torch报错:

>>> import torch
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.9/site-packages/torch/__init__.py", line 237, in <module>
    from torch._C import *  # noqa: F403
ImportError: /usr/local/lib/python3.9/site-packages/torch/lib/libtorch_cpu.so: Undefined symbol "_ZN4onnx7checker11check_modelERKNS_10ModelProtoEbbb"

源码编译安装

下载源代码

git clone --depth 2 https://github.com/pytorch/pytorch

设置环境变量

# 直接在终端中输入即可,重启需要重新输入
export USE_CUDA=0
export USE_DISTRIBUTED=0
export USE_MKLDNN=0
export MAX_JOBS=8

编译

cd pytorch
mkdir build
cd build
cmake ..
make -j 8

报错

-- Private Dependencies : Threads::Threads;cpuinfo;fbgemm;fp16;caffe2::openmp;foxi_loader;rt;fmt::fmt-header-only;kineto;dl

-- Public CUDA Deps. :

-- Private CUDA Deps. :

-- USE_COREML_DELEGATE : OFF

-- BUILD_LAZY_TS_BACKEND : ON

-- USE_ROCM_KERNEL_ASSERT : OFF

-- Configuring incomplete, errors occurred!

配置这里就没有过去。这个报错指向了这里

CMake Error at third_party/FP16/CMakeLists.txt:94 (ADD_SUBDIRECTORY):

The source directory

/home/skywalk/github/pytorch/third_party/psimd

does not contain a CMakeLists.txt file.

原来psimd目录是空的啊,删除这个目录,然后执行:

third_party]$ git submodule update --init --recursive

问题解决。后面发现foxi 、 sleef目录也是空的,同样处理,先删除目录,再git submodule update

现在终于cmake成功了,然后make:

make install -j 8

编译到40%左右的时候报错

In file included from /home/skywalk/github/pytorch/aten/src/ATen/native/sparse/ValidateCompressedIndicesKernel.cpp:1:
/home/skywalk/github/pytorch/aten/src/ATen/native/sparse/ValidateCompressedIndicesCommon.h:93:9: error: too many arguments provided to function-like macro invocation
        "`0 <= crow_indices[..., 1:] - crow_indices[..., :-1] <= ncols` is not satisfied.");
        ^
/usr/include/assert.h:52:9: note: macro '_assert' defined here
#define _assert(e)      ((void)0)
        ^
In file included from /home/skywalk/github/pytorch/aten/src/ATen/native/sparse/ValidateCompressedIndicesKernel.cpp:1:
/home/skywalk/github/pytorch/aten/src/ATen/native/sparse/ValidateCompressedIndicesCommon.h:97:9: error: too many arguments provided to function-like macro invocation
        "`0 <= ccol_indices[..., 1:] - ccol_indices[..., :-1] <= nrows` is not satisfied.");
        ^
/usr/include/assert.h:52:9: note: macro '_assert' defined here
#define _assert(e)      ((void)0)
        ^
In file included from /home/skywalk/github/pytorch/aten/src/ATen/native/sparse/ValidateCompressedIndicesKernel.cpp:1:

更新源代码:

~/github/pytorch]$ git pull

还是这个报错

h:112:24: error: too many arguments provided to function-like macro invocation _assert(invariant, "`0 <= row_indices < nrows` is not satisfied.");

改方法,python安装

python setup.py develop --cmake

报错:

[533/2242] Building CXX object c10/test/CMa.../c10_Scalar_test.dir/core/Scalar_test.cpp.o

FAILED: c10/test/CMakeFiles/c10_Scalar_test.dir/core/Scalar_test.cpp.o

又重新安装下,报错:

/usr/home/skywalk/github/pytorch/c10/test/core/Scalar_test.cpp:53:10: error: conversion from 'long long' to 'c10::Scalar' is ambiguous

Scalar longlongOne = 1LL;

^ ~~~

/usr/home/skywalk/github/pytorch/c10/core/Scalar.h:59:7: note: candidate constructor

DEFINE_IMPLICIT_CTOR)

ports 编译安装

安装时会有一些库安装的比较慢,可以采取各种方法改进,比如手工下载文件然后放到/usr/ports/distfiles目录里。pkg手动安装一些依赖库,比如:

pkg install psimd
pkg install kineto

cd /usr/ports/misc/pytorch 
make install 
===>  Installing for pytorch-2.1.2
===>  Checking if pytorch is already installed
===>   Registering installation for pytorch-2.1.2
Installing pytorch-2.1.2...
pkg-static: pytorch-2.1.2 conflicts with libfmt-10.2.1 (installs files into the same place).  Problematic file: /usr/local/include/fmt/args.h
*** Error code 1

Stop.
make[1]: stopped in /usr/ports/misc/pytorch
*** Error code 1

还是安装的时候报冲突

conda安装pytorch

参考这篇文档:安装Miniconda@FreeBSD13-CSDN博客

使用linux-miniconda-install安装miniconda

pkg search miniconda

pkg install linux-miniconda-installer

运行安装程序

miniconda-installer 

This miniconda requires python3.8.  Install lang/python38 and try again.

当然我自己是用的笨方法安装的,

手动安装miniconda

下载软件:

wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh

设置和启动linux兼容服务,需要在root账户下执行

kldload linux64
sysrc linux_enable="YES"
service linux start

将linux的md5sum放在路径第一位:

export PATH=/compat/linux/usr/bin:$PATH

安装

执行兼容linux命令安装,因为我们的bash不是默认的FreeBSD /bin下的,而是/compat/linux/bin/下的。 后面跟下载的Miniconda文件名。 -u参数是覆盖安装,即如果指定的安装目录存在,则不退出,而是继续覆盖安装。

执行命令:

 /compat/linux/bin/bash Miniconda3-py310_23.9.0-0-Linux-x86_64.sh -u

激活conda

source ~/miniconda3/bin/activate

使用conda安装pytorch

conda install pytorch

哦也,没设置conda镜像安装速度也挺快!测试:

python

Python 3.10.13 (main, Sep 11 2023, 13:44:35) [GCC 11.2.0] on linux

Type "help", "copyright", "credits" or "license" for more information.

import pytorch

>>> import pytorch

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

ModuleNotFoundError: No module named 'pytorch'

>>> import torch

x = torch.randn(>>> x = torch.randn((2,3))

>>> y = x+1

>>> y

tensor([[0.3041, 1.6502, 0.2174],

[2.3316, 0.0055, 1.1459]])

测试通过!

总结

真是好事多磨,终于安装好pytorch拉!最终安装好miniconda,后面一通百通了!什么python包都可以安装了,不管是科学计算还是人工智能,统统到碗里来!

相关推荐
innutritious23 分钟前
车辆重识别(2020NIPS去噪扩散概率模型)论文阅读2024/9/27
人工智能·深度学习·计算机视觉
PythonFun24 分钟前
Python批量下载PPT模块并实现自动解压
开发语言·python·powerpoint
Death20027 分钟前
Qt 6 相比 Qt 5 的主要提升与更新
开发语言·c++·qt·交互·数据可视化
机器视觉知识推荐、就业指导30 分钟前
使用Qt实现实时数据动态绘制的折线图示例
开发语言·qt
醒了就刷牙1 小时前
56 门控循环单元(GRU)_by《李沐:动手学深度学习v2》pytorch版
pytorch·深度学习·gru
炼丹师小米1 小时前
Ubuntu24.04.1系统下VideoMamba环境配置
python·环境配置·videomamba
橙子小哥的代码世界1 小时前
【深度学习】05-RNN循环神经网络-02- RNN循环神经网络的发展历史与演化趋势/LSTM/GRU/Transformer
人工智能·pytorch·rnn·深度学习·神经网络·lstm·transformer
GFCGUO1 小时前
ubuntu18.04运行OpenPCDet出现的问题
linux·python·学习·ubuntu·conda·pip
快乐就好ya1 小时前
Java多线程
java·开发语言
CS_GaoMing2 小时前
Centos7 JDK 多版本管理与 Maven 构建问题和注意!
java·开发语言·maven·centos7·java多版本