File size: 1,140 Bytes
54ad1e5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# model_build.py

import os
os.environ["KERAS_BACKEND"] = "jax"

import keras

from veylon_model import create_llm
from tokenizer import TokenizerWrapper

from config import (
    CONTEXT,
    ffn_mult,
    d_Latent,
    D_MODEL,
    numberofheads,
    numberoflayers,
    vocab_size
)

# Mixed precision is set inside veylon_model.py, but we ensure it here too
keras.mixed_precision.set_global_policy("mixed_bfloat16")

tokenizer = TokenizerWrapper("tokenizer.json")

# n_kv_heads is completely removed - pure MLA
model = create_llm(
    vocab_size=vocab_size,
    d_model=D_MODEL,
    n_layers=numberoflayers,
    n_heads=numberofheads,
    d_latent=d_Latent,
    ffn_mult=ffn_mult,
    max_seq_len=CONTEXT,
    use_moe=False,
)

optimizer = keras.optimizers.AdamW(
    learning_rate=1e-4,
    weight_decay=0.01,
    global_clipnorm=1.0,
)

loss_fn = keras.losses.SparseCategoricalCrossentropy(
    from_logits=True,
)

model.compile(
    optimizer=optimizer,
    loss=loss_fn,
    jit_compile=True,
)

# Explicitly build to print summary
model.build((None, CONTEXT))
model.summary()