Spaces:
Running
Running
| """ | |
| 极简测试 - 用最小配置测试(应该很快) | |
| """ | |
| 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) | |