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博客](https://blog.csdn.net/skywalk8163/article/details/137955738 "安装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 "\", line 1, in \ 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包都可以安装了,不管是科学计算还是人工智能,统统到碗里来!

相关推荐
java1234_小锋1 分钟前
Scikit-learn Python机器学习 - 分类算法 - 线性模型 逻辑回归
python·机器学习·scikit-learn
IT_陈寒3 分钟前
SpringBoot高并发优化:这5个被忽视的配置让你的QPS提升300%
前端·人工智能·后端
索迪迈科技4 分钟前
机器学习投票分类
人工智能·机器学习·分类
君名余曰正则8 分钟前
机器学习08——集成学习(Boosting、Bagging、结合策略)
人工智能·机器学习·集成学习
小鑫同学14 分钟前
M4 MacBook Pro + Qwen 模型:企业问答机器人原型微调实战方案
人工智能·llm
倔强的石头_20 分钟前
你的 Python 为什么“优雅地慢”?——读《极速Python:高性能编码、计算与数据分析》
python
搬砖的小码农_Sky24 分钟前
机器人商业化落地需要突破的关键性技术
人工智能·ai·机器人
luoganttcc24 分钟前
PyTorch 中nn.Embedding
pytorch·深度学习·embedding
xwz小王子26 分钟前
Science Robotics 封面论文:RoboBallet利用图神经网络和强化学习规划多机器人协作
人工智能·神经网络·机器人
程序猿 小项目大搞头27 分钟前
视频加水印,推荐使用运营大管家-视频批量加水印软件
python