训练配置#

训练配置定义了训练过程中的优化策略、分布式训练设置及日志记录方式。我们通过 runner 字典进行配置,核心内容包括:

  • type:训练运行器类型,如 FSDPTrainRunner

  • 基础训练参数max_epochslearning_rateweight_decaymax_grad_norm

  • collator:数据整理器,定义如何将样本组装成批次

  • tokenizer:分词器配置

  • metric:指标记录器配置

  • 学习率调度lr_scheduler_typewarmup_ratio

  • 显存优化enable_gradient_checkpointingenable_mixed_precision_trainingmixed_precision_dtypesharding_strategy

以下是一个完整的训练配置示例:

runner = dict(
    type='FSDPTrainRunner',
    max_epochs=24,
    learning_rate=5e-5,
    weight_decay=0.0,
    max_grad_norm=1.0,
    collator=dict(
        type='DictCollator',
        keys=[
            'states',
            'observation.eepose',
            'timestamp',
            'images',
            'img_masks',
            'lang_tokens',
            'lang_masks',
            'actions',
            'action_masks'
        ],
        meta_keys=[
            'task_description',
            'prompt',
            'info',
            'stats'
        ]),
    sampler=None,
    tokenizer=dict(
        type='PaligemmaTokenizer'
    ),
    metric=dict(
        type='VLAMetric',
        active_trackers=('jsonl', 'wandb'),
        run_dir='work_dirs',
        wandb_project='limvla',
        wandb_entity='limx',
        grad_accumulation_steps=1,
        window_size=1),
    lr_scheduler_type='linear-warmup+cosine-decay',
    warmup_ratio=0.03,
    enable_gradient_checkpointing=True,
    enable_mixed_precision_training=True,
    mixed_precision_dtype='bf16',
    sharding_strategy='full-shard',
    change_key_name=False)