1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

NVIDIA JetsonAdvent Calendar 2024

Day 6

機械学習のモデルファイルをDocker環境に保持する方法

Last updated at Posted at 2024-11-27

Docker環境を使って機械学習の推論をする場合、モデルファイルをどのように保持するのかという問題に付きあたる。

モデルファイルのダウンロード、モデルファイルの最適化 optimizeなどの処理をDocker環境の構築 docker build あるいは Docker環境の中で 毎回行うのは、時間がかかりすぎてもったいない。
「ねえ、動いているのを見せてよ」となったときに、docker run の直後にすぐに実行してみせたい。

選択肢1:Dockerfileの中に手順を記述する。

例: wget, gdown などを使って、指定のURLからダウンロードする。
RUN wget -o {保存するファイル名} ${URL}

選択肢2:保存先のディレクトリを、host環境のフォルダとする。

pretrained モデルをダウンロードするのが、推論時に実行するスクリプトの中で行われている場合もある。

標準時の状況

この場合には、ダウンロードが、guest環境内のディスク領域に保存される。
docker run --rm のオプションが指定されているときには
guest環境内のディスク領域は、基本毎回再構築される。

docker run -it --rm --net=host --runtime nvidia -e DISPLAY=$DISPLAY \
	-v ${GIT_ROOT}/depth-anything-zed/weights:/root/depth-anything-zed/weights \

この例では、weightsのフォルダをhost環境をマウントしておくことで永続化させている。

こうすれば、既にダウンロード済みのファイルがあるときには、再度のダウンロードをしなくて済む。

選択肢3:docker run 時の --rm オプションを付けない。

こうすると、docker runを実行するたびに、前のディスクの状況が引き継がれるようになる。
利点: これだけで、dockerのguest環境のディスクの状況が保持される。
欠点: 毎回の動作が、それまでの動作結果のディスクの状況で影響受ける。
発生しやすくなるトラブル:
 今の環境では、たまたまあるファイルがディスクにあるので動作している。
 しかし、別の環境ではそのファイルがないので動作しない。
 そういうことが起こりやすくなる。

基本、おすすめしない。

追記: ZED SDK のDEPTH_MODE.NEURAL_PLUSを利用の場合

上記のモードでは、実行時にモデルをダウンロードし、optimizeを実行している。
実行後に以下のファイルが作られている。
このファイルはzed_sdk のインストーラーの実行では、生成されない。
/usr/local/zed/resouces/neural_depth_3.6.model
選択肢3のやり方では対処できなかった。
選択肢2のやり方を応用して対処するのがいいだろう。
USER_WEIGHT_CACHE のようなところを永続化の領域とする。

  1. /usr/local/zed/resouces/neural_depth_3.6.model がなくて、USER_WEIGHT_CACHEにあれば、
    USER_WEIGHT_CACHEのを/usr/local/zed/resouces/neural_depth_3.6.modelにコピーする。
  2. どちらにもなければ、何もしない。
  3. python3 スクリプト.py
  4. USER_WEIGHT_CACHEになければ、/usr/local/zed/resouces/neural_depth_3.6.modelをUSER_WEIGHT_CACHEにコピーする。
  5. docker環境を終了する。

こんな手順になるだろうか。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?