https://github.com/yuanchun-li/ModelDiff
ModelDiff는 두 모델의 유사도를 비교하는 데에 사용됩니다. 두 모델에 동일한 입력을 넣고, 결과까지 진행되는 DDV(Decision Distance Vector) 결정 거리 백터를 계산합니다. 이것의 Similarity를 통해 모델이 얼마나 유사한 지 유사도 값을 제공합니다.
dataset
model
modeldiff.py
benchmark.py
논문에 사용된 모델을 다운로드 받아서 넣습니다. github에 데이터셋을 다운로드 받을 수 있는 구글 드라이브 링크가 있습니다.
load_model.py를 통해 다운로드.
논문에 있는 model들을 담고 있습니다.
터미널 명령어
python modeldiff.py -model1 "model1" -model2 "model2"
예)
python modeldiff.py -model1 "pretrain(resnet18,ImageNet)-transfer(Flower102,0.5)-" -model2 "pretrain(resnet18,ImageNet)-transfer(Flower102,0.5)-quantize(qint8)-"
벤치마크의 크기와 사용할 모델 수는 벤치마크.py에서 변경할 수 있습니다. 이 문서에 사용된 모델은 Flower102 및 StanfordDogs120 데이터 세트로 훈련된 MobileNetV2 및 ResNet18입니다. 다른 아키텍처와 데이터 세트는 벤치마크 파이의 ImageBenchmark 클래스에 추가할 수 있습니다(아래 487줄부터 503줄까지).
논문에서 사용됨
기타 아치
또한 이 문서에 사용된 벤치마크는 구글 드라이브에서 다운로드할 수 있습니다.
DDV(결정 거리 벡터) 모델 유사성을 비교하는 코드는 evaluate.ipynb에 있습니다. 이 코드는 benchmark.py에서 벤치마크 모델을 로드하고 유사성을 비교합니다. 하지만 라이브러리나 데이터셋을 불러오는데에 한계가 있을 수 있습니다. modeldiff.py에서도 DDV 모델 유사성 비교가 가능합니다.
def compare > model_similarity = self.compute_similarity_with_ddv(profiling_inputs)
ddm을 ddv로 바꾸면 됩니다.
seed_input을 받아
algorithm1, mutation을 만들어 profiling_inputs으로 만듭니다.
그 후 ddv를 계산하고 comare합니다.