🐙
AWS Lambdaでlightgbmを使う
背景
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