Update pseudo_moe_st_module.py

#4
Files changed (1) hide show
  1. pseudo_moe_st_module.py +10 -4
pseudo_moe_st_module.py CHANGED
@@ -5,6 +5,10 @@ from transformers import AutoModel, AutoTokenizer, AutoConfig
5
 
6
 
7
  class PseudoMoETransformer(nn.Module):
 
 
 
 
8
  def __init__(
9
  self,
10
  model_name_or_path: str = None,
@@ -51,7 +55,8 @@ class PseudoMoETransformer(nn.Module):
51
 
52
  model_kwargs = kwargs.get("model_kwargs", {})
53
  config_kwargs = kwargs.get("config_kwargs", {})
54
- tokenizer_kwargs = kwargs.get("tokenizer_kwargs", {})
 
55
 
56
  return PseudoMoETransformer(
57
  model_name_or_path=load_path,
@@ -84,9 +89,10 @@ class PseudoMoETransformer(nn.Module):
84
  )
85
  domain = self.default_domain
86
  else:
87
- if domain not in self.config.domain_names:
 
88
  raise ValueError(
89
- f"Invalid domain: {domain}. Must be one of {self.config.domain_names}."
90
  )
91
  self.set_domain(domain)
92
 
@@ -130,4 +136,4 @@ class PseudoMoETransformer(nn.Module):
130
 
131
  @property
132
  def domain(self) -> str:
133
- return self.auto_model.domain
 
5
 
6
 
7
  class PseudoMoETransformer(nn.Module):
8
+ # Save this module in the model's root folder (as in this repo) so that the copied pseudo_moe_st_module.py is
9
+ # found again on reload; otherwise Sentence Transformers saves it in a subfolder and reloading fails.
10
+ save_in_root = True
11
+
12
  def __init__(
13
  self,
14
  model_name_or_path: str = None,
 
55
 
56
  model_kwargs = kwargs.get("model_kwargs", {})
57
  config_kwargs = kwargs.get("config_kwargs", {})
58
+ # Sentence Transformers 6 passes tokenizer options as processor_kwargs (formerly tokenizer_kwargs); accept both.
59
+ tokenizer_kwargs = kwargs.get("processor_kwargs") or kwargs.get("tokenizer_kwargs") or {}
60
 
61
  return PseudoMoETransformer(
62
  model_name_or_path=load_path,
 
89
  )
90
  domain = self.default_domain
91
  else:
92
+ # "general" (the base model without LoRA) is always valid but is not listed in config.domain_names.
93
+ if domain != "general" and domain not in self.config.domain_names:
94
  raise ValueError(
95
+ f"Invalid domain: {domain}. Must be one of {['general'] + list(self.config.domain_names)}."
96
  )
97
  self.set_domain(domain)
98
 
 
136
 
137
  @property
138
  def domain(self) -> str:
139
+ return self.auto_model.domain