modelscope / modelscope-agent

ModelScope-Agent: An agent framework connecting models in ModelScope with the world
https://modelscope.cn/studios/agent
Apache License 2.0
2.2k stars 244 forks source link

百川2运行demo报错:AttributeError: 'BaichuanModel' object has no attribute 'future_mask' #30

Closed Yu-Yang-Li closed 8 months ago

Yu-Yang-Li commented 9 months ago

修改配置后,在demo_qwen_agent.ipynb之前一切正常,但在运行:

重置对话,清空对话历史 agent.reset() agent.run('调用插件,查询北京市明天的天气', remote=False)

报错: File ~/modelscope-agent/demo/../modelscope_agent/agent.py:143, in AgentExecutor.run(self, task, remote, print_info) 141 # generate prompt and call llm 142 prompt = self.prompt_generator.generate(llm_result, exec_result) --> 143 llm_result = self.llm.generate(prompt) 144 if print_info: 145 print(f'|prompt{idx}: {prompt}')

File ~/modelscope-agent/demo/../modelscope_agent/llm/local_llm.py:72, in LocalLLM.generate(self, prompt) 69 response = self.model.chat( 70 self.tokenizer, prompt, history=[], system='')[0] 71 else: ---> 72 response = self.chat(prompt) 74 end_idx = response.find(self.end_token) 75 if end_idx != -1:

File ~/modelscope-agent/demo/../modelscope_agent/llm/local_llm.py:95, in LocalLLM.chat(self, prompt) 91 input_ids = self.tokenizer( 92 prompt, return_tensors='pt').input_ids.to(device) 93 input_len = input_ids.shape[1] ---> 95 result = self.model.generate( 96 input_ids=input_ids, generation_config=self.generation_cfg) 98 result = result[0].tolist()[input_len:] 99 response = self.tokenizer.decode(result)

File ~/.local/lib/python3.10/site-packages/torch/utils/_contextlib.py:115, in context_decorator..decorate_context(*args, kwargs) 112 @functools.wraps(func) 113 def decorate_context(*args, *kwargs): 114 with ctx_factory(): --> 115 return func(args, kwargs)

File ~/.local/lib/python3.10/site-packages/transformers/generation/utils.py:1648, in GenerationMixin.generate(self, inputs, generation_config, logits_processor, stopping_criteria, prefix_allowed_tokens_fn, synced_gpus, assistant_model, streamer, negative_prompt_ids, negative_prompt_attention_mask, kwargs) 1640 input_ids, model_kwargs = self._expand_inputs_for_generation( 1641 input_ids=input_ids, 1642 expand_size=generation_config.num_return_sequences, 1643 is_encoder_decoder=self.config.is_encoder_decoder, 1644 model_kwargs, 1645 ) 1647 # 13. run sample -> 1648 return self.sample( 1649 input_ids, 1650 logits_processor=logits_processor, 1651 logits_warper=logits_warper, 1652 stopping_criteria=stopping_criteria, 1653 pad_token_id=generation_config.pad_token_id, 1654 eos_token_id=generation_config.eos_token_id, 1655 output_scores=generation_config.output_scores, 1656 return_dict_in_generate=generation_config.return_dict_in_generate, 1657 synced_gpus=synced_gpus, 1658 streamer=streamer, 1659 **model_kwargs, 1660 ) 1662 elif generation_mode == GenerationMode.BEAM_SEARCH: 1663 # 11. prepare beam search scorer 1664 beam_scorer = BeamSearchScorer( 1665 batch_size=batch_size, 1666 num_beams=generation_config.num_beams, (...) 1671 max_length=generation_config.max_length, 1672 )

File ~/.local/lib/python3.10/site-packages/transformers/generation/utils.py:2730, in GenerationMixin.sample(self, input_ids, logits_processor, stopping_criteria, logits_warper, max_length, pad_token_id, eos_token_id, output_attentions, output_hidden_states, output_scores, return_dict_in_generate, synced_gpus, streamer, model_kwargs) 2727 model_inputs = self.prepare_inputs_for_generation(input_ids, model_kwargs) 2729 # forward pass to get next token -> 2730 outputs = self( 2731 **model_inputs, 2732 return_dict=True, 2733 output_attentions=output_attentions, 2734 output_hidden_states=output_hidden_states, 2735 ) 2737 if synced_gpus and this_peer_finished: 2738 continue # don't waste resources running the code we don't need

File ~/.local/lib/python3.10/site-packages/torch/nn/modules/module.py:1501, in Module._call_impl(self, *args, *kwargs) 1496 # If we don't have any hooks, we want to skip the rest of the logic in 1497 # this function, and just call forward. 1498 if not (self._backward_hooks or self._backward_pre_hooks or self._forward_hooks or self._forward_pre_hooks 1499 or _global_backward_pre_hooks or _global_backward_hooks 1500 or _global_forward_hooks or _global_forward_pre_hooks): -> 1501 return forward_call(args, **kwargs) 1502 # Do not call functions when jit is used 1503 full_backward_hooks, non_full_backward_hooks = [], []

