카테고리 없음

Distiller : Basic Usage Examples

SciomageLAB 2024. 10. 18. 00:15
반응형

GitHub README에는 아래 3가지 샘플이 있다. 이것에 대해서 자세히 알아보고자 한다.

  • Example: Simple training-only session (no compression)
  • Example: Getting parameter statistics of a sparsified model
  • Example: Post-training quantization

1-1. Simple training-only session (no compression) : 원문

다음은 CIFAR10 데이터 세트에서 'simplenet'이라는 네트워크의 훈련 전용 (압축 없음)을 호출합니다. 이것은 대략 TorchVision의 샘플 Imagenet 교육 응용 프로그램을 기반으로 하므로 해당 응용 프로그램을 사용했다면 익숙해 보일 것입니다. 이 예에서는 압축 메커니즘을 호출하지 않습니다. 잘라 내기 후 미세 조정을 위해 훈련이 필수 부분이기 때문에 훈련 만합니다.

이 명령을 처음 실행하면 CIFAR10 코드가 컴퓨터에 다운로드 되므로 약간의 시간이 걸릴 수 있습니다. 다운로드 프로세스가 완료 될 때까지 기다리십시오.

CIFAR10 데이터 세트의 경로는 임의적 이지만 이 예에서는 데이터 세트를 distiller와 동일한 디렉토리 수준 (예 : ../../../data.cifar10)에 배치합니다.

먼저 샘플 디렉토리로 변경 한 다음 애플리케이션을 호출합니다.:

$ cd distiller/examples/classifier_compression
$ python3 compress_classifier.py --arch simplenet_cifar ../../../data.cifar10 -p 30 -j=1 --lr=0.01

TensorBoard 백엔드를 사용하여 훈련 진행 상황을 볼 수 있습니다 (아래 다이어그램에서는 LR 값이 서로 다른 두 개의 훈련 세션을 보여줍니다). 압축 세션의 경우 활성화 및 매개 변수 희소성 수준 추적과 정규화 손실을 추가했습니다.

1-2. Simple training-only session (no compression) : 해석

위 내용을 그대로 잘 따라 했다면 뭔가 콘솔창에 쭉 올라오고 다 됐다곤 하지만 뭐가 다 됐는지 알기 어렵다. (...)

그래서 이것의 실체가 무엇인지, 어떻게 실행하는지 코드를 분석하고자 한다.

compress_classifier.py 파일은 이름에서 알 수 있듯이 분류기를 압축하는 것 같다. 내용은 200줄 정도이다.

소스를 보면 커멘드 라인의 argument를 파싱하는데, argument를 보면 소스코드 해석에 도움이 된다. args는 compress_classifier.py 파일 자체, classifier, distillation, pruning에서 각각 이뤄진다.

- compress_classifier
--> classifier
--> distillation
--> pruning

distiller.apputils.image_classifier.classifier.init_classifier_compression_arg_parser에서 주요한 args 파싱이 이뤄진다. 불친절했던 python3 compress_classifier.py --arch simplenet_cifar ../../../data.cifar10 -p 30 -j=1 --lr=0.01의 args를 찾아보면아래와 같다.

--arch : model architecture
-p : print frequency
-j : workers
--lr : --learning-rate

이렇게 파싱한 후 ClassifierCompressorSampleApp가 main app에 해당하는 부분이다.

반응형