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

相关推荐
FAREWELL0007510 小时前
Lua环境的配置 和 Lua的一些简单语法逻辑
开发语言·lua
AAA阿giao10 小时前
用 AI 工程师 Trae Solo ,一个人打造“绘本岛”:从想法到上线只需三步
人工智能·全栈·trae
Blossom.11810 小时前
大模型量化压缩实战:从FP16到INT4的生产级精度保持之路
开发语言·人工智能·python·深度学习·神经网络·目标检测·机器学习
K2_BPM10 小时前
打通 AI 与业务的 “最后一公里”:流程优化的底层逻辑与三种战略选择
人工智能·机器学习
Ro Jace10 小时前
三国华容道(横刀立马)移动策略
android·java·数据库·人工智能·深度学习·神经网络·游戏
linuxxx11010 小时前
Django 缓存详解与应用方法
python·缓存·django
taxunjishu10 小时前
Modbus TCP 转 Modbus RTU物联网网关实现光伏产线西门子与罗克韦尔PLC互联
人工智能·物联网·工业物联网·工业自动化·总线协议
User_芊芊君子10 小时前
从“能说会道”到“自主思考”:一文读懂AI的过去、现在与未来
人工智能·chatgpt
野生工程师10 小时前
【Python爬虫基础-3】数据解析
开发语言·爬虫·python