File ~/.conda/envs/LLM/lib/python3.10/site-packages/accelerate/hooks.py:165, in add_hook_to_module..new_forward(*args, kwargs) 163 output = old_forward(*args, *kwargs) 164 else: --> 165 output = old_forward(args, kwargs) 166 return module._hf_hook.post_forward(module, output)

File ~/.cache/huggingface/modules/transformers_modules/Baichuan2-13B-Base/modeling_baichuan.py:688, in BaichuanForCausalLM.forward(self, input_ids, attention_mask, past_key_values, inputs_embeds, labels, use_cache, output_attentions, output_hidden_states, return_dict, **kwargs) 683 return_dict = ( 684 return_dict if return_dict is not None else self.config.use_return_dict 685 ) 687 # decoder outputs consists of (dec_features, layer_state, dec_hidden, dec_attn) --> 688 outputs = self.model( 689 input_ids=input_ids, 690 attention_mask=attention_mask, 691 past_key_values=past_key_values, 692 inputs_embeds=inputs_embeds, 693 use_cache=use_cache, 694 output_attentions=output_attentions, 695 output_hidden_states=output_hidden_states, 696 return_dict=return_dict, 697 ) 699 hidden_states = outputs[0] 700 logits = self.lm_head(hidden_states)

File ~/.local/lib/python3.10/site-packages/torch/nn/modules/module.py:1501, in Module._call_impl(self, *args, *kwargs) 1496 # If we don't have any hooks, we want to skip the rest of the logic in 1497 # this function, and just call forward. 1498 if not (self._backward_hooks or self._backward_pre_hooks or self._forward_hooks or self._forward_pre_hooks 1499 or _global_backward_pre_hooks or _global_backward_hooks 1500 or _global_forward_hooks or _global_forward_pre_hooks): -> 1501 return forward_call(args, **kwargs) 1502 # Do not call functions when jit is used 1503 full_backward_hooks, non_full_backward_hooks = [], []

File ~/.cache/huggingface/modules/transformers_modules/Baichuan2-13B-Base/modeling_baichuan.py:401, in BaichuanModel.forward(self, input_ids, attention_mask, past_key_values, inputs_embeds, use_cache, output_attentions, output_hidden_states, return_dict) 399 alibi_mask = self.alibi_mask 400 else: --> 401 alibi_mask = self.get_alibi_mask(inputs_embeds, seq_length_with_past) 403 if attention_mask is not None: 404 if len(attention_mask.shape) == 2:

File ~/.cache/huggingface/modules/transformers_modules/Baichuan2-13B-Base/modeling_baichuan.py:351, in BaichuanModel.get_alibi_mask(self, tensor, seq_length_with_past) 343 self.max_cache_pos = seq_length_with_past 344 self.register_buffer( 345 "future_mask", 346 _gen_alibi_mask(tensor, self.n_head, self.max_cache_pos).to( (...) 349 persistent=False, 350 ) --> 351 mask = self.future_mask[ 352 : self.n_head, :seq_length_with_past, :seq_length_with_past 353 ] 354 return mask

File ~/.local/lib/python3.10/site-packages/torch/nn/modules/module.py:1614, in Module.getattr(self, name) 1612 if name in modules: 1613 return modules[name] -> 1614 raise AttributeError("'{}' object has no attribute '{}'".format( 1615 type(self).name, name))

AttributeError: 'BaichuanModel' object has no attribute 'future_mask'

Yu-Yang-Li commented 9 months ago

model_name = 'Baichuan2-13B-Base' 模型配置: model_cfg = { 'Baichuan2-13B-Base':{ 'model_id': 'baichuan-inc/Baichuan2-13B-Base', 'model_revision': 'v1.0.1', 'use_raw_generation_config': False, 'custom_chat': False, 'generate_cfg':{ 'do_sample': True, 'max_new_tokens': 512, 'top_k': 10 } } }

Zhikaiiii commented 9 months ago

model_name = 'Baichuan2-13B-Base' 模型配置: model_cfg = { 'Baichuan2-13B-Base':{ 'model_id': 'baichuan-inc/Baichuan2-13B-Base', 'model_revision': 'v1.0.1', 'use_raw_generation_config': False, 'custom_chat': False, 'generate_cfg':{ 'do_sample': True, 'max_new_tokens': 512, 'top_k': 10 } } }

我这边用这个配置是可以跑通的,我的modelscope版本是1.8.4,请问你的是多少呢?