web-dev-qa-db-ja.com

XGBoostライブラリ(libxgboost.so)をロードできませんでした

問題

サーバーレスプロジェクトで、Pythonで書かれたラムダにXGBoostをインポートしたいと思います。しかし、ラムダを呼び出そうとすると、CloudWatchに次のエラーが表示されます。

[エラー] XGBoostError:XGBoostライブラリ(libxgboost.so)をロードできませんでした。
考えられる原因:
* OpenMPランタイムがインストールされていません(Windowsの場合はvcomp140.dllまたはlibgomp-1.dll、UNIXのようなOSの場合はlibgomp.so)
* 64ビットOSで32ビットPython=を実行しています。
エラーメッセージ:['libgomp.so.1:cannot open shared object file:No such file or directory']

何を試しましたか?

  1. 私は実行していますsls deploy macOSで追加したのでdockerizePip: true to my serverless.yml

  2. カスタムDockerfileを使用して、欠落している依存関係を修正しようとしました:

    FROM lambci/lambda:build-python3.6
    
    RUN apt-get update && apt-get install libaio1
    

    私も指定する必要がありますdockerExtraFilesのライブラリパスですが、libgomp.soをLinuxのどこに配置するかわかりません。だから、私はこの点にこだわりました。

私のコード

serverless.yml:

app: improve
org: kvadrug
service: testservice

provider:
  name: aws
  runtime: python3.8
  versionFunctions: false
  stage: dev
  region: us-west-2
  timeout: 30

plugins:
  - serverless-python-requirements

custom:
  pythonRequirements:
    dockerFile: Dockerfile
    Zip: true
    dockerizePip: true

functions:
  hello:
    handler: hello.hello
    events:
      - http:
          path: hello
          method: post
          private: true

package.json:

{
    "name": "testservice",
    "version": "1.0.0",
    "description": "Test service",
    "dependencies": {},
    "devDependencies": {
        "serverless-python-requirements": "^5.1.0"
    }
}

requirements.txt:

xgboost==1.0.2
3
kelin

Linuxでは、 必要なライブラリがインストールされている

/usr/lib/x86_64-linux-gnu/libgomp.so.1
/usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0

沿って

apt-get install libgomp1

新しいUbuntuとCentOSでは、デフォルトでlibgomp1がインストールされなくなりました(チェックしたばかりです-xenialにありますが、新鮮なバイオニック)。

これはAWSマシン上にあり、残念ながら最近ではありません(他にすぐに利用できるものはありません)。

lrwxrwxrwx 1 root root     16 Oct  4  2019 /usr/lib/x86_64-linux-gnu/libgomp.so.1 -> libgomp.so.1.0.0
-rw-r--r-- 1 root root 138448 Oct  4  2019 /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0
0
LSerni