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

相关推荐
羲云网络几秒前
AI API 门户上线不难,难的是让用户完成第一次调用
人工智能·产品运营·api·开发者·acedatacloud
视觉小萌新17 分钟前
AI Class 3 · Chapter 2-3:函数、异常、文件读写+JSON / JSONL 读写(小白版)
人工智能·python·json
Zhao-Jichao26 分钟前
AI Prompting for Everyone 课程笔记 - P21 总结 Conclusion
人工智能·笔记
阿里云大数据AI技术26 分钟前
EMR Serverless StarRocks 全面支持 Paimon 2.0:构建多模态统一分析与检索
人工智能
电科_银尘31 分钟前
【深度学习项目实战·11】损失函数与评价指标:让模型输出、标签与结果真正对应
人工智能·深度学习
RanceGru1 小时前
AI嵌入式7——瑞芯微RK3588s+RK1828 NPU 部署VLM模型(Qwen3-VL-2B)
人工智能
Julien20041 小时前
管理机密(一)
运维·服务器·开发语言·学习方法
Chen_harmony1 小时前
七、STL与string类
开发语言·c++
沐晓时光1 小时前
C语言入门,字符串和字符串函数知识讲解
c语言·开发语言
阿里云大数据AI技术1 小时前
云栖实录 | 具身智能前沿对话
人工智能