微调Llama2模型时遇TypeError: bool类型不可迭代问题求助
问题描述
我使用包含22条训练数据、8条验证数据的小型数据集微调Llama2模型,使用SFT Trainer时持续报错,尝试调整训练参数、PEFT配置均未解决问题,目标是完成小样本训练后进行推理测试。在TrainingArguments中添加remove_unused_columns=False后,出现如下错误:
TypeError: argument of type 'bool' is not iterable
我的TrainingArguments配置如下:
TrainingArguments( _n_gpu=2, adafactor=False, adam_beta1=0.9, adam_beta2=0.999, adam_epsilon=1e-08, auto_find_batch_size=False, bf16=False, bf16_full_eval=False, data_seed=None, dataloader_drop_last=False, dataloader_num_workers=0, dataloader_pin_memory=True, ddp_backend=None, ddp_broadcast_buffers=None, ddp_bucket_cap_mb=None, ddp_find_unused_parameters=None, ddp_timeout=1800, debug=[], deepspeed=None, disable_tqdm=False, dispatch_batches=None, do_eval=True, do_predict=False, do_train=False, eval_accumulation_steps=None, eval_delay=0, eval_steps=100, evaluation_strategy=IntervalStrategy.EPOCH, fp16=False, fp16_backend=auto, fp16_full_eval=False, fp16_opt_level=O1, fsdp=[], fsdp_config={'min_num_params': 0, 'xla': False, 'xla_fsdp_grad_ckpt': False}, fsdp_min_num_params=0, fsdp_transformer_layer_cls_to_wrap=None, full_determinism=False, gradient_accumulation_steps=4, gradient_checkpointing=False, greater_is_better=None, group_by_length=False, half_precision_backend=auto, hub_always_push=False, hub_model_id=None, hub_private_repo=False, hub_strategy=HubStrategy.EVERY_SAVE, hub_token=<HUB_TOKEN>, ignore_data_skip=False, include_inputs_for_metrics=False, include_tokens_per_second=False, jit_mode_eval=False, label_names=None, label_smoothing_factor=0.0, learning_rate=5e-05, length_column_name=length, load_best_model_at_end=False, local_rank=0, log_level=passive, log_level_replica=warning, log_on_each_node=True, logging_dir=test_trainer/runs/Nov23_10-56-58_frontierrhel8, logging_first_step=False, logging_nan_inf_filter=True, logging_steps=500, logging_strategy=IntervalStrategy.STEPS, lr_scheduler_type=SchedulerType.LINEAR, max_grad_norm=1.0, max_steps=20, metric_for_best_model=None, mp_parameters=, no_cuda=False, num_train_epochs=2, optim=OptimizerNames.ADAMW_TORCH, optim_args=None, output_dir=test_trainer, overwrite_output_dir=False, past_index=-1, per_device_eval_batch_size=4, per_device_train_batch_size=4, prediction_loss_only=False, push_to_hub=False, push_to_hub_model_id=None, push_to_hub_organization=None, push_to_hub_token=<PUSH_TO_HUB_TOKEN>, ray_scope=last, remove_unused_columns=False, report_to=[], resume_from_checkpoint=None, run_name=test_trainer, save_on_each_node=False, save_safetensors=False, save_steps=500, save_strategy=IntervalStrategy.STEPS, save_total_limit=None, seed=42, sharded_ddp=[], skip_memory_metrics=True, tf32=None, torch_compile=False, torch_compile_backend=None, torch_compile_mode=None, torchdynamo=None, tpu_metrics_debug=False, tpu_num_cores=None, use_cpu=False, use_ipex=False, use_legacy_prediction_loop=False, use_mps_device=False, warmup_ratio=0.0, warmup_steps=10, weight_decay=0.0, )
解决方法
- 修复
mp_parameters参数:将mp_parameters=改为mp_parameters="",该参数需为字符串类型,空值不能直接留空,否则会触发类型迭代错误。 - 开启训练开关:把
do_train=False改为do_train=True,否则训练流程无法启动,还会引发后续逻辑异常。 - 指定
label_names参数:结合SFT Trainer的特性,添加label_names=["labels"],配合remove_unused_columns=False一起使用,确保数据列被正确识别处理。 - 适配小数据集调整batch size:训练集仅22条数据,当前
per_device_train_batch_size=4+gradient_accumulation_steps=4的有效batch size为16,建议将per_device_train_batch_size改为2,避免数据加载时出现维度不匹配问题。
内容的提问来源于stack exchange,提问作者Akshat Jain
相关产品推荐
相关产品推荐

