🦖

[AWS/Inf1/コンテナ軽量化]torch-neuron用Dockerfileを作る~脱DeepLearningContainer~

2023/02/09に公開


AWS Neuron


イメージサイズが5.8GBから2.4GBになった

対象読者

ECSでInf1インスタンスを使っている人。
Inf1インスタンスを運用したい人。
Inf1でPyTorchを使う人。
イメージサイズは小さい方が好きな人。
ECRからのプル時間を減らしたい人。

結論

Deep Learning Containerをやめて、torch-neruonの入ったイメージを自分で作成するとイメージサイズが半分以下になります。サイズが小さくなるのでECRからプルする時間も減少します。


上がDeep Learning Containerで下が自作

イメージサイズ Docker Pullに要する時間[1]
Deep Learning Container[2] 4.1GB 139sec
自作コンテナ 1.7GB 61sec

Deep Learning Containerのサイズは大きい

AWSのドキュメントを読むと、Deep Learning Containerの案内があります。

そのためInf1インスタンスをいざ使ってみようと、とりあえずDeep Learning Containerを採用してそのまま運用している方もいるのではないでしょうか。

そのイメージなかなか大盛りです。

Inf1用のDeep Learning Container[3]をECRにプッシュしてみると

4166.61MB

あります。

763104351884.dkr.ecr.ap-northeast-1.amazonaws.comからイメージをプルするために

139秒

かかりました。

どうやらDeep Learning ContainerのDockerfileはすぐに開発が開始できるようになのか、エディタや様々なPythonライブラリが入っているようです。

https://github.com/aws/deep-learning-containers/blob/master/pytorch/inference/docker/1.12/py3/sdk2.5.0/Dockerfile.neuron

pipとcondaにはたくさんのライブラリが確認できます。

