File size: 2,303 Bytes
27f969b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4718d7f
27f969b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
"""
极简测试 - 用最小配置测试(应该很快)
"""
import sys
import torch
import time
sys.path.insert(0, '.')

from models.fusion_mini import FusionMini, FusionMiniConfig


def test_tiny():
    """用极小的配置测试"""
    print("[TEST] 极简测试(极小配置)...")
    print()
    
    # 1. 创建极小配置
    print("[1] 创建配置...")
    config = FusionMiniConfig(
        vocab_size=50,        # 极小词表
        hidden_size=32,       # 极小隐层
        num_hidden_layers=1,  # 1层
        num_attention_heads=1, # 1个注意力头
        intermediate_size=64,
        max_position_embeddings=32,
    )
    print(f"   词汇表大小: {config.vocab_size}")
    print(f"   隐藏层大小: {config.hidden_size}")
    print(f"   层数: {config.num_hidden_layers}")
    print()
    
    # 2. 创建模型
    print("[2] 创建模型...")
    model = FusionMini(config)
    model.eval()
    print("   模型创建成功")
    print()
    
    # 3. 创建极小输入
    print("[3] 创建输入...")
    input_ids = torch.randint(0, config.vocab_size, (1, 8))  # batch=1, seq_len=8
    print(f"   输入形状: {input_ids.shape}")
    print()
    
    # 4. 前向传播(计时)
    print("[4] 前向传播(计时)...")
    start_time = time.time()
    
    with torch.no_grad():
        outputs = model(input_ids=input_ids)
    
    elapsed = time.time() - start_time
    print(f"   前向传播完成,耗时: {elapsed:.2f}秒")
    print()
    
    # 5. 检查输出
    print("[5] 检查输出...")
    if isinstance(outputs, dict):
        print(f"   输出类型: dict")
        for key, value in outputs.items():
            if isinstance(value, torch.Tensor):
                print(f"   {key}: {value.shape}")
    print()
    
    print("[TEST] 极简测试通过")
    # test passes if no exception


if __name__ == "__main__":
    print("=" * 60)
    print("Fusion-LLM 极简测试(极小配置)")
    print("=" * 60)
    print()
    
    try:
        success = test_tiny()
        if success:
            print()
            print("[PASS] 测试通过")
    except Exception as e:
        print()
        print(f"[FAIL] 测试出错: {e}")
        import traceback
        traceback.print_exc()
        sys.exit(1)
    
    sys.exit(0)