Pythonの機械学習用Docker imageのサイズ削減方法の紹介

Pythonの機械学習用Docker imageのサイズ削減方法の紹介 curated

ちょうど気にされていた方向けの記事

Pythonの機械学習用Docker imageのサイズ削減方法の紹介

エムスリーエンジニアリンググループ AIチームの笹川です。 バスケと、ロードバイクが趣味なのですが、現在、NBAのplayoffと、Tour de Franceが同時に開催されていて大変嬉しい毎日を過ごしています。 特にNBAのplayoffは、連日overtimeとなるような激戦や、giant killingがあったりのアツい戦いが繰り広げられていて最高です。 そういう状況なので(?)、今回は先日取り組んだ、Pythonの機械学習バッチを実行するdocker imageのサイズ削減についてのアツい戦いについて紹介したいと思います。 膝の上に登って寝る為に、筆者がデスクに戻るのを机の下で待ち構える犬氏(かわいい) 今回の取り組みでは、もともと3GB程度だったPythonのML用のimageを、約2.0GBに削減することができました(それでもなかなかのサイズ。MLのimageは特に大きい印象です)。 Docker imageのサイズ削減については、docker push、pull、buildのコストが下がることによりCIの高速化や、実行時のspin upが速くなるなどのメリットがあります。 また、今回はサイズの削減と合わせて、開発用imageと、本番用imageの管理についても合わせて考えてみたいと思います。 Python の docker image のサイズ削減 Docker imageのサイズ削減として代表的な手法としては、Goなどのコンパイルでバイナリファイル生成するタイプのアプリケーションで行われる、multi-stage buildがあります。 これはbuild stageでbuildされたbinaryファイルを、ターゲットのstageにコピーすることで、buildにしか使わないpackage managerや、ライブラリなどのファイルを削減する方法です。 今回対象とする機械学習バッチのためのPythonのdocker imageに対するサイズの削減では、実行に必要なbuildの成果物が単一バイナリファイルになるわけではないので、その辺りをケアして、構成してやる必要があります。 以下は、実際に弊社のproductionで使われているimageから説明に必要な部分を抽出した例です。 主として、以下のpackageが入っている環境をpoetryをpackage managerとして利用し構築することを考えます。 mecab pandas xgboost 元のDockerfileは以下です。 FROM python:3.6.8-stretch # mecabとpoetryのinstallする RUN apt-get update && apt-get install -y mecab libmecab-dev […]

Click here to view original web page at www.m3tech.blog

コメント

タイトルとURLをコピーしました