ZwwWayne commited on
Commit
28a9aa9
1 Parent(s): ec21cec

fix: fix meta instruction

Browse files
Files changed (1) hide show
  1. modeling_internlm.py +11 -6
modeling_internlm.py CHANGED
@@ -777,13 +777,15 @@ class InternLMForCausalLM(InternLMPreTrainedModel):
777
  reordered_past += (tuple(past_state.index_select(0, beam_idx) for past_state in layer_past),)
778
  return reordered_past
779
 
780
- def build_inputs(self, tokenizer, query: str, history: List[Tuple[str, str]] = []):
781
  prompt = ""
782
- for record in history:
783
- prompt += f"""<s><|User|>:{record[0]}<eoh>\n<|Bot|>:{record[1]}<eoa>\n"""
784
- if len(prompt) == 0:
785
  prompt += "<s>"
786
- prompt += f"""<|User|>:{query}<eoh>\n<|Bot|>:"""
 
 
787
  return tokenizer([prompt], return_tensors="pt")
788
 
789
  @torch.no_grad()
@@ -797,9 +799,12 @@ class InternLMForCausalLM(InternLMPreTrainedModel):
797
  do_sample: bool = True,
798
  temperature: float = 0.8,
799
  top_p: float = 0.8,
 
 
 
800
  **kwargs,
801
  ):
802
- inputs = self.build_inputs(tokenizer, query, history)
803
  inputs = {k: v.to(self.device) for k, v in inputs.items() if torch.is_tensor(v)}
804
  outputs = self.generate(
805
  **inputs,
 
777
  reordered_past += (tuple(past_state.index_select(0, beam_idx) for past_state in layer_past),)
778
  return reordered_past
779
 
780
+ def build_inputs(self, tokenizer, query: str, history: List[Tuple[str, str]] = [], meta_instruction=""):
781
  prompt = ""
782
+ if meta_instruction:
783
+ prompt += f"""<s><|System|>:{meta_instruction}\n"""
784
+ else:
785
  prompt += "<s>"
786
+ for record in history:
787
+ prompt += f"""<|User|>:{record[0]}\n<|Bot|>:{record[1]}<eoa>\n"""
788
+ prompt += f"""<|User|>:{query}\n<|Bot|>:"""
789
  return tokenizer([prompt], return_tensors="pt")
790
 
791
  @torch.no_grad()
 
799
  do_sample: bool = True,
800
  temperature: float = 0.8,
801
  top_p: float = 0.8,
802
+ meta_instruction: str = "You are an AI assistant whose name is InternLM (书生·浦语).\n"
803
+ "- InternLM (书生·浦语) is a conversational language model that is developed by Shanghai AI Laboratory (上海人工智能实验室). It is designed to be helpful, honest, and harmless.\n"
804
+ "- InternLM (书生·浦语) can understand and communicate fluently in the language chosen by the user such as English and 中文.",
805
  **kwargs,
806
  ):
807
+ inputs = self.build_inputs(tokenizer, query, history, meta_instruction)
808
  inputs = {k: v.to(self.device) for k, v in inputs.items() if torch.is_tensor(v)}
809
  outputs = self.generate(
810
  **inputs,