File size: 2,981 Bytes
04f923c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
from dataclasses import dataclass, field

@dataclass
class EvalArguments:
    model_name_or_path: str = field(
        default="mistralai/Mistral-7B-v0.1", metadata={"help": "Name to a huggingface native pretrained model or path to a model on disk."})
    model_pretrained_lora_weights: str = field(
        default=None, metadata={"help": "Path to a checkpoint directory."})
    output_filepath: str = field(
        default="rewards_examples_idan_mini.json", metadata={"help": "Path to the decode result or to a dir containing such files."}) # ADD output filepath
    result_filename: str = field(
        default=None, metadata={"help": "The path to the result json file. If not provided, will automatically create one. "})
    per_device_batch_size: int = field(
        default=12, metadata={"help": "The path to the output json file."})
    flash_attn: bool = field(default=False, metadata={"help": "If True, uses Flash Attention."})
    bfloat16: bool = field(
        default=False, metadata={"help": "If True, uses bfloat16. If lora and four_bits are True, bfloat16 is used for the lora weights."})

    # peft / quantization
    use_lora: bool = field(default=False, metadata={"help": "If True, uses LoRA."})
    load_in_4bit: bool = field(default=False, metadata={"help": "If True, uses 4-bit quantization."})
    load_in_8bit: bool = field(default=False, metadata={"help": "If True, uses 8-bit quantization."})

    # reward model specific args
    reward_output_fmt: str = field(default=None, metadata={"help": "If 0, takes the softmax-ed output at index 0. If 1-0, takes the softmax-ed output at index 1 - index 0. Otherwise, just takes the raw output."})
    soft_preference: bool = field(default=False, metadata={"help": "If True, uses soft preference."})
    apply_sigmoid_to_reward: bool = field(default=False, metadata={"help": "If True, applies sigmoid to the reward."})

    transformer_cache_dir: str = field(
        default=None,
        metadata={
            "help": "Path to a directory where transformers will cache the model. "
            "If None, transformers will use the default cache directory."
        },)
    use_fast_tokenizer: bool = field(
        default=True,
        metadata={
            "help": "Use fast tokenizer if True. "
            "Fast LLaMA tokenizer forces protobuf downgrade to 3.20.3. "
            "Use fast tokenizer only if you can live with that."
        },
    )
    trust_remote_code: bool = field(default=False, metadata={"help": "If True, enables unpickling of arbitrary code in AutoModelForCausalLM#from_pretrained."})

    def __post_init__(self):
        # separate multiple model names or paths by comma
        if self.model_name_or_path is not None:
            self.model_name_or_path = self.model_name_or_path.split(',')

            # if loading 1 model, convert to string like normal
            if len(self.model_name_or_path) == 1:
                self.model_name_or_path = self.model_name_or_path[0]