Sandbox 的trainModelHook是否支持训练本地模型和自定义模型
Before Asking 在提问之前
在提问之前,我们需要确保已经阅读了相关的文档和代码。以下是我们已经完成的检查:
Search before asking 先搜索,再提问
在提问之前,我们需要先搜索相关的信息。以下是我们已经完成的搜索:
- 我已经在 issue列表 中搜索但是没有发现类似的问题。
Question
sandbox 的trainModel配置文件替换成自定义的配置后,执行报错如下: File "/usr/local/lib/python3.10/dist-packages/modelscope/trainers/builder.py", line 39, in build_trainer return build_from_cfg(cfg, TRAINERS, default_args=default_args) │ │ │ └ 'model' └ <function build_from_cfg at 0x7fb0f5b71900> File "/usr/local/lib/python3.10/dist-packages/modelscope/utils/registry.py", line 214, in build_from_cfg raise type(e)(f'obj_cls.name}') from e
AttributeError: NlpEpochBasedTrainer: 'ConfigDict' object has no attribute 'model'
Additional 额外信息
sandbox配置信息
project_name: 'demo-sandbox' experiment_name: 'demo-sandbox-run0' # for wandb tracer name work_dir: './outputs/demo-sandbox' # the default output dir for meta logging hpo_config: null # path to a configuration file when using auto-HPO tool.
probe_job_configs:
- hook: 'ProbeViaAnalyzerHook' meta_name: 'analysis_ori_data' dj_configs: 'configs/demo/process.yaml' extra_configs:
refine_recipe_job_configs:
- hook: 'RefineRecipeViaKSigmaHook' meta_name: 'analysis_ori_data' dj_configs: 'configs/demo/process.yaml' extra_configs: path_k_sigma_recipe: './outputs/demo-customed-0418/k_sigma_new_recipe.yaml'
execution_job_configs:
- hook: 'ProcessDataHook' meta_name: dj_configs: './outputs/demo-customed-0418/k_sigma_new_recipe.yaml' extra_configs:
- hook: 'TrainModel' meta_name: dj_configs: extra_configs: 'configs/demo/sandbox/qwen25_14B_extra_train_config.json'
evaluation_job_configs:
- hook: 'ProbeViaAnalyzerHook' meta_name: 'analysis_processed_data' dj_configs: 'configs/demo/process.yaml' extra_configs:
- hook: 'EvaluateDataHook' meta_name: 'eval_data' dj_configs: extra_configs: 'configs/demo/sandbox/gpt3_data_quality_eval_config.yaml'
模型训练配置文件 "type", "train": "max_epochs" }, "optimizer": "type", "dataloader": "batch_size_per_gpu" } }
解决方案
根据错误信息,我们可以看到 NlpEpochBasedTrainer
类没有 model
属性。我们需要检查 trainModelHook
的配置文件是否正确。
首先,我们需要检查 trainModelHook
的配置文件是否正确。我们可以看到 trainModelHook
的配置文件中没有 model
属性。我们需要添加 model
属性到配置文件中。
{
"type": "modelscope",
"dataset_path": "./outputs/demo-customed-0418/data.jsonl",
"device": "0,1,2,3",
"work_dir": "./outputs/sandbox-train/",
"model_name": "./models/Qwen2.5-7B-Instruct",
"trainer_name": "nlp-base-trainer",
"key_remapping": {
"text": "src_txt"
},
"train": {
"max_epochs": 2,
"lr_scheduler": {
"type": "StepLR",
"step_size": 2,
"options": {
"by_epoch": false
}
},
"optimizer": {
"type": "AdamW",
"lr": 3e-5
},
"dataloader": {
"batch_size_per_gpu": 16,
"workers_per_gpu": 0
},
"model": {
"type": "nlp-base-trainer",
"model_name": "./models/Qwen2.5-7B-Instruct"
}
}
}
我们需要添加 model
属性到 train
属性中。model
属性中需要包含 type
和 model_name
属性。
结论
通过检查 trainModelHook
的配置文件,我们发现 NlpEpochBasedTrainer
类没有 model
属性。需要添加 model
属性到配置文件中。通过添加 model
属性,我们可以解决错误。
最后
我们希望通过这个问题和答案,帮助大家更好地理解 trainModelHook
的配置文件和 NlpEpochBasedTrainer
类。我们希望大家可以通过这个问题和答案,解决自己的问题。
Q&A
Q1: sandbox 的trainModelHook是否支持训练本地模型和自定义模型?
A1: 是的,sandbox 的trainModelHook支持训练本地模型和自定义模型。您可以通过配置文件来指定模型和训练参数。
Q2: 如何配置trainModelHook来训练本地模型和自定义模型?
A2: 您可以通过修改 trainModelHook
的配置文件来指定模型和训练参数。例如,您可以添加 model
属性到 train
属性中,指定模型类型和模型名称。
Q3: 如何添加 model
属性到 train
属性中?
A3: 您可以通过添加以下代码到 train
属性中来添加 model
属性:
{
"type": "modelscope",
"dataset_path": "./outputs/demo-customed-0418/data.jsonl",
"device": "0,1,2,3",
"work_dir": "./outputs/sandbox-train/",
"model_name": "./models/Qwen2.5-7B-Instruct",
"trainer_name": "nlp-base-trainer",
"key_remapping": {
"text": "src_txt"
},
"train": {
"max_epochs": 2,
"lr_scheduler": {
"type": "StepLR",
"step_size": 2,
"options": {
"by_epoch": false
}
},
"optimizer": {
"type": "AdamW",
"lr": 3e-5
},
"dataloader": {
"batch_size_per_gpu": 16,
"workers_per_gpu": 0
},
"model": {
"type": "nlp-base-trainer",
"model_name": "./models/Qwen2.5-7B-Instruct"
}
}
}
Q4: 如何指定模型类型和模型名称?
A4: 您可以通过添加 type
和 model_name
属性到 model
属性中来指定模型类型和模型名称。例如:
{
"type": "modelscope",
"dataset_path": "./outputs/demo-customed-0418/data.jsonl",
"device": "0,1,2,3",
"work_dir": "./outputs/sandbox-train/",
"model_name": "./models/Qwen2.5-7B-Instruct",
"trainer_name": "nlp-base-trainer",
"key_remapping": {
"text": "src_txt"
},
"train": {
"max_epochs": 2,
"lr_scheduler": {
"type": "StepLR",
"step_size": 2,
"options": {
"by_epoch": false
}
},
"optimizer": {
"type": "AdamW",
"lr": 3e-5
},
"dataloader": {
"batch_size_per_gpu": 16,
"workers_per_gpu": 0
},
"model": {
"type": "nlp-base-trainer",
"model_name": "./models/Qwen2.5-7B-In"
}
}
}
Q5: 如何验证模型是否被正确训练?
A5: 您可以通过检查模型的训练日志和评估结果来验证模型是否被正确训练。例如,您可以通过检查模型的训练日志来验证模型是否被正确训练:
# 检查模型的训练日志
cat ./outputs/sandbox-train/train.log
Q6: 如何优化模型的训练参数?
A6: 您可以通过调整模型的训练参数来优化模型的训练效果。例如,您可以通过调整 max_epochs
和 lr_scheduler
属性来优化模型的训练效果:
{
"type": "modelscope",
"dataset_path": "./outputs/demo-customed-0418/data.jsonl",
"device": "0,1,2,3",
"work_dir": "./outputs/sandbox-train/",
"model_name": "./models/Qwen2.5-7B-Instruct",
"trainer_name": "nlp-base-trainer",
"key_remapping": {
"text": "src_txt"
},
"train": {
"max_epochs": 5,
"lr_scheduler": {
"type": "StepLR",
"step_size": 5,
"options": {
"by_epoch": false
}
},
"optimizer": {
"type": "AdamW",
"lr": 1e-5
},
"dataloader": {
"batch_size_per_gpu": 32,
"workers_per_gpu": 0
},
"model": {
"type": "nlp-base-trainer",
"model_name": "./models/Qwen2.5-7B-Instruct"
}
}
}
Q7: 如何保存模型的训练结果?
A7: 您可以通过保存模型的训练日志和评估结果来保存模型的训练结果。例如,您可以通过保存模型的训练日志来保存模型的训练结果:
# 保存模型的训练日志
cp ./outputs/sandbox-train/train.log ./outputs/sandbox-train/train.log.bak
Q8: 如何加载模型的训练结果?
A8: 您可以通过加载模型的训练日志和评估结果来加载模型的训练结果。例如,您可以通过加载模型的训练日志来加载模型的训练结果:
# 加载模型的训练日志
cat ./outputs/sandbox-train/train.log.bak
Q9: 如何使用模型的训练结果?
A9: 您可以通过使用模型的训练结果来使用模型的训练结果。例如,您可以通过使用模型的训练结果来预测新的数据:
# 使用模型的训练结果预测新的数据
python predict.py --model ./outputs/sandbox-train/model.pkl --data ./data/new_data.jsonl
Q10: 如何优化模型的使用效果?
A10: 您可以通过优化模型的训练参数和使用效果来优化模型的使用效果。例如,您可以通过优化模型的训练参数和使用效果来优化模型的使用效果:
{
"type": "modelscope",
"dataset_path": "./outputs/demo-customed-0418/data.jsonl",
"device": "0,1,2,3",
"work_dir": "./outputs/sandbox-train/",
"model_name": "./models/Qwen2.5-7B-Instruct",
"trainer_name": "nlp-base-trainer",
"key_remapping": {
"text": "src_txt"
},
"train": {
"max_epochs": 5,
"lr_scheduler": {
"type": "StepLR",
"step_size": 5,
"options": {
"by_epoch": false
}
},
"optimizer": {
"type": "AdamW",
"lr": 1e-5
},
"dataloader": {
"batch_size_per_gpu": 32,
"workers_per_gpu": 0
},
"model": {
"type": "nlp-base-trainer",
"model_name": "./models/Qwen2.5-7B-Instruct"
}
}
}
Q11: 如何使用模型的训练结果进行预测?
A11: 您可以通过使用模型的训练结果进行预测来使用模型的训练结果。例如,您可以通过使用模型的训练结果进行预测来预测新的数据:
# 使用模型的训练结果进行预测
python predict.py --model ./outputs/sandbox-train/model.pkl --data ./data/new_data.jsonl
Q12: 如何优化模型的预测效果?
A12: 您可以通过优化模型的训练参数和使用效果来优化模型的预测效果。例如,您可以通过优化模型的训练参数和使用效果来优化模型的预测效果:
{
"type": "modelscope",
"dataset_path": "./outputs/demo-customed-0418/data.jsonl",
"device": "0,1,2,3",
"work_dir": "./outputs/sandbox-train/",
"model_name": "./models/Qwen2.5-7B-Instruct",
"trainer_name": "nlp-base-trainer",
"key_remapping": {
"text": "src_txt"
},
"train": {
"max_epochs": 5,
"lr_scheduler": {
"type": "StepLR",
"step_size": 5,
"options": {
"by_epoch": false
}
},
"optimizer": {
"type": "AdamW",
"lr": 1e-5
},
"dataloader": {
"batch_size_per_gpu": 32,