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개의 댓글

관련 채용 정보