File size: 3,150 Bytes
c1a46f7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
"""
实验运行脚本 — Person E 负责

自动化运行消融实验,比较不同配置的效果。

使用方式:
    python scripts/run_experiments.py
"""

import sys
from pathlib import Path

sys.path.insert(0, str(Path(__file__).resolve().parent.parent / "src"))


# 实验配置列表
EXPERIMENTS = [
    {
        "name": "exp1_baseline_transformer",
        "description": "基线: 从头训练标准 Transformer (6层, d=512)",
        "overrides": {
            "model.type": "transformer_scratch",
            "model.transformer.num_encoder_layers": 6,
            "model.transformer.num_decoder_layers": 6,
            "model.transformer.d_model": 512,
            "model.transformer.use_flash_attention": False,
            "model.transformer.use_rotary_embedding": False,
        },
    },
    {
        "name": "exp2_transformer_rope",
        "description": "消融: Transformer + RoPE 位置编码",
        "overrides": {
            "model.type": "transformer_scratch",
            "model.transformer.use_rotary_embedding": True,
        },
    },
    {
        "name": "exp3_transformer_flash_attn",
        "description": "消融: Transformer + Flash Attention 2",
        "overrides": {
            "model.type": "transformer_scratch",
            "model.transformer.use_flash_attention": True,
        },
    },
    {
        "name": "exp4_transformer_full",
        "description": "完整: Transformer + RoPE + Flash Attention",
        "overrides": {
            "model.type": "transformer_scratch",
            "model.transformer.use_flash_attention": True,
            "model.transformer.use_rotary_embedding": True,
        },
    },
    {
        "name": "exp5_nllb_lora",
        "description": "预训练微调: NLLB-600M + LoRA",
        "overrides": {
            "model.type": "finetune_nllb",
            "model.pretrained.use_lora": True,
            "model.pretrained.lora.r": 16,
        },
    },
    {
        "name": "exp6_nllb_full_finetune",
        "description": "预训练全量微调: NLLB-600M",
        "overrides": {
            "model.type": "finetune_nllb",
            "model.pretrained.use_lora": False,
        },
    },
]


def run_single_experiment(exp_config: dict):
    """
    运行单个实验。

    TODO [Person E]:
    1. 从 base config 创建实验配置
    2. 应用 overrides
    3. 设置 experiment.name 和 output_dir
    4. 调用训练流程
    5. 在测试集上评估
    6. 保存实验结果
    """
    raise NotImplementedError("TODO: Person E 实现 run_single_experiment")


def main():
    """
    运行所有实验。

    TODO [Person E]:
    1. 遍历 EXPERIMENTS 列表
    2. 对每个实验调用 run_single_experiment
    3. 收集所有实验结果
    4. 生成对比表格
    5. 保存汇总报告
    """
    print("=" * 60)
    print("  EasyTranslate - Experiment Runner")
    print("=" * 60)

    for exp in EXPERIMENTS:
        print(f"\n>>> Running: {exp['name']} - {exp['description']}")
        # run_single_experiment(exp)

    raise NotImplementedError("TODO: Person E 实现实验运行主流程")


if __name__ == "__main__":
    main()