diff --git a/examples/conversation_with_agent_with_finetuned_model/FinetuneDialogAgent.py b/examples/conversation_with_agent_with_finetuned_model/FinetuneDialogAgent.py index f3167fde4..e03fa2423 100644 --- a/examples/conversation_with_agent_with_finetuned_model/FinetuneDialogAgent.py +++ b/examples/conversation_with_agent_with_finetuned_model/FinetuneDialogAgent.py @@ -43,7 +43,6 @@ def __init__( Note: Refer to `class DialogAgent(AgentBase)` for more information. """ - # pylint: disable=useless-parent-delegation super().__init__( name, sys_prompt, @@ -51,6 +50,7 @@ def __init__( use_memory, memory_config, ) + self.finetune = True def load_model( self, diff --git a/examples/conversation_with_agent_with_finetuned_model/conversation_with_agent_with_finetuned_model.py b/examples/conversation_with_agent_with_finetuned_model/conversation_with_agent_with_finetuned_model.py index 7e297aee9..292694905 100644 --- a/examples/conversation_with_agent_with_finetuned_model/conversation_with_agent_with_finetuned_model.py +++ b/examples/conversation_with_agent_with_finetuned_model/conversation_with_agent_with_finetuned_model.py @@ -9,7 +9,10 @@ Features include model and tokenizer loading, and fine-tuning on the lima dataset with adjustable parameters. """ - +# This import is necessary for AgentScope to properly use +# HuggingFaceWrapper even though it's not explicitly used in this file. +# To remove the pylint disable without causing issues +# HuggingFaceWrapper needs to be put under src/agentscope/agents. # pylint: disable=unused-import from huggingface_model import HuggingFaceWrapper from FinetuneDialogAgent import FinetuneDialogAgent @@ -52,6 +55,7 @@ def main() -> None: # loading a model saved as lora model "fine_tune_config": { "continue_lora_finetuning": False, + "max_seq_length": 4096, "lora_config": { "r": 16, "lora_alpha": 32, diff --git a/examples/conversation_with_agent_with_finetuned_model/huggingface_model.py b/examples/conversation_with_agent_with_finetuned_model/huggingface_model.py index d8bf7791d..9e0731e25 100644 --- a/examples/conversation_with_agent_with_finetuned_model/huggingface_model.py +++ b/examples/conversation_with_agent_with_finetuned_model/huggingface_model.py @@ -80,10 +80,13 @@ def __init__( fine-tuning the model. **kwargs: Additional keyword arguments. """ - super().__init__(config_name=config_name) + super().__init__( + config_name=config_name, + model_name=pretrained_model_name_or_path, + ) self.model = None self.tokenizer = None - self.max_length = max_length # Set max_length as an attribute + self.max_length = max_length self.pretrained_model_name_or_path = pretrained_model_name_or_path self.local_model_path = local_model_path self.lora_config = None @@ -358,6 +361,8 @@ def load_tokenizer( f" from '{local_model_path}'", ) self.tokenizer.padding_side = "right" + if self.tokenizer.pad_token is None: + self.tokenizer.pad_token = self.tokenizer.eos_token except Exception as e: # Handle exceptions during model loading, @@ -666,10 +671,13 @@ def fine_tune_training( "optim": "paged_adamw_8bit", "logging_steps": 1, } + max_seq_length_default = 4096 lora_config_default = {} if fine_tune_config is not None: + if fine_tune_config.get("max_seq_length") is not None: + max_seq_length_default = fine_tune_config["max_seq_length"] if fine_tune_config.get("training_args") is not None: training_defaults.update(fine_tune_config["training_args"]) if fine_tune_config.get("lora_config") is not None: @@ -709,7 +717,7 @@ def fine_tune_training( else {} ), args=trainer_args, - max_seq_length=4096, + max_seq_length=max_seq_length_default, ) logger.info( @@ -718,14 +726,7 @@ def fine_tune_training( timestamp=datetime.now().strftime("%Y-%m-%d %H:%M:%S"), ) - try: - trainer.train() - except Exception as e: - import traceback - - logger.error(f"Error during training: {e}") - traceback.print_exc() - raise + trainer.train() now = datetime.now() time_string = now.strftime("%Y-%m-%d_%H-%M-%S")