seigot / tetris

A Tetris Game for programming education in Japanese
MIT License
30 stars 107 forks source link

GitAuto: pytorch入りのdockerを用意する #152

Open gitauto-ai[bot] opened 3 weeks ago

gitauto-ai[bot] commented 3 weeks ago

Resolves #20

What is the feature

Pytorchを含むDockerイメージのサイズを小型化し、より軽量な環境を提供する。

Why we need the feature

現在提供されているPytorch入りのDockerイメージは約3.8GBと大きく、ダウンロードやストレージの使用に時間とリソースを多く消費します。一方で、PytorchなしのDockerイメージはサイズが小さいものの、毎回Pytorchを新規にインストールする手間が発生します。これらの課題を解決するために、Pytorchを含みながらもサイズの小さいDockerイメージを用意することで、ユーザーの利便性を向上させることが目的です。

How to implement and why

  1. ベースイメージの最適化:

    • より軽量なベースイメージ(例: python:3.10-slim)を使用し、不要なパッケージを排除することで全体のサイズを削減します。
  2. 不要な依存関係の除去:

    • ROSやGazeboなど、プロジェクトに直接必要でないパッケージやライブラリをDockerイメージから除去します。
  3. マルチステージビルドの導入:

    • ビルド環境と実行環境を分離し、最終的なイメージにビルドツールや中間ファイルが含まれないようにします。
  4. キャッシュの最適化:

    • pipのキャッシュをクリアし、一つのRUNコマンドでパッケージをインストールすることでレイヤー数を減らし、イメージサイズを小さくします。
  5. Pytorchの効率的なインストール:

    • 必要なバージョンのPytorchを事前ビルドされたバイナリからインストールし、ビルド時間とサイズを削減します。
  6. 圧縮と最適化:

    • Dockerイメージの最適な圧縮設定を適用し、さらに不要なファイルやキャッシュを削除します。

これらの手法を組み合わせることで、Pytorchを含みながらもサイズを大幅に削減したDockerイメージを作成します。

About backward compatibility

既存のPytorch入りDockerイメージを使用しているユーザーへの影響を最小限に抑えるため、新しい小型イメージは別のタグ(例: pytorchv1.10-slim)で提供します。これにより、従来のイメージを引き続き使用したいユーザーは既存のタグを利用し、サイズを重視するユーザーは新しいタグを選択することが可能です。また、ドキュメントを更新し、新しいイメージの利用方法を明確に説明します。

Test these changes locally

git checkout -b gitauto/issue-20-cbc6f5e2-f8ac-4299-909b-abd0e8aa2a66
git pull origin gitauto/issue-20-cbc6f5e2-f8ac-4299-909b-abd0e8aa2a66