fusion-llm-demo / docs /00-快速开始.md
zhan1206
feat: setup.py, quick-start guide, architecture doc, model registry
0159072
|
Raw
History Blame
2.34 kB

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)

下一步