如何在 Centos6 中部署 PyTorch?

Posted

技术标签:

【中文标题】如何在 Centos6 中部署 PyTorch?【英文标题】:How to deploy PyTorch in Centos6? 【发布时间】:2021-10-12 09:30:47 【问题描述】:

最近想在centos6上运行一些pytorch代码。但是,无论我执行“pip install torch”还是“conda install torch”,提示都会显示:

>>>  import torch
Traceback (most recent call last):
File "", line 1, in
File "XXX/anaconda3/envs/XXX/lib/python3.6/site-packages/torch/init.py", line 56, in
from torch._C import *
ImportError: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by XXX/anaconda3/envs/XXX/lib/python3.6/site-packages/torch/_C.cpython-36m-x86_64-linux-gnu.so)

My enviroment:
OS: CentOS release 6.7
How you installed PyTorch (conda, pip, source): pip & conda
Python version: 3.6.5

我尝试手动编译 glibc-2.19,但是当我将库路径放入 LD_LIBRARY_PATH 时,我无法使用“ls”、“make”等命令,并且出现“段错误”。我也试过只是将 *.so 复制到 python 虚拟环境下的 lib 目录,难怪,python 因“段错误”而崩溃。我知道很多组件都依赖于特定的 glibc 库。我只是想知道如何在不切换到新的 linux 发行版的情况下在 centos6 上运行 pytorch。

PS:我需要在产品环境上部署这样的python环境,操作系统是centos6。

【问题讨论】:

仅供参考,centos 6 已经到了生命的尽头 (wiki.centos.org/About/Product) 如果可以在centos 6机器上安装docker或者其他容器技术,可以安装容器化的pytorch环境。 就我而言,产品环境是不可改变的,我没有其他选择,例如重新安装操作系统或使用容器技术。 【参考方案1】:

这是一个艰难的过程。你可以降级到一个非常旧版本的 torch(我记得 v0.3.1 在 Centos 6.5 上运行良好),或者升级到 Centos 7。拥有​​ 2 个版本的 glibc 简直就是地狱。

如果您确实需要 Centos 6 来支持最新版本的 Torch,请尝试将 glibc 安装到非标准位置并从源代码编译 Python 和 pytorch。

更新

您不能替换系统的 glibc,但可以将其安装在其他位置,例如 /opt/myglibc。 Pytorch 自 v0.4.1 起停止支持 Centos 6。因此,您必须使用 gcc v5+ 构建它并将其链接到您的 glibc 版本。这是instructions。但是由于您不直接调用 pytorch,因此您还需要构建 Python。然后,您可以通过专门为您的程序设置 glibc 路径来运行您的程序。

LD_LIBRARY_PATH=/opt/myglibc python my_program.py

【讨论】:

如果我在 Centos 6 上使用较新的 glibc 手动编译 Python 和 PyTorch,这是否意味着它应该可以工作?只要有效,我就可以忍受这些混乱。不确定的是最新版本的PyTorch的来源是否需要高版本的glibc。 根据this penn state blog post和this pytorch discussion,编译pytorch的最低glibc似乎是2.14。 centos 6 可能会有 2.12。这两个链接都建议编译更新版本的 glibc(并将其放在类似 /opt/glibc 的地方)。

以上是关于如何在 Centos6 中部署 PyTorch?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 TensorFlow、Keras 或 PyTorch 中部署 CoreML 模型?

如何将pytorch模型部署到安卓

如何将pytorch模型部署到安卓

PyTorch参数模型转换为PT模型

pytorch部署torchscript篇

CV模型部署Flask部署pytorch分类模型