Spaces:
Running
Running
| """ | |
| 快速推理测试 - 验证 Fusion-LLM 基本推理功能(无 emoji 版本) | |
| """ | |
| import sys | |
| import torch | |
| sys.path.insert(0, '.') | |
| from models.fusion_mini import FusionMini, FusionMiniConfig | |
| def test_basic_inference(): | |
| """测试基本推理功能""" | |
| print("[TEST] 开始基本推理测试...") | |
| print() | |
| # 1. 创建配置(小配置,快速测试) | |
| print("[1] 创建模型配置...") | |
| config = FusionMiniConfig( | |
| vocab_size=1000, | |
| hidden_size=64, | |
| num_hidden_layers=1, | |
| num_attention_heads=2, | |
| intermediate_size=128, | |
| max_position_embeddings=128, | |
| ) | |
| 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() # 评估模式 | |
| param_count = sum(p.numel() for p in model.parameters()) / 1e3 | |
| print(f" 参数量: {param_count:.1f}K") | |
| print(" 模型创建成功") | |
| print() | |
| # 3. 测试前向传播(无标签) | |
| print("[3] 测试前向传播(无标签)...") | |
| input_ids = torch.randint(0, config.vocab_size, (1, 16)) | |
| with torch.no_grad(): | |
| outputs = model(input_ids=input_ids) | |
| print(f" 输出类型: {type(outputs)}") | |
| if isinstance(outputs, dict): | |
| for key, value in outputs.items(): | |
| if isinstance(value, torch.Tensor): | |
| print(f" {key}: {value.shape}") | |
| print(" 前向传播成功") | |
| print() | |
| # 4. 测试前向传播(有标签,计算损失) | |
| print("[4] 测试前向传播(有标签)...") | |
| labels = torch.randint(0, config.vocab_size, (1, 16)) | |
| with torch.no_grad(): | |
| outputs = model(input_ids=input_ids, labels=labels) | |
| print(f" Loss: {outputs['loss'].item():.4f}") | |
| print(" 损失计算成功") | |
| print() | |
| # 5. 测试生成(少量 token) | |
| print("[5] 测试生成(5 个 token)...") | |
| with torch.no_grad(): | |
| generated = model.generate( | |
| input_ids=input_ids[:, :4], | |
| max_new_tokens=5, | |
| temperature=1.0, | |
| do_sample=False, # 贪婪解码,确定性 | |
| ) | |
| print(f" 生成形状: {generated.shape}") | |
| print(" 生成成功") | |
| print() | |
| print("[TEST] 基本推理测试通过") | |
| # test passes if no exception | |
| if __name__ == "__main__": | |
| print("=" * 60) | |
| print("Fusion-LLM 基本推理测试") | |
| print("=" * 60) | |
| print() | |
| try: | |
| success = test_basic_inference() | |
| 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) | |