fusion-llm-demo / tests /test_tiny.py
zhan1206
fix: 修复所有测试警告 + 清理调试脚本
4718d7f
Raw
History Blame Contribute Delete
2.3 kB
"""
极简测试 - 用最小配置测试(应该很快)
"""
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)