conda list (クリックで開きます)
$conda list
# packages in environment at /opt/conda:
#
# Name                    Version                   Build  Channel
_libgcc_mutex             0.1                 conda_forge    conda-forge
_openmp_mutex             4.5                  2_kmp_llvm    conda-forge
absl-py                   1.3.0                    pypi_0    pypi
alsa-lib                  1.2.8                h166bdaf_0    conda-forge
aom                       3.5.0                h27087fc_0    conda-forge
astor                     0.8.1                    pypi_0    pypi
asttokens                 2.2.1                    pypi_0    pypi
attr                      2.5.1                h166bdaf_1    conda-forge
attrs                     22.1.0                   pypi_0    pypi
awscli                    1.27.33                  pypi_0    pypi
backcall                  0.2.0                    pypi_0    pypi
boto3                     1.26.33                  pypi_0    pypi
botocore                  1.29.33                  pypi_0    pypi
brotlipy                  0.7.0           py38h0a891b7_1005    conda-forge
bzip2                     1.0.8                h7f98852_4    conda-forge
c-ares                    1.18.1               h7f98852_0    conda-forge
ca-certificates           2022.12.7            ha878542_0    conda-forge
cached-property           1.5.2                hd8ed1ab_1    conda-forge
cached_property           1.5.2              pyha770c72_1    conda-forge
cairo                     1.16.0            ha61ee94_1014    conda-forge
certifi                   2022.12.7          pyhd8ed1ab_0    conda-forge
cffi                      1.15.1           py38h4a40e3a_3    conda-forge
charset-normalizer        2.0.12             pyhd8ed1ab_0    conda-forge
colorama                  0.4.4                    pypi_0    pypi
conda                     4.12.0           py38h578d9bd_0    conda-forge
conda-content-trust       0.1.3              pyhd8ed1ab_0    conda-forge
conda-package-handling    2.0.2              pyh38be061_0    conda-forge
conda-package-streaming   0.7.0              pyhd8ed1ab_1    conda-forge
cryptography              38.0.4           py38h2b5fc30_0    conda-forge
cython                    0.29.32          py38hfa26641_1    conda-forge
dbus                      1.13.6               h5008d03_3    conda-forge
decorator                 5.1.1                    pypi_0    pypi
dmlc-nnvm                 1.13.0.0+0               pypi_0    pypi
dmlc-topi                 1.13.0.0+0               pypi_0    pypi
dmlc-tvm                  1.13.0.0+0               pypi_0    pypi
docutils                  0.16                     pypi_0    pypi
enum-compat               0.0.3                    pypi_0    pypi
exceptiongroup            1.0.4                    pypi_0    pypi
executing                 1.2.0                    pypi_0    pypi
expat                     2.5.0                h27087fc_0    conda-forge
ffmpeg                    5.1.2           gpl_h8dda1f0_105    conda-forge
fftw                      3.3.10          nompi_hf0379b8_106    conda-forge
font-ttf-dejavu-sans-mono 2.37                 hab24e00_0    conda-forge
font-ttf-inconsolata      3.000                h77eed37_0    conda-forge
font-ttf-source-code-pro  2.038                h77eed37_0    conda-forge
font-ttf-ubuntu           0.83                 hab24e00_0    conda-forge
fontconfig                2.14.1               hc2a2eb6_0    conda-forge
fonts-conda-ecosystem     1                             0    conda-forge
fonts-conda-forge         1                             0    conda-forge
freeglut                  3.2.2                h9c3ff4c_1    conda-forge
freetype                  2.12.1               hca18f0e_1    conda-forge
future                    0.18.2                   pypi_0    pypi
gast                      0.2.2                    pypi_0    pypi
gettext                   0.21.1               h27087fc_0    conda-forge
glib                      2.74.1               h6239696_1    conda-forge
glib-tools                2.74.1               h6239696_1    conda-forge
gmp                       6.2.1                h58526e2_0    conda-forge
gnutls                    3.7.8                hf3e180e_0    conda-forge
google-pasta              0.2.0                    pypi_0    pypi
graphite2                 1.3.13            h58526e2_1001    conda-forge
grpcio                    1.51.1                   pypi_0    pypi
gst-plugins-base          1.21.2               h3e40eee_0    conda-forge
gstreamer                 1.21.2               hd4edc92_0    conda-forge
gstreamer-orc             0.4.33               h166bdaf_0    conda-forge
h5py                      2.10.0                   pypi_0    pypi
harfbuzz                  6.0.0                h8e241bc_0    conda-forge
hdf5                      1.12.2          nompi_h2386368_100    conda-forge
icu                       70.1                 h27087fc_0    conda-forge
idna                      3.4                pyhd8ed1ab_0    conda-forge
importlib-metadata        5.2.0                    pypi_0    pypi
inferentia-hwm            1.13.0.0+0               pypi_0    pypi
iniconfig                 1.1.1                    pypi_0    pypi
ipython                   8.7.0                    pypi_0    pypi
islpy                     2021.1+aws2021.x.80.0.bld0          pypi_0    pypi
jack                      1.9.21               h583fa2b_2    conda-forge
jasper                    2.0.33               ha77e612_0    conda-forge
jedi                      0.18.2                   pypi_0    pypi
jmespath                  1.0.1                    pypi_0    pypi
joblib                    1.2.0              pyhd8ed1ab_0    conda-forge
jpeg                      9e                   h166bdaf_2    conda-forge
keras-applications        1.0.8                    pypi_0    pypi
keras-preprocessing       1.1.2                    pypi_0    pypi
keyutils                  1.6.1                h166bdaf_0    conda-forge
krb5                      1.20.1               hf9c8cef_0    conda-forge
lame                      3.100             h166bdaf_1003    conda-forge
ld_impl_linux-64          2.39                 hcc3a1bd_1    conda-forge
lerc                      4.0.0                h27087fc_0    conda-forge
libarchive                3.5.2                hb890918_3    conda-forge
libblas                   3.9.0           16_linux64_openblas    conda-forge
libcap                    2.66                 ha37c62d_0    conda-forge
libcblas                  3.9.0           16_linux64_openblas    conda-forge
libclang                  15.0.6          default_h2e3cab8_0    conda-forge
libclang13                15.0.6          default_h3a83d3e_0    conda-forge
libcups                   2.3.3                h36d4200_3    conda-forge
libcurl                   7.86.0               h6312ad2_2    conda-forge
libdb                     6.2.32               h9c3ff4c_0    conda-forge
libdeflate                1.14                 h166bdaf_0    conda-forge
libdrm                    2.4.114              h166bdaf_0    conda-forge
libedit                   3.1.20191231         he28a2e2_2    conda-forge
libev                     4.33                 h516909a_1    conda-forge
libevent                  2.1.10               h9b69904_4    conda-forge
libffi                    3.4.2                h7f98852_5    conda-forge
libflac                   1.4.2                h27087fc_0    conda-forge
libgcc-ng                 12.2.0              h65d4601_19    conda-forge
libgcrypt                 1.10.1               h166bdaf_0    conda-forge
libgfortran-ng            12.2.0              h69a702a_19    conda-forge
libgfortran5              12.2.0              h337968e_19    conda-forge
libglib                   2.74.1               h606061b_1    conda-forge
libglu                    9.0.0             he1b5a44_1001    conda-forge
libgpg-error              1.45                 hc0c96e0_0    conda-forge
libhwloc                  2.8.0                h32351e8_1    conda-forge
libiconv                  1.17                 h166bdaf_0    conda-forge
libidn2                   2.3.4                h166bdaf_0    conda-forge
liblapack                 3.9.0           16_linux64_openblas    conda-forge
liblapacke                3.9.0           16_linux64_openblas    conda-forge
libllvm15                 15.0.6               h63197d8_0    conda-forge
libmamba                  0.22.1               hd8a31e3_1    conda-forge
libmambapy                0.22.1           py38h923e62a_1    conda-forge
libnghttp2                1.47.0               hdcd2b5c_1    conda-forge
libnsl                    2.0.0                h7f98852_0    conda-forge
libogg                    1.3.4                h7f98852_1    conda-forge
libopenblas               0.3.21          pthreads_h78a6416_3    conda-forge
libopencv                 4.6.0            py38h340f60e_9    conda-forge
libopus                   1.3.1                h7f98852_1    conda-forge
libpciaccess              0.17                 h166bdaf_0    conda-forge
libpng                    1.6.39               h753d276_0    conda-forge
libpq                     15.1                 h2baec63_2    conda-forge
libprotobuf               3.21.12              h3eb15da_0    conda-forge
libsndfile                1.1.0                hcb278e6_1    conda-forge
libsolv                   0.7.23               h3eb15da_0    conda-forge
libsqlite                 3.40.0               h753d276_0    conda-forge
libssh2                   1.10.0               haa6b8db_3    conda-forge
libstdcxx-ng              12.2.0              h46fd767_19    conda-forge
libsystemd0               252                  h2a991cd_0    conda-forge
libtasn1                  4.19.0               h166bdaf_0    conda-forge
libtiff                   4.5.0                h82bc61c_0    conda-forge
libtool                   2.4.6             h9c3ff4c_1008    conda-forge
libudev1                  252                  h166bdaf_0    conda-forge
libunistring              0.9.10               h7f98852_0    conda-forge
libuuid                   2.32.1            h7f98852_1000    conda-forge
libva                     2.16.0               h166bdaf_0    conda-forge
libvorbis                 1.3.7                h9c3ff4c_0    conda-forge
libvpx                    1.11.0               h9c3ff4c_3    conda-forge
libwebp-base              1.2.4                h166bdaf_0    conda-forge
libxcb                    1.13              h7f98852_1004    conda-forge
libxkbcommon              1.0.3                he3ba5ed_0    conda-forge
libxml2                   2.10.3               h7463322_0    conda-forge
libzlib                   1.2.13               h166bdaf_4    conda-forge
llvm-openmp               15.0.6               he0ac6c6_0    conda-forge
lz4-c                     1.9.3                h9c3ff4c_1    conda-forge
lzo                       2.10              h516909a_1000    conda-forge
mamba                     0.22.1           py38h1abaa86_1    conda-forge
markdown                  3.4.1                    pypi_0    pypi
markupsafe                2.1.1                    pypi_0    pypi
matplotlib-inline         0.1.6                    pypi_0    pypi
mkl                       2022.1.0           h84fe81f_915    conda-forge
mkl-include               2023.0.0         h84fe81f_25396    conda-forge
mpg123                    1.31.1               h27087fc_0    conda-forge
mysql-common              8.0.31               haf5c9bc_0    conda-forge
mysql-libs                8.0.31               h28c427c_0    conda-forge
ncurses                   6.3                  h27087fc_1    conda-forge
nettle                    3.8.1                hc379101_1    conda-forge
networkx                  2.5                      pypi_0    pypi
neuron-cc                 1.13.5.0+7dcf000a6          pypi_0    pypi
nspr                      4.35                 h27087fc_0    conda-forge
nss                       3.82                 he02c5a1_0    conda-forge
numpy                     1.18.5                   pypi_0    pypi
opencv                    4.6.0            py38h578d9bd_9    conda-forge
openh264                  2.3.1                h27087fc_1    conda-forge
openssl                   1.1.1s               h0b41bf4_1    conda-forge
opt-einsum                3.3.0                    pypi_0    pypi
p11-kit                   0.24.1               hc5aa10d_0    conda-forge
packaging                 20.4                     pypi_0    pypi
pandas                    1.4.0                    pypi_0    pypi
parso                     0.8.3              pyhd8ed1ab_0    conda-forge
pcre2                     10.40                hc3806b6_0    conda-forge
pexpect                   4.8.0                    pypi_0    pypi
pickleshare               0.7.5                    pypi_0    pypi
pillow                    9.3.0                    pypi_0    pypi
pip                       22.3.1                   pypi_0    pypi
pixman                    0.40.0               h36c2ea0_0    conda-forge
pluggy                    1.0.0                    pypi_0    pypi
prompt-toolkit            3.0.36                   pypi_0    pypi
protobuf                  3.20.1                   pypi_0    pypi
psutil                    5.9.4                    pypi_0    pypi
pthread-stubs             0.4               h36c2ea0_1001    conda-forge
ptyprocess                0.7.0                    pypi_0    pypi
pulseaudio                16.1                 h4a94279_0    conda-forge
pure-eval                 0.2.2                    pypi_0    pypi
py-opencv                 4.6.0            py38h6f1a3b6_9    conda-forge
pyasn1                    0.4.8                    pypi_0    pypi
pybind11-abi              4                    hd8ed1ab_3    conda-forge
pycosat                   0.6.4            py38h0a891b7_1    conda-forge
pycparser                 2.21               pyhd8ed1ab_0    conda-forge
pygments                  2.13.0                   pypi_0    pypi
pyopenssl                 22.1.0             pyhd8ed1ab_0    conda-forge
pyparsing                 3.0.9                    pypi_0    pypi
pysocks                   1.7.1              pyha2e5f31_6    conda-forge
pytest                    7.2.0                    pypi_0    pypi
python                    3.8.13          h582c2e5_0_cpython    conda-forge
python-dateutil           2.8.2                    pypi_0    pypi
python_abi                3.8                      3_cp38    conda-forge
pytz                      2022.7                   pypi_0    pypi
pyyaml                    5.4.1                    pypi_0    pypi
qt-main                   5.15.6               h62441b5_5    conda-forge
readline                  8.1.2                h0f457ee_0    conda-forge
reproc                    14.2.3               h7f98852_0    conda-forge
reproc-cpp                14.2.3               h9c3ff4c_0    conda-forge
requests                  2.28.1             pyhd8ed1ab_1    conda-forge
retrying                  1.3.3                    pypi_0    pypi
rsa                       4.7.2                    pypi_0    pypi
ruamel_yaml               0.15.80         py38h0a891b7_1008    conda-forge
s3transfer                0.6.0                    pypi_0    pypi
sagemaker-inference       1.8.0                    pypi_0    pypi
sagemaker-pytorch-inference 2.0.8                    pypi_0    pypi
scikit-learn              1.2.0            py38h1e1a916_0    conda-forge
scipy                     1.4.1                    pypi_0    pypi
setuptools                65.6.3             pyhd8ed1ab_0    conda-forge
six                       1.16.0             pyh6c4a22f_0    conda-forge
sqlite                    3.40.0               h4ff8645_0    conda-forge
stack-data                0.6.2                    pypi_0    pypi
svt-av1                   1.4.1                hcb278e6_0    conda-forge
tbb                       2021.7.0             h924138e_1    conda-forge
tensorboard               1.15.0                   pypi_0    pypi
tensorflow                1.15.5                   pypi_0    pypi
tensorflow-estimator      1.15.1                   pypi_0    pypi
termcolor                 2.1.1                    pypi_0    pypi
threadpoolctl             3.1.0              pyh8a188c0_0    conda-forge
tk                        8.6.12               h27826a3_0    conda-forge
tomli                     2.0.1                    pypi_0    pypi
torch                     1.12.1                   pypi_0    pypi
torch-model-archiver      0.5.3                    pypi_0    pypi
torch-neuron              1.12.1.2.5.8.0           pypi_0    pypi
torchserve                0.5.3                    pypi_0    pypi
torchvision               0.13.1                   pypi_0    pypi
traitlets                 5.8.0                    pypi_0    pypi
typing                    3.10.0.0           pyhd8ed1ab_0    conda-forge
typing-extensions         4.4.0                    pypi_0    pypi
urllib3                   1.26.13            pyhd8ed1ab_0    conda-forge
wcwidth                   0.2.5                    pypi_0    pypi
werkzeug                  2.2.2                    pypi_0    pypi
wheel                     0.38.4             pyhd8ed1ab_0    conda-forge
wrapt                     1.14.1                   pypi_0    pypi
x264                      1!164.3095           h166bdaf_2    conda-forge
x265                      3.5                  h924138e_3    conda-forge
xcb-util                  0.4.0                h166bdaf_0    conda-forge
xcb-util-image            0.4.0                h166bdaf_0    conda-forge
xcb-util-keysyms          0.4.0                h166bdaf_0    conda-forge
xcb-util-renderutil       0.3.9                h166bdaf_0    conda-forge
xcb-util-wm               0.4.1                h166bdaf_0    conda-forge
xorg-fixesproto           5.0               h7f98852_1002    conda-forge
xorg-inputproto           2.3.2             h7f98852_1002    conda-forge
xorg-kbproto              1.0.7             h7f98852_1002    conda-forge
xorg-libice               1.0.10               h7f98852_0    conda-forge
xorg-libsm                1.2.3             hd9c2040_1000    conda-forge
xorg-libx11               1.7.2                h7f98852_0    conda-forge
xorg-libxau               1.0.9                h7f98852_0    conda-forge
xorg-libxdmcp             1.1.3                h7f98852_0    conda-forge
xorg-libxext              1.3.4                h7f98852_1    conda-forge
xorg-libxfixes            5.0.3             h7f98852_1004    conda-forge
xorg-libxi                1.7.10               h7f98852_0    conda-forge
xorg-libxrender           0.9.10            h7f98852_1003    conda-forge
xorg-renderproto          0.11.1            h7f98852_1002    conda-forge
xorg-xextproto            7.3.0             h7f98852_1002    conda-forge
xorg-xproto               7.0.31            h7f98852_1007    conda-forge
xz                        5.2.6                h166bdaf_0    conda-forge
yaml                      0.2.5                h7f98852_2    conda-forge
yaml-cpp                  0.6.3                he1b5a44_4    conda-forge
zipp                      3.11.0                   pypi_0    pypi
zlib                      1.2.13               h166bdaf_4    conda-forge
zstandard                 0.19.0           py38h5945529_1    conda-forge
zstd                      1.5.2                h6239696_4    conda-forge
pip list (クリックで開きます)
$pip list
Package                     Version
--------------------------- --------------------------
absl-py                     1.3.0
astor                       0.8.1
asttokens                   2.2.1
attrs                       22.1.0
awscli                      1.27.33
backcall                    0.2.0
boto3                       1.26.33
botocore                    1.29.33
brotlipy                    0.7.0
cached-property             1.5.2
certifi                     2022.12.7
cffi                        1.15.1
charset-normalizer          2.0.12
colorama                    0.4.4
conda                       4.12.0
conda-content-trust         0.1.3
conda-package-handling      2.0.2
conda_package_streaming     0.7.0
cryptography                38.0.4
Cython                      0.29.32
decorator                   5.1.1
dmlc-nnvm                   1.13.0.0+0
dmlc-topi                   1.13.0.0+0
dmlc-tvm                    1.13.0.0+0
docutils                    0.16
enum-compat                 0.0.3
exceptiongroup              1.0.4
executing                   1.2.0
future                      0.18.2
gast                        0.2.2
google-pasta                0.2.0
grpcio                      1.51.1
h5py                        2.10.0
idna                        3.4
importlib-metadata          5.2.0
inferentia-hwm              1.13.0.0+0
iniconfig                   1.1.1
ipython                     8.7.0
islpy                       2021.1+aws2021.x.80.0.bld0
jedi                        0.18.2
jmespath                    1.0.1
joblib                      1.2.0
Keras-Applications          1.0.8
Keras-Preprocessing         1.1.2
libmambapy                  0.22.1
mamba                       0.22.1
Markdown                    3.4.1
MarkupSafe                  2.1.1
matplotlib-inline           0.1.6
networkx                    2.5
neuron-cc                   1.13.5.0+7dcf000a6
numpy                       1.18.5
opencv-python               4.6.0
opt-einsum                  3.3.0
packaging                   20.4
pandas                      1.4.0
parso                       0.8.3
pexpect                     4.8.0
pickleshare                 0.7.5
Pillow                      9.3.0
pip                         22.3.1
pluggy                      1.0.0
prompt-toolkit              3.0.36
protobuf                    3.20.1
psutil                      5.9.4
ptyprocess                  0.7.0
pure-eval                   0.2.2
pyasn1                      0.4.8
pycosat                     0.6.4
pycparser                   2.21
Pygments                    2.13.0
pyOpenSSL                   22.1.0
pyparsing                   3.0.9
PySocks                     1.7.1
pytest                      7.2.0
python-dateutil             2.8.2
pytz                        2022.7
PyYAML                      5.4.1
requests                    2.28.1
retrying                    1.3.3
rsa                         4.7.2
ruamel-yaml-conda           0.15.80
s3transfer                  0.6.0
sagemaker-inference         1.8.0
sagemaker-pytorch-inference 2.0.8
scikit-learn                1.2.0
scipy                       1.4.1
setuptools                  65.6.3
six                         1.16.0
stack-data                  0.6.2
tensorboard                 1.15.0
tensorflow                  1.15.5
tensorflow-estimator        1.15.1
termcolor                   2.1.1
threadpoolctl               3.1.0
tomli                       2.0.1
torch                       1.12.1
torch-model-archiver        0.5.3
torch-neuron                1.12.1.2.5.8.0
torchserve                  0.5.3
torchvision                 0.13.1
traitlets                   5.8.0
typing_extensions           4.4.0
urllib3                     1.26.13
wcwidth                     0.2.5
Werkzeug                    2.2.2
wheel                       0.38.4
wrapt                       1.14.1
zipp                        3.11.0
zstandard                   0.19.0

不要なパッケージは不要

システムの運用で使うイメージは起動時間を短くしたり、メンテナンスしやすくするために、なるべく小さいサイズにしたいものです。

不要なパッケージは入れるなとDockerのベストプラクティスにも書かれています。
https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#dont-install-unnecessary-packages

Deep Learning Containerには、テキストエディタをはじめとして、運用では使わない可能性のあるパッケージが多く入っています。

torch-neuronとNeuron Runtime/Toolsが入ったイメージを作る

Neuron SDKのドキュメントにはtorch-neuronを入れるためのDockerfileが紹介されています。
ドキュメントに従いイメージを作ってみます。
https://awsdocs-neuron.readthedocs-hosted.com/en/latest/containers/docker-example/v1/inference/Dockerfile-torch-neuron.html?highlight=dockerfile

2022年11月にpython3.8に対応したので、ベースとなるubuntuのイメージは20.04を使用しました[4]

dockerfile.neuron
FROM ubuntu:20.04

LABEL maintainer=" "

RUN apt-get update -y \
    && apt-get install -y --no-install-recommends \
    gnupg2 \
    wget \
    python3-pip \
    python3-setuptools \
    libcap-dev \
    && cd /usr/local/bin \
    && pip3 --no-cache-dir install --upgrade pip \
    && rm -rf /var/lib/apt/lists/* \
    && apt-get clean

RUN echo "deb https://apt.repos.neuron.amazonaws.com bionic main" > /etc/apt/sources.list.d/neuron.list
RUN wget -qO - https://apt.repos.neuron.amazonaws.com/GPG-PUB-KEY-AMAZON-AWS-NEURON.PUB | apt-key add -

# Installing Neuron Runtime and Tools
RUN apt-get update -y && apt-get install -y \
    aws-neuron-runtime \
    aws-neuron-tools

# Sets up Path for Neuron tools
ENV PATH="/opt/bin/:/opt/aws/neuron/bin:${PATH}"

# Include framework tensorflow-neuron or torch-neuron and compiler (compiler not needed for inference)
RUN pip3 install \
    torch-neuron \
    --extra-index-url=https://pip.repos.neuron.amazonaws.com


CMD ["neuron-top"]

Neuron runtime/Neuron tools/torch-neruon/pytorchがインストールされたコンテナができました。

pipの中身も随分減りました。condaはなくなりました。

pip list (クリックで開きます)
$ pip3 list
Package           Version
----------------- --------------
pip               23.0
setuptools        45.2.0
torch             1.12.1
torch-neuron      1.12.1.2.5.8.0
typing_extensions 4.4.0
wheel             0.34.2

イメージサイズは

4166.61MB → 1767.5MB

になりました。

ECRからプルする時間は

139秒 → 61秒

になりました。

さいごに

実際は自作コンテナに必要なパッケージを追加でインストールすることになると思います。その分を差し引いてもかなり小さくなるんじゃないかなと思います。

わたしが運用しているサービスのイメージサイズは5.8GBから2.4GBになりました。

脚注
  1. そこまで真面目に実験していないの参考程度でお願いします。 ↩︎

  2. pytorch-inference-neuron:1.12.1-neuron-py38-sdk2.5.0-ubuntu20.04 ↩︎

  3. pytorch-inference-neuron:1.12.1-neuron-py38-sdk2.5.0-ubuntu20.04 ↩︎

  4. デフォルトでPython3.8が入っています。 ↩︎

GitHubで編集を提案
Opt Fit テックブログ

Discussion