Yuta NakataのBlog

Python / AWS / ITについて役立つ情報を発信します

LambdaでPandasを高速化するための方法

Lambda(Python)でPandasを使ってる方は、多いのではないのでしょうか?

弊社では、サーバーレスがファーストチョイスとしてよく使われるため、Lambdaの出現頻度が高いです。

このPandasですが、Lambdaの世界(FaaS)で使う際の高速化の方法についてお教えてしようと思います。

結論

Lambda Layerとしてインポートするのではなく、Lambda Container(コンテナを利用したLambda関数)として利用する

なぜ?

そもそも、Lambdaにはコールドスタートウォームスタートという概念があります。

コールドスタートの場合、Lambdaの実行環境を作成する必要があります。

このとき、Lambdaの内部の世界では、Pandasのインストールが行われます。

この作業が重く、数秒(2~5秒程度)かかります。

Web API として利用するには、少し重いです。

そのため、弊社ではよほどの複雑な処理系を書く場合を除き、Pandasの利用は推奨されていません。

aws.amazon.com

続いて、コンテナイメージを利用したLambdaの場合です。

この場合、ECRにDockerfileをdeployして利用するのですが、なぜか?こちらのほうが早いようです(大体1~2sec)。

michimani.net

なぜLambda Containerのほうが早いのか?それはよくわかりませんが、弊社ではAWSエンタープライズサポートを導入しており、AWSのSAにも聞いてみた所、偶々というレベルの代物ではないらしいです。

仕組みはわからないけど、高速化の一案の紹介でした〜。

よかったら、いいね and シェアをお願いします!