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包都可以安装了,不管是科学计算还是人工智能,统统到碗里来!

相关推荐
Brilliant Nemo9 分钟前
Vue2项目中使用videojs播放mp4视频
开发语言·前端·javascript
白白白飘22 分钟前
pytorch 15.1 学习率调度基本概念与手动实现方法
人工智能·pytorch·学习
深度学习入门27 分钟前
机器学习,深度学习,神经网络,深度神经网络之间有何区别?
人工智能·python·深度学习·神经网络·机器学习·机器学习入门·深度学习算法
TNTLWT28 分钟前
Qt控件:交互控件
开发语言·qt
量化金策31 分钟前
震荡指标工具
开发语言
北漂老男孩33 分钟前
ChromeDriver进程泄漏问题分析与最佳实践解决方案
开发语言·爬虫
李迟38 分钟前
Golang实践录:在go中使用curl实现https请求
开发语言·golang·https
张彦峰ZYF1 小时前
走出 Demo,走向现实:DeepSeek-VL 的多模态工程路线图
人工智能
森哥的歌1 小时前
Python uv包管理器使用指南:从入门到精通
python·开发工具·uv·虚拟环境·包管理
qq_214782611 小时前
给你的matplotlib images添加scale Bar
python·数据分析·matplotlib