tensorflow模型java部署问碰到了坑,各种坑

来源:互联网 发布:杭州软件定制开发 编辑:程序博客网 时间:2024/06/04 13:35

吐槽下java部署cnn、rnn、lstm、bi-lstm相关模型的我是碰到了各种坑,相比之前部署xgboost采的坑还要多,记录下吧,这些底层还是要依赖于c++,java说白了只是个壳,没有真正实现Tensor、模型相关业务逻辑,下面看下吧。

查看各个版本的gcc版本的信息:

strings /lib64/libc.so.6 |grep GLIBC_   查看版本中是否含有2.14、2.17的版本

  1. GLIBC_2.2.5
  2. GLIBC_2.2.6
  3. GLIBC_2.3
  4. GLIBC_2.3.2
  5. GLIBC_2.3.3
  6. GLIBC_2.3.4
  7. GLIBC_2.4
  8. GLIBC_2.5
  9. GLIBC_2.6
  10. GLIBC_2.7
  11. GLIBC_2.8
  12. GLIBC_2.9
  13. GLIBC_2.10
  14. GLIBC_2.11
  15. GLIBC_2.12
  16. GLIBC_2.13


部署过程会碰到 下面这两个问题

cal/tomcat/temp/libtensorflow_jni5656634183295359135.so: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /usr/local/tomcat/temp/libtensorflow_jni5656634183295359135.so

.UnsatisfiedLinkError: /usr/local/tomcat/temp/libtensorflow_jni5135876021127552243.so: /lib64/libc.so.6: version `GLIBC_2.17' not found (required by



用下面方法可以解决:


  1. sudo wget http://ftp.gnu.org/gnu/glibc/glibc-2.17.tar.gz
  2. sudo tar -xvf glibc-2.17.tar.gz
  3. cd glibc-2.17
  4. sudo mkdir build
  5. cd build
  6. sudo ../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
  7. sudo make -j4
  8. sudo make install

然后exit   重新登录



再部署还会可能碰到这个问题:


cal/tomcat/temp/libtensorflow_jni7225457145314151563.so: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.18' not found (required by /usr/local/tomcat/temp/lib


strings /usr/lib64/libstdc++.so.6|grep GLIBCXX  查看3.x版本的GLIBC  

  1. GLIBCXX_3.4
  2. GLIBCXX_3.4.1
  3. GLIBCXX_3.4.2
  4. GLIBCXX_3.4.3
  5. GLIBCXX_3.4.4
  6. GLIBCXX_3.4.5
  7. GLIBCXX_3.4.6
  8. GLIBCXX_3.4.7
  9. GLIBCXX_3.4.8
  10. GLIBCXX_3.4.9
  11. GLIBCXX_3.4.10
  12. GLIBCXX_3.4.11
  13. GLIBCXX_3.4.12
  14. GLIBCXX_3.4.13
  15. GLIBCXX_3.4.14
  16. GLIBCXX_3.4.15
  17. GLIBCXX_3.4.16
  18. GLIBCXX_3.4.17

可以看到18、19之后的版本没有,解决办法安装最新的gcc6.x版本:


  1. #!/bin/bash
  2. yum -y install gcc g++
  3. yum install gcc gcc-c++ kernel-devel
  4. cd /data/
  5. wget http://10.1.1.171/gcc-6.1.0.tar.bz2
  6. tar -jxvf gcc-6.1.0.tar.bz2
  7. cd gcc-6.1.0
  8. ./contrib/download_prerequisites
  9. mkdir gcc-build-6.1.0
  10. cd gcc-build-6.1.0
  11. ../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
  12. make -j4
  13. make install
  14. cd stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/
  15. cp libstdc++.so.6.0.22 /usr/lib64
  16. cd /usr/lib64
  17. rm -rf libstdc++.so.6
  18. ln -s libstdc++.so.6.0.22 libstdc++.so.6



最后情况:

  1. GLIBC_2.2.5
  2. GLIBC_2.2.6
  3. GLIBC_2.3
  4. GLIBC_2.3.2
  5. GLIBC_2.3.3
  6. GLIBC_2.3.4
  7. GLIBC_2.4
  8. GLIBC_2.5
  9. GLIBC_2.6
  10. GLIBC_2.7
  11. GLIBC_2.8
  12. GLIBC_2.9
  13. GLIBC_2.10
  14. GLIBC_2.11
  15. GLIBC_2.12
  16. GLIBC_2.13
  17. GLIBC_2.14
  18. GLIBC_2.15
  19. GLIBC_2.16
  20. GLIBC_2.17
  21. GLIBC_PRIVATE
  1. GLIBCXX_3.4
  2. GLIBCXX_3.4.1
  3. GLIBCXX_3.4.2
  4. GLIBCXX_3.4.3
  5. GLIBCXX_3.4.4
  6. GLIBCXX_3.4.5
  7. GLIBCXX_3.4.6
  8. GLIBCXX_3.4.7
  9. GLIBCXX_3.4.8
  10. GLIBCXX_3.4.9
  11. GLIBCXX_3.4.10
  12. GLIBCXX_3.4.11
  13. GLIBCXX_3.4.12
  14. GLIBCXX_3.4.13
  15. GLIBCXX_3.4.14
  16. GLIBCXX_3.4.15
  17. GLIBCXX_3.4.16
  18. GLIBCXX_3.4.17
  19. GLIBCXX_3.4.18
  20. GLIBCXX_3.4.19
  21. GLIBCXX_3.4.20
  22. GLIBCXX_3.4.21
  23. GLIBCXX_3.4.22
  24. GLIBCXX_FORCE_NEW
  25. GLIBCXX_DEBUG_MESSAGE_LENGTH

版本完善就可以正常的部署tensorflow训练的模型了,完成