🐙

AWS Lambdaでlightgbmを使う

2024/12/10に公開

背景

lightgbm をAWS Lambdaで使おうとすると以下のようなエラーが出て怒られる。

[ERROR] OSError: libgomp.so.1: cannot open shared object file: No such file or directory

libgompは pip で入らないため、コンテナを使うかLambda Layerを使う必要がある。

どう解決するか

Lambda Layerを使う。まずは以下の Dockerfile を作成する。

FROM amazonlinux:2

RUN yum install -y \
        libgomp \
        zip \
    && yum clean all

RUN mkdir -p /opt/lib && \
    cp /usr/lib64/libgomp.so.1 /opt/lib/

WORKDIR /opt
CMD zip -r /layer.zip . && mv /layer.zip /output/layer.zip

その後、以下のコマンドを実行する。

docker build -t libgomp-layer .
docker run --rm -v $(pwd):/output libgomp-layer

このコマンドによってカレントディレクトリに作成される layer.zip をLambda Layerに登録すればlibgompを使えるようになる。

また、2024年12月10日現在、最新のlightgbm (4.5.0) のwheelがLambdaに対応していないようなので、ソースインストールを実行する必要がある。その際の requirements.txt は以下のようになる。

lightgbm --no-binary lightgbm

Discussion