先上结论,最后在conda下安装成功了!
PyTorch是一个开源的人工智能深度学习框架,由Facebook人工智能研究院(FAIR)基于Torch库开发并维护。PyTorch提供了一个高效、灵活且易于使用的工具集,用于构建和训练深度学习模型。
pip 安装
在FreeBSD系统下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-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
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
报错冲突:
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包都可以安装了,不管是科学计算还是人工智能,统统到碗里来!