|
import os, sys |
|
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))) |
|
import torch |
|
from bit_transformer import BitTransformerLM |
|
from bit_transformer.training import train_loop as train |
|
|
|
|
|
def test_train_compression_metrics(): |
|
model = BitTransformerLM(d_model=16, nhead=4, num_layers=1, dim_feedforward=32, max_seq_len=8) |
|
data = torch.zeros((4, 8), dtype=torch.long) |
|
metrics = train(model, data, epochs=1, compress_prob=1.0, log=False) |
|
m = metrics[0] |
|
assert m['compressed_loss'] > 0 |
|
assert m['compression_ratio'] < 1.0 |
|
assert m['raw_loss'] == 0 |
|
|
|
|
|
def test_train_no_compression(): |
|
model = BitTransformerLM(d_model=16, nhead=4, num_layers=1, dim_feedforward=32, max_seq_len=8) |
|
data = torch.zeros((4, 8), dtype=torch.long) |
|
metrics = train(model, data, epochs=1, compress_prob=0.0, log=False) |
|
m = metrics[0] |
|
assert m['raw_loss'] > 0 |
|
assert m['compressed_loss'] == 0 |
|
|
|
|
|
def test_train_direct_compression(): |
|
model = BitTransformerLM(d_model=16, nhead=4, num_layers=1, dim_feedforward=32, max_seq_len=8) |
|
data = torch.zeros((4, 8), dtype=torch.long) |
|
metrics = train(model, data, epochs=1, compress_prob=0.0, direct_prob=1.0, log=False) |
|
m = metrics[0] |
|
assert m['direct_loss'] > 0 |
|
|
|
|
|
def test_diffusion_training_loop(): |
|
model = BitTransformerLM(d_model=16, nhead=4, num_layers=1, dim_feedforward=32, max_seq_len=8) |
|
data = torch.randint(0, 2, (4, 8), dtype=torch.long) |
|
metrics = train(model, data, epochs=1, diffusion=True, log=False) |
|
m = metrics[0] |
|
assert m['raw_loss'] > 0 |
|
|
|
|