Modeldiff github 살펴보기

Serendipity·2023년 11월 2일
0

2023 LeSN

목록 보기
37/52

https://github.com/yuanchun-li/ModelDiff

논문 내용 복습/요약
https://velog.io/@thdalwh3867/%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0-ModelDiff-Testing-Based-DNN-Similarity-Comparison-for-ModelReuse-Detection

ModelDiff는 두 모델의 유사도를 비교하는 데에 사용됩니다. 두 모델에 동일한 입력을 넣고, 결과까지 진행되는 DDV(Decision Distance Vector) 결정 거리 백터를 계산합니다. 이것의 Similarity를 통해 모델이 얼마나 유사한 지 유사도 값을 제공합니다.

전체 Directory

dataset
model
modeldiff.py
benchmark.py

dataset

논문에 사용된 모델을 다운로드 받아서 넣습니다. github에 데이터셋을 다운로드 받을 수 있는 구글 드라이브 링크가 있습니다.

model

load_model.py를 통해 다운로드.
논문에 있는 model들을 담고 있습니다.

modeldiff.py (ddv 연산 파일)

터미널 명령어
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)-"

benchmark.py

벤치마크의 크기와 사용할 모델 수는 벤치마크.py에서 변경할 수 있습니다. 이 문서에 사용된 모델은 Flower102 및 StanfordDogs120 데이터 세트로 훈련된 MobileNetV2 및 ResNet18입니다. 다른 아키텍처와 데이터 세트는 벤치마크 파이의 ImageBenchmark 클래스에 추가할 수 있습니다(아래 487줄부터 503줄까지).

논문에서 사용됨

  • self.datasets = ['Flower102', 'SDog120']
  • self.archs = ['mbnetv2', 'resnet18']]

기타 아치

  • self.datasets = ['MIT67', 'Flower102', 'SDog120']]
  • self.archs = ['mbnetv2', 'resnet18', 'vgg16_bn', 'vgg11_bn', 'resnet34', 'resnet50']
    디버그용
  • self.datasets = ['Flower102']
  • self.archs = ['resnet18']

또한 이 문서에 사용된 벤치마크는 구글 드라이브에서 다운로드할 수 있습니다.

평가

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합니다.

profile
I'm an graduate student majoring in Computer Engineering at Inha University. I'm interested in Machine learning developing frameworks, Formal verification, and Concurrency.

0개의 댓글