avatar
tkat0.dev
Published on

Distillerの検証環境をDockerで作った

PyTorch 向けの軽量化ライブラリであるDistillerを触る環境を Docker で作っただけの話

過去に記事をかいた。

Distiller で DeepLearning のモデルを軽量化: Gradual Pruning 編 - tkato’s blog

FPGA の部屋の@marsee101さんが、ありがたい事に記事を読んで試してくださった。が、うまくうごかないそう。 結論から言うと設定の yaml ファイルが今の Distiller だと動かないみたいで、修正したら動いた。

https://twitter.com/_tkato_/status/1098310005676138501 https://twitter.com/_tkato_/status/1097975452126216192

今回は、Distiller で遊べる Docker 環境を作ってみた。 某 Web 系企業で鍛えられたので、Docker で検証環境を立ち上げて試行錯誤するのも慣れてきた。

https://github.com/tkat0/testing-distiller

似たようなもので tvm の遊べる環境も作ってる。

https://github.com/tkat0/tvm-playground

ちょっとした自慢である。

環境構築は、以下。

Distiller を clone して Python パスを通した Docker コンテナを立ち上げて、そこに bash でログインしている。

ちょっとした検証用なので Python の base image を使ってるので GPU では動かない点に注意。

$ docker-compose up -d cpu
$ docker-compose exec cpu bash

実験中はコンテナで複数プロセスを実行する事が多い(学習プロセスや tensorboard など)ので、上記のように docker-compose up -d で立ち上げて、 docker-compose exec で bash を生やして作業することが多い。

以前書いたブログ相当の学習実行は以下。

Distiller の examples を自身のリポジトリにコピーして使ってる。

まずは pretraining

root@1aff972ccdde:/work# cd examples/classifier_compression
root@1aff972ccdde:/work/examples/classifier_compression# python compress_classifier.py --arch simplenet_cifar ../../dataset/data.cifar10 -p 30 -j=1 --lr=0.01

そして pruning しながら fine-tuning

root@1aff972ccdde:/work/examples/classifier_compression# python compress_classifier.py --arch simplenet_cifar work/dataset/data.cifar10 -p 50 --lr=0.001 --epochs=200 --resume=simplenet_cifar/best.pth.tar --compress=simplenet_cifar.schedule_agp.yaml

どうやら以前書いた simplenet_cifar.schedule_agp.yaml だと現状動かないようだった。ちゃんと追ってないけど、以下でうまく動いているっぽい。

以下の修正。

https://github.com/tkat0/testing-distiller/commit/c4f9d22258d5659fd8e7804b5576622ab62cfccb?diff=unified

Distiller、pip install でインストールできるとありがたいんだけどな…