Initializes the MossModel with a given model or loads a model from the specified directory. Args: model (Optional[MossForCausalLM], optional): An existing model to use. Defaults to None. model_dir (Optional[str], optional): The directory containing the pre-t
(
self,
model: Optional[MossForCausalLM] = None,
model_dir: Optional[str] = None,
parallelism: bool = True,
device_map: Optional[Union[str, List[int]]] = None,
)
| 43 | |
| 44 | class Inference: |
| 45 | def __init__( |
| 46 | self, |
| 47 | model: Optional[MossForCausalLM] = None, |
| 48 | model_dir: Optional[str] = None, |
| 49 | parallelism: bool = True, |
| 50 | device_map: Optional[Union[str, List[int]]] = None, |
| 51 | ) -> None: |
| 52 | """ |
| 53 | Initializes the MossModel with a given model or loads a model from the specified directory. |
| 54 | |
| 55 | Args: |
| 56 | model (Optional[MossForCausalLM], optional): An existing model to use. Defaults to None. |
| 57 | model_dir (Optional[str], optional): The directory containing the pre-trained model files. Defaults to None. |
| 58 | parallelism (bool, optional): Whether to initialize model parallelism. Defaults to True. |
| 59 | device_map (Optional[Union[str, List[int]]], optional): The list of GPU device indices for model parallelism or "auto" to use the default device map. Defaults to None. |
| 60 | """ |
| 61 | self.model_dir = "OpenMOSS-Team/moss-moon-003-sft" if not model_dir else model_dir |
| 62 | |
| 63 | if model: |
| 64 | self.model = model |
| 65 | else: |
| 66 | self.model = ( |
| 67 | self.Init_Model_Parallelism(raw_model_dir=self.model_dir, device_map=device_map) |
| 68 | if parallelism |
| 69 | else MossForCausalLM.from_pretrained(self.model_dir) |
| 70 | ) |
| 71 | |
| 72 | self.tokenizer = MossTokenizer.from_pretrained(self.model_dir) |
| 73 | |
| 74 | self.prefix = PREFIX |
| 75 | self.default_paras = DEFAULT_PARAS |
| 76 | self.num_layers, self.heads, self.hidden, self.vocab_size = 34, 24, 256, 107008 |
| 77 | |
| 78 | self.moss_startwords = torch.LongTensor([27, 91, 44, 18420, 91, 31175]) |
| 79 | self.tool_startwords = torch.LongTensor([27, 91, 6935, 1746, 91, 31175]) |
| 80 | self.tool_specialwords = torch.LongTensor([6045]) |
| 81 | |
| 82 | self.innerthought_stopwords = torch.LongTensor([self.tokenizer.convert_tokens_to_ids("<eot>")]) |
| 83 | self.tool_stopwords = torch.LongTensor([self.tokenizer.convert_tokens_to_ids("<eoc>")]) |
| 84 | self.result_stopwords = torch.LongTensor([self.tokenizer.convert_tokens_to_ids("<eor>")]) |
| 85 | self.moss_stopwords = torch.LongTensor([self.tokenizer.convert_tokens_to_ids("<eom>")]) |
| 86 | |
| 87 | def Init_Model_Parallelism(self, raw_model_dir: str, device_map: Union[str, List[int]] = "auto") -> MossForCausalLM: |
| 88 | """ |
nothing calls this directly
no test coverage detected