Spaces:
Running
Running
Fusion-LLM 快速开始 (3分钟)
安装
方式1: 从源码安装 (推荐)
git clone https://github.com/zhan1206/fusion-llm.git
cd fusion-llm
pip install -e . # core only
# pip install -e ".[all]" # 安装所有可选依赖
方式2: 仅核心依赖
pip install torch numpy tqdm pyyaml
pip install -e .
推理 (无需预训练权重)
import sys
sys.path.insert(0, 'fusion-llm')
from models.fusion_model import FusionModel, FusionConfig
import torch
# 创建模型
config = FusionConfig(
vocab_size=100, hidden_size=64, num_hidden_layers=2,
num_attention_heads=4, intermediate_size=128,
)
model = FusionModel(config)
model.eval()
# 推理
input_ids = torch.tensor([[1, 2, 3, 4]])
with torch.no_grad():
out = model.generate(input_ids, max_new_tokens=5, do_sample=False)
print(out)
训练 (合成数据, CPU 可跑)
from models.fusion_model import FusionModel, FusionConfig
from models.thinking_dial import ThinkingDialModel, ThinkingConfig
import torch
config = FusionConfig(vocab_size=100, hidden_size=64, num_hidden_layers=2,
num_attention_heads=4, intermediate_size=128)
model = FusionModel(config)
optimizer = torch.optim.AdamW(model.parameters(), lr=1e-2)
# 简单训练数据: [2, x, y] -> [x, y, 99, x+y]
data = [([2, x, y], [x, y, 99, x + y]) for x in range(1, 6) for y in range(1, 6)]
for epoch in range(100):
for inp, lab in data:
ids = torch.tensor([inp], dtype=torch.long)
labs = torch.tensor([[-100]*len(inp) + lab], dtype=torch.long)
out = model(ids, labels=labs)
out.loss.backward()
optimizer.step()
optimizer.zero_grad()
print("训练完成!")
Thinking Dial 使用
from models.thinking_dial import ThinkingDialModel, ThinkingConfig
base = FusionModel(config)
td = ThinkingDialModel(base, ThinkingConfig(num_thinking_depths=4))
td.eval()
# depth=0: 直接回答
with torch.no_grad():
out0 = td.generate(torch.tensor([[1, 2, 3]]), max_new_tokens=5, thinking_depth=0)
# depth=3: 深度思考
with torch.no_grad():
out3 = td.generate(torch.tensor([[1, 2, 3]]), max_new_tokens=5, thinking_depth=3)