1
reus 2019-04-19 12:35:02 +08:00 3
别作死,系统 libc 不要随便升
用一个隔离的环境跑 tensorflow 吧 |
2
sjmcefc2 OP |
3
artandlol 2019-04-19 12:38:48 +08:00 via iPhone
glibc 升级还是注意点,最好是用用包升级
|
4
sjmcefc2 OP 有一次成功再 rhel7 上更新过,当时测试正常。后来又不行了。感觉配置环境每次都要耗费很久时间啊,有没有现成的机器学习和深度学习环境呢?
|
6
ooxxcc 2019-04-19 12:45:21 +08:00 1
搞深度学习这种新玩意就别用 rhel 这种古老的系统了,各种程度上折腾
想办法用 systemd-nspawn 跑个 arch 容器,或者直接 nvidia-docker 算了 |
7
sjmcefc2 OP yum -y update glibc ?
|
9
sjmcefc2 OP yum -y update glibc 提示没包可升级。
|
10
ooxxcc 2019-04-19 12:47:59 +08:00
rhel 7 是 2014 年发行的,你说老不老
关键词都给你了,自己搜一下就好 |
11
sjmcefc2 OP 像搭建一个环境,每次都是搞半天,有没有可以直接拿来用的呢。。。。
|
12
sodora 2019-04-19 12:48:42 +08:00 via Android
你要做的是升级系统,而不是升级 glibc。
|
13
ooxxcc 2019-04-19 12:49:07 +08:00
|
14
sjmcefc2 OP rhel 7.6 貌似还可以吧。。。
|
16
xiaoheijw 2019-04-19 12:51:26 +08:00
不要作死升级 glibc。作为一个生产环境升级过的人,表示系统绝对会崩,而且只有重装这条路
|
19
menyakun 2019-04-19 13:21:43 +08:00
用 docker 正解。还是换个 OS 吧,rhel 装个 docker 都麻烦的不行
|
20
GeruzoniAnsasu 2019-04-19 13:31:39 +08:00
升 libc 是本末倒置,最早我也试图升过,后来想想,为了一个程序的依赖去破坏其它所有程序的依赖,问题不是很大嘛
docker 正解。linux docker 开销很小的 |
21
msg7086 2019-04-19 13:46:11 +08:00 2
@sjmcefc2 #14
10 楼已经说过了,RHEL 7 是 2014 年发行的。别说 7.6,就是 7.998 ,那也是 2014 年发行的。 如果 Tensorflow 需要 glib 2.23 ,而 RHEL 7 没有 glibc 2.23+,那说明 Tensorflow 不支持 RHEL 7,你需要删掉你的系统,然后换一个支持的版本。 而且你有没有想过,你装上了 glibc 2.23 以后,整个系统里那么多依赖 glibc 2.17 的软件怎么办? |
22
wyntalgeer 2019-04-19 13:49:44 +08:00
升 libc=死 ×
换系统 /docker √ |
23
zhanglp888 2019-04-19 13:56:07 +08:00
我建议你了解一下
scl-utils devtoolset-7 安装一个独立的 gcc 环境,替换 libc 有危险 |
24
zhanglp888 2019-04-19 13:57:07 +08:00
yum install scl-utils
yum install devtoolset-7 scl enable devtoolset-7 bash |
25
sjmcefc2 OP 那么换什么系统? linux 好多版本,哪个会更好点?
|
26
msg7086 2019-04-19 14:11:36 +08:00
支持你要用的软件的,就比不支持你要用的软件的,要好一点。
比如说他支持 Ubuntu 16.04+ (这个是 2016 年发行的,比 RHEL 7.x 新 2 年),那你装个 16.04 或者 18.04 就是很好的。 |
28
sjmcefc2 OP centos 可以不(貌似和 rhel 一样)? debian 可以不?
|
29
Ryans 2019-04-19 14:47:33 +08:00
Anaconda 呗,然后 export LD_LIBRARY
|
30
sjmcefc2 OP @Ryans 就是在 anaconda 上 conda install 的 tensorflow。不过 exoport LD_LIBRARY 怎么用呢?稳定不?
|
31
sjmcefc2 OP Manjaro:一种不同的野兽》。---研究了下 linux,真实太多版本了,从未听过。。。。
|
32
SupperMary 2019-04-19 15:40:04 +08:00 via Android
上 docker+1
|
33
rrfeng 2019-04-19 15:41:21 +08:00
libc 是不能升级的,LD_LIBARY 并不能生效
除非用更高级的方式,例如 chroot (不确定),container |
34
openbsd 2019-04-19 15:41:43 +08:00
就等 RHEL8 正式版了
|
35
expy 2019-04-19 15:44:21 +08:00
TF 官方文档:
我们在以下 64 位系统上测试过 TensorFlow 并且这些系统支持 TensorFlow: Ubuntu 16.04 或更高版本 Windows 7 或更高版本 macOS 10.12.6 (Sierra) 或更高版本(不支持 GPU ) Raspbian 9.0 或更高版本 |
36
dosmlp 2019-04-19 15:46:33 +08:00
升级 libc 有系统崩溃的可能,概率还挺大,不要问我怎么知道的- -!
|
37
expy 2019-04-19 15:50:19 +08:00
当然用容器更方便,主机上只有装好 docker 跟显卡驱动,环境镜像里已经打包好。
https://www.tensorflow.org/install/docker |
38
sjmcefc2 OP @openbsd 也是 期待 8 版本,话说为啥 openbsd 是不是被隔绝在大数据、人工智能之外了?貌似上 docker 都难。
@SupperMary docker,那么宿主机用哪个版本的 Linux ?选择困难。真是很多版本的 @rrfeng 这个更高级的形式有点。。。。container 也是容器? 看着好像很多 dl,ml 的 docker image,就是哪个社区比较好,支持比较多。https://github.com/ufoym/deepo 这个看着很好啊。不知道大家都用什么 |
40
expy 2019-04-19 15:59:20 +08:00
@sjmcefc2 理论上新点的系统都能用,刚开始还是用 Ubuntu 的 lts 版本吧( 18.04/16.04 ),用得人最多,软件官方支持,用户踩坑分享的教程也多。
|
41
zycpp 2019-04-19 16:17:13 +08:00 via iPhone
真的勇士,敢于升级 libc👍
|
43
chcx 2019-04-19 16:34:41 +08:00
官方源,yum update 能升的就都给你升了
|
44
artandlol 2019-04-19 16:51:19 +08:00 via iPhone
去找 centos7.4 版本的镜像,镜像里面的 Packages 里面搜索 glibc 和 nscd 的 rpm 包装上就可以。glibc 可以多版本共存,因为你一卸载系统几乎是挂了,多版本可以用你的那个软链接指定
|
46
luassuns 2019-04-19 17:43:44 +08:00 via iPhone
昨天 Debian 8 遇到同样问题,一气之下直接换到 9 的源然后 full upgrade,居然没挂还升级成功了
|
47
junjieyuanxiling 2019-04-19 18:02:21 +08:00 via Android
@sjmcefc2 #38 Docker 利用 Linux 核心中的资源分离机制,例如 cgroups,以及 Linux 核心名字空间(英语:Linux namespaces )( namespaces ),来创建独立的容器( containers )。-- https://zh.m.wikipedia.org/zh-cn/Docker
BSD 能用才有鬼了。 |
49
sjmcefc2 OP @luassuns 运气真好。可是这个真有点碰运气。
@junjieyuanxiling 是啊 bsd 有点落后了 @openbsd 其实还可以做的更多,多精致的系统啊,效率也很高,很稳定 话说有没有什么地方可以直接 docker 各种开发环境的啊,感觉每次配置环境都要搞半天。。。。 |
50
sjmcefc2 OP 看 docker 的文档,貌似 centos 安装起来最简单。
|
51
msg7086 2019-04-19 22:19:51 +08:00
@sjmcefc2 BSD 和 Linux 不完全兼容。很多为 Linux 开发的软件要放到 BSD 上运行可能需要移植。
Docker 在 BSD 上还处于实验性阶段,建议还是 Linux 为好。 话说官方的 Docker 镜像也是基于 Ubuntu 做的,所以你要么在 Docker 里用 Ubuntu,要么直接在母机上用。 除了 Ubuntu 的话那就是和他爹 Debian。Debian 如果再不喜欢的话就只能 Windows 10 了。 Debian 9 相当于 Ubuntu 17.04~17.10 ,正好落在 16.04 和 18.04 中间,所以应该也是能顺利跑的。 @luassuns Debian 跨版本升级还是很靠谱的。 |
52
YRodT 2019-04-19 22:28:28 +08:00 via Android
如果你有其他选择,请更换系统
如果没有,依然是可能做到的,我就在古老的 centos 6 上成功安装并运行了新版 tf 和 pytorch 参照 https://zhuanlan.zhihu.com/p/33059558,切记不要直接替换系统 glibc,而是使用 export LD_LIBRARY_PATH 或修改 bashrc,这样每次重新登录不会导致 ls 等基础命令挂掉。同时配合 patchelf 可以完美运行。 在你执行每个命令前,务必明确了解原理和后果 |
53
sjmcefc2 OP @msg7086 docker 是基于 ubuntu 裁剪的?这样理解对不 /
在 docker 的安装文档里面,貌似 Ubuntu 的安装比 centos 更麻烦一些?不知道为何。 debian 比较爱。不过超爱 bsd 啊,可惜了了。 |
54
sjmcefc2 OP @YRodT 非常感谢。换系统倒也可以,不过还是很想知道这里面的原因。好文章,值得仔细看。另外想着,大家都用什么显卡做 gpu 计算啊,
|
55
feikaras 2019-04-19 22:39:50 +08:00
@sjmcefc2 glibc 是系统基础组建启动的基础啊,所以不要升级只能外挂。版本不对 dll 是动态链接挂不起来的当然会挂掉。vb6 vb5 的 runtime 和 vc 的 03 05 xxx 到 18 runtime 不是都是每个版本要装的。为啥不能直接用最新版的道理一样的。
|
56
acrisliu 2019-04-19 22:40:48 +08:00 via Android
可以试试 ArchLinux
|
57
wwhc 2019-04-19 22:45:03 +08:00
楼主换滚动升级的发行版吧,比如 Gentoo,升级 glibc 和吃饭似的
|
58
ThirdFlame 2019-04-19 22:46:46 +08:00
@sjmcefc2 docker 是个容器,不是说是基于 ubuntu 裁剪的 。 镜像 也有 centos 啊 其他的发行版啊。
|
59
sjmcefc2 OP @ThirdFlame docker 一般的资源啊论坛啊,能介绍一下吗?搜索了一下自己常用的 https://www.rocker-project.org/images/ 好像也都不是最新的哈,还有哪里有 image 的资源和介绍呢。
@wwhc 这个。。。感觉自己能力不够哈。升挂了就歇菜 |
60
yuikns 2019-04-19 22:53:50 +08:00 via iPad
|
61
mxtob 2019-04-19 23:04:39 +08:00 via iPhone
成功折腾过,最终策略把相关的版本全部 rm,然后过了。现在回想起来,映像中就是 linux 中 centos 自带太旧了,ubuntu 一直保持最新没有这些问题,还有 docker 真是一级棒,不怕搞坏内核。搜索问题中,百度基本都是搬国外的,google 给力多了,愿 lz 早日出坑吧
|
62
ThirdFlame 2019-04-19 23:13:17 +08:00
显然是官方 hub 啊 https://hub.docker.com/
不过官方有点慢,可以配置国内镜像 加速拉取 |
63
sjmcefc2 OP |
64
sjmcefc2 OP |
65
ThirdFlame 2019-04-19 23:37:56 +08:00
@sjmcefc2 没搞过 tensorflow 帮不到你。 docker 本身并不麻烦 ,就是为了在不同的环境下 快速搭建相同的 /预设的环境而涉及的。 一开始没必要追求完美,先跑起来才是最重要的。
找到痛点,再次优化,追求完美。 |
66
sjmcefc2 OP @ThirdFlame ok。非常感谢。
|
67
mengzc 2019-04-19 23:45:49 +08:00
```觉得一个 warning 不是什么问题哈```
问题就在这里啊 |
69
wwhc 2019-04-20 00:12:56 +08:00
@sjmcefc2 Gentoo 下基本不存在升挂的问题,升级前系统会进行依赖检查,通不过不让你升,给个最近几年升级 glibc 的纪录:
Sat Oct 29 14:14:19 2016 >>> sys-libs/glibc-2.22-r4 Sat Jan 21 20:30:04 2017 >>> sys-libs/glibc-2.23-r3 Mon Oct 9 14:00:53 2017 >>> sys-libs/glibc-2.23-r4 Sat Nov 11 16:17:45 2017 >>> sys-libs/glibc-2.25-r8 Sat Nov 25 12:38:04 2017 >>> sys-libs/glibc-2.25-r9 Mon Jan 8 17:36:13 2018 >>> sys-libs/glibc-2.25-r9 Sat Feb 10 12:56:05 2018 >>> sys-libs/glibc-2.25-r10 Sat Mar 31 12:56:13 2018 >>> sys-libs/glibc-2.25-r11 Sat Jul 21 18:13:20 2018 >>> sys-libs/glibc-2.26-r7 Sat Oct 27 12:56:52 2018 >>> sys-libs/glibc-2.27-r6 Sat Apr 6 12:58:19 2019 >>> sys-libs/glibc-2.28-r5 Sat Apr 13 12:57:27 2019 >>> sys-libs/glibc-2.28-r6 |
71
sjmcefc2 OP 再请教 docker 下的话,
1.母机选择 ubuntu ? centos ? 2.docker 下再安装 ubuntu,然后继续 pythno 之类? 3.还是直接找个现成的镜像? |
72
yuikns 2019-04-20 00:51:17 +08:00
@sjmcefc2
1. 母鸡如果是 azure 之类云服务可以用 coreos,自己机房的话看已有技术栈。CentOS7 和 Ubuntu 16/18,Debian 9 等都应该没啥问题。 2. docker 下你可以直接用别人的 release 完事。 anaconda: https://hub.docker.com/_/anaconda cuda: https://hub.docker.com/r/nvidia/cuda cuda 的话我们经常是 dump 一个 environment.yml 然后在 cuda 里面安装个 miniconda,cuda update https://blog.argcv.com/articles/6168.c 3. ref2. 此外,国内的话,阿里云有个容器服务,还可以创建私有仓库。在海外体验挺烂的,国内时有抽风,但不抽风的时候速度还很不错。 |
74
sjmcefc2 OP @yuikns 感谢。centos7 和 rhel7 差别很大吗 /总感觉一回事儿。。看来我错了。
这几个都比较熟悉。 2.直接用别人的 release 挺好,就是不知道会不会是版本比较低? R 就有这个问题。还有就是综合性的环境不知道哪里可以找到。 3.说到 gpu 计算 ,大家都用什么卡 呢,有什么性价比高的推荐 |
75
yuikns 2019-04-20 03:27:09 +08:00
@sjmcefc2 1. centos 和 rhel 主要区别在订阅。企业有钱让红帽兜底那自然是最好的。
2. 不会。库里面有很多 tag,类似 git 中的 branch。通常同样 tag 会保持兼容,你一直想要最新的话,用 latest 就行。cuda/anaconda 都是设定好 webhook 后跟着上游自动更新的。 顺便,docker 不太推荐 “综合性环境”,通常要傻依赖啥。py 的话,anaconda 一配它就是综合。 3. 老板给啥用啥。P40 和 V100 都行 -- 这个不算回复... |
76
msg7086 2019-04-20 04:08:59 +08:00
@sjmcefc2 #63
CentOS 和 RHEL 不是更新缓慢的问题。RHEL 本来就是 3-5 年会出一个版本,你在他刚发布的时候用,当然什么都是新的。你等他过了 5 年再用,那当然什么都是旧的。RHEL 7 发布的时候 glibc 是 2.17 ,那么 7 这辈子都只能用 2.17 ,因为更新到新版本就会可能破坏这个平台上所有的软件兼容性。(有时候甚至有些 Bug 也不能修,因为有些程序会依赖一些 Bug 行为,随便修改行为也会导致其他程序出现问题。 ) RHEL 的「稳定」并不是说「运行稳定」,而是说平台稳定,这个平台在生命周期中不会改变。Debian 也好 Ubuntu 也好,固定发行版都是这样的,一旦发布以后就不会再升级软件包了,而只会安装更新。 同理,一些专业的、大型的软件,也会固定在某个版本的发行版上进行开发。不少软件会要求说你必须使用某个发行版的某个版本来运行(比如 Tensorflow 要求 Ubuntu 16/18,我司开发的某个软件要求 Ubuntu 12.04 ,等等),因为他们只针对这个稳定平台进行开发和测试,你如果想要适配到别的发行版,那你就得自己做小白鼠吃螃蟹了。 @sjmcefc2 #53 我的意思是 Tensorflow 官方的 docker 镜像是基于 Ubuntu 制作的。 |
77
sjmcefc2 OP |
78
tt0411 2019-04-20 11:02:05 +08:00
Linux 系统软件的依赖管理就是这么操蛋, 上虚拟化吧, virtualbox 或者 docker
|
80
heraldic 2019-04-20 17:14:38 +08:00
glibc 我是不敢升级的,干脆重装系统
|