File size: 3,486 Bytes
c4ba41b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# AssemLM 2.0 training configuration.
# The launch script supplies local model and dataset paths through environment variables.

run_id: assemlm_v2
run_root_dir: ./results
seed: 42
wandb_project: assemlm-v2
wandb_entity: null
wandb_group: train

datasets:
  assemble_data:
    dataset_py: hdf5datasets
    eval_with_val: true
    num_samples: 50
    point_token_len: 256
    label_pad_token_id: -100
    per_device_batch_size: 3
    num_workers: 4
    # ``auto`` discovers every assemlm_*.hdf5 file below ASSEMLM_DATA_ROOT.
    train_mix: auto
    test_mix: auto
    data_features: src_pc,tgt_pc,imgs,lang,asset,category,pre_pose
    seed: 42
    shuffle: true
    drop_last: true
    import_rotation: true
    centering_mode: mean
  point_token_len: 256

framework:
  name: AssemLM2
  framework_py: AssemLM2
  pvlm_py: pvlm
  vlm:
    base_vlm: ${oc.env:ASSEMLM_VLM_PATH}
    attn_implementation: eager
  point_encoder:
    type: vn_dgcnn_patch
    vn_dgcnn_patch:
      pc_feat_dim: 512
      fusion_module: patch_transformer
      pooling: mean
      norm_type: rmsnorm
      num_patches: 128
      patch_size: 4
      patch_method: fps_knn
      normalize_frame: true
      force_fp32: true
      bridge:
        enabled: true
        hidden_dim: 1024
        num_layers: 4
        num_heads: 8
        ffn_dim: 4096
        dropout: 0.1
        pos_embed_type: fourier
        fourier_bands: 6
        fourier_max_freq: 10.0
        deepstack_enabled: true
        deepstack_num_layers: 3
        deepstack_layer_indexes: auto
        deepstack_init_scale: 0.1
        feature_layout: four_branch_equiv_invariant
        position_normalize: joint_isotropic
        scale_encoding_enabled: true
        scale_injection: film
        scale_feature_mode: part_radii_center_distance_joint_radius
        scale_reference: 1.0
        scale_log_clip: 10.0
        attention_isolation: protect_invariant
  point_projector:
    projection_hidden_layer: 2
    backbone_output_dim: 6
    projection_hidden_dim: [1024, 2048]
    project_output_dim: 2048
  point_mrope:
    enabled: true
    grid_size: 64
    normalize: joint_isotropic
    base_mode: first_point
    reflow_text_positions: true
  point_attention:
    bidirectional_enabled: true
    bidirectional_scope: all_points
    feature_isolation: protect_invariant
  pose_regression:
    enabled: true
    query_mode: pose_query_token
    query_token: <pose_query>
    hidden_dim: 4096
    num_blocks: 2
    output_dim: 9
    trans_loss_weight: 1.0
    rot_loss_weight: 1.0
    rot_loss_unit: radian
  use_category_in_instruction: true

trainer:
  max_train_steps: 10000000
  num_warmup_steps: 50000
  save_interval: 5000
  save_start_step: 0
  save_end_step: 500000
  eval_interval: 1000
  eval_start_step: 0
  eval_end_step: 10000000
  learning_rate:
    base: 1.0e-5
    pvlm_interface: 5.0e-6
  lr_scheduler_type: cosine_with_min_lr
  scheduler_specific_kwargs:
    min_lr: 5.0e-7
  freeze_modules: ""
  max_grad_norm: 1.0
  warmup_ratio: 0.1
  weight_decay: 0.0
  logging_frequency: 10
  gradient_clipping: 1.0
  gradient_accumulation_steps: 1
  optimizer:
    name: AdamW
    betas: [0.9, 0.95]
    eps: 1.0e-8
    weight_decay: 1.0e-8
  enable_gradient_checkpointing: true
  enable_mixed_precision_training: true
  vlm_max_length: 1800
  vlm_padding: true
  eval_seed: 42
  reproducible_training: true
  deterministic_training: true
  pa_thresholds: 0.01,0.008,0.005
  epoch_eval_enabled: true
  epoch_checkpoint_enabled: true