tensorflow gpu 无法从 systemd 服务初始化

tensorflow gpu failed init from systemd service

我正在尝试托管使用 tensorflow libraries.I 安装的带有 CUDA 和 cudnn libraries.I 的 tensorflow gpu 库的 flask API 使用以下命令手动检查工作正常。

/captcha/env/bin/gunicorn captcha:app -b 0.0.0.0:5124 -k gevent --worker-connections 1000

但是当我添加此 systemd 服务时,我遇到了 tensorflow gpu 错误

系统服务

[Unit]
Description=gunicorn daemon
Requires=gunicorn.socket
After=network.target

[Service]
PIDFile=/run/gunicorn/pid
User=root
Group=root
WorkingDirectory=/captcha/env
ExecStart=/captcha/env/bin/gunicorn captcha:app -b 0.0.0.0:5124 -k gevent --worker-connections 1000
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

日志文件中的错误文本:

Failed to load the native TensorFlow runtime.

See https://www.tensorflow.org/install/install_sources#common_installation_problems

for some common reasons and solutions. Include the entire stack trace above this error message when asking for help.

谁能指出我哪里做错了?

我正在使用 PM2 来管理 tensorflow-flask api 流程。

http://pm2.keymetrics.io/

我创建一个shell文件,内容为以下命令。

pm2 start run.sh

Systemd 似乎去除了所有环境变量,TensorFlow 需要知道在哪里可以找到 Cuda。没有 LD_LIBRARY_PATH 它会失败。

可能有几种方法可以做到这一点,但这对我有用。

[Service]
Environment=LD_LIBRARY_PATH=/usr/local/cuda/lib64
ExecStart=/path/to/your/app
...