File size: 1,581 Bytes
36c78b1 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
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
|