File size: 1,062 Bytes
b84549f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
from typing import List
import torch
from methods.base.model import BaseModel
import tqdm
from torch import nn
import torch.nn.functional as F
from abc import abstractmethod
from methods.elasticdnn.model.base import ElasticDNNUtil
from methods.elasticdnn.pipeline.offline.fm_to_md.base import FM_to_MD_Util
from methods.elasticdnn.pipeline.offline.fm_lora.base import FMLoRA_Util

from utils.dl.common.model import LayerActivation


class HuggingFaceModelAPI:
    @abstractmethod
    def get_feature_hook(self, fm: nn.Module) -> LayerActivation:
        pass
    
    @abstractmethod
    def get_task_head_params(self, fm: nn.Module):
        pass
    
    @abstractmethod
    def get_qkv_proj_ff1_ff2_layer_names(self):
        pass
    
    @abstractmethod
    def get_accuracy(self, fm: nn.Module, test_loader, device, *args, **kwargs):
        pass
    
    @abstractmethod
    def infer(self, fm: nn.Module, x, *args, **kwargs):
        pass
    
    @abstractmethod
    def forward_to_get_task_loss(self, fm: nn.Module, x, y, *args, **kwargs):
        pass