Ste*_*jic 4 go amazon-web-services aws-lambda aws-lambda-layers
我使用以下命令创建了一个 AWS Lambda 层:
aws lambda publish-layer-version --layer-name TensorflowLambdaLayer --compatible-runtimes go1.x --zip-file fileb://tensorflowLayer.zip
Run Code Online (Sandbox Code Playgroud)
这是生成的 ARN:`arn:aws:lambda:us-east-1:757767972066:layer:TensorflowLambdaLayer:1
当我尝试通过 AWS SAM运行使用Tesnroflow库的Lambda 函数时,它卡在“挂载”步骤中:
2019-07-18 15:51:29 Mounting /tmp/tmpgz8cb80s as /var/task:ro,delegated inside runtime container
Run Code Online (Sandbox Code Playgroud)
一旦我终止它,Ctrl + C
我会收到以下消息:
^C/var/task/bin/inference: error while loading shared libraries: libtensorflow.so: cannot open shared object file: No such file or directory
Makefile:82: recipe for target 'run-inference' failed
Run Code Online (Sandbox Code Playgroud)
这是我的template.yml 的关键部分:
Parameters:
LambdaTensorflowLayerArn:
Type: String
Default: 'arn:aws:lambda:us-east-1:757767972066:layer:TensorflowLambdaLayer:1'
LambdaFFMPEGLayerArn:
Type: String
Default: 'arn:aws:lambda:us-east-1:757767972066:layer:ffmpeg:1'
Inference:
Type: 'AWS::Serverless::Function'
Properties:
Handler: bin/inference
Runtime: go1.x
Timeout: 300
CodeUri: ./bin/inference.zip
Layers:
- Ref: LambdaFFMPEGLayerArn
- Ref: LambdaTensorflowLayerArn
Run Code Online (Sandbox Code Playgroud)
我不确定是什么原因造成的
我遇到了同样的问题
加载共享库时出错:libtensorflow.so.1:无法打开共享对象文件:没有这样的文件或目录
就我而言,它试图在 go 中使用 TensorFlow。问题是,如果软件包留在 /usr/local(推荐)或其他路径中,libtensorflow.so(和 libtensorflow_framework.so)的官方安装似乎不起作用。按照 /usr/local 的建议使用 ldconfig 也无济于事。此外,在设置 LD_LIBRARY_PATH 之前,gcc 的基本示例不起作用(即使使用 -L。这让我感到惊讶):
$ gcc -I/usr/local/include -L/usr/local/lib hello_tf.c -ltensorflow -o hello_tf
$ ./hello_tf
./hello_tf: error while loading shared libraries: libtensorflow.so.1: cannot open shared object file: No such file or directory
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
$ ./hello_tf
Hello from TensorFlow C library version 1.14.0
$ unset LD_LIBRARY_PATH
$ ./hello_tf
./hello_tf: error while loading shared libraries: libtensorflow.so.1: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)
就我而言,这是 /usr/local 的内容
$ ll /usr/local/lib
total 245424
lrwxrwxrwx. 1 root root 28 dic 31 1999 libtensorflow_framework.so -> libtensorflow_framework.so.1
lrwxrwxrwx. 1 root root 33 dic 31 1999 libtensorflow_framework.so.1 -> libtensorflow_framework.so.1.14.0
-r-xr-xr-x. 1 root root 34748520 dic 31 1999 libtensorflow_framework.so.1.14.0
lrwxrwxrwx. 1 root root 18 dic 31 1999 libtensorflow.so -> libtensorflow.so.1
lrwxrwxrwx. 1 root root 23 dic 31 1999 libtensorflow.so.1 -> libtensorflow.so.1.14.0
-r-xr-xr-x. 1 root root 216546752 dic 31 1999 libtensorflow.so.1.14.0
Run Code Online (Sandbox Code Playgroud)
另一个解决方案是手动创建指向 /usr/lib 的符号链接。我不知道如何在无服务器配置中做到这一点。打算在评论中写下这个,但仍然没有足够的代表。
归档时间: |
|
查看次数: |
3518 次 |
最近记录: |