This model is a fine-tuned version of
sbintuitions/tiny-lm on the HuggingFaceFW/fineweb dataset.
The repository includes the joined model for ease of use, and the
bit_projection_weights.pt for further analysis.
1from transformers import AutoModelForCausalLM
2import torch
3
4from utf8_tokenizer import UTF8Tokenizer
5
6model_id = "sign/utf8-lm-tiny"
7
8tokenizer = UTF8Tokenizer()
9model = AutoModelForCausalLM.from_pretrained(model_id)
10
11prompt = "My name is"
12
13inputs = tokenizer([prompt], return_tensors="pt",
14 padding=True,
15 add_special_tokens=True)
16inputs["input_ids"] = inputs["input_ids"].to(torch.long)
17# We need to remove the EOS token
18inputs["input_ids"] = inputs["input_ids"][:, :-1]
19inputs["attention_mask"] = inputs["attention_mask"][:, :-1]
20
21
22with torch.no_grad():
23 out = model.generate(
24 **inputs,
25 max_new_tokens=64,
26 )
27
28print(tokenizer.decode(out[0], skip_special_tokens=False))
1python run_clm.py \
2 --use_bit_embeddings True \
3 --output_dir ./output-tiny-lm-fineweb \
4 --dataset_name HuggingFaceFW/fineweb \
5 --streaming True \
6 --dataloader_num_workers 1 \
7 --dataloader_prefetch_factor 4 \
8 --dataloader_pin_memory True \
9 --dataloader_persistent_workers True \
10 --do_train True \
11 --save_strategy steps \
12 --max_steps 20000 \
13 --save_steps 1000 \
14 --save_total_limit 2 \
15 --logging_steps 100 \
16 --logging_strategy steps \
17 --model_name_or_path sbintuitions/tiny-lm \
18 --per_device_train_batch_size 128 \
19 --block_size 256 \
20 --optim adamw_torch_fused \
21 --learning_rate 3e-4 \
22 --lr_scheduler_type cosine \
23 --warmup_ratio 0.01 \
24 --weight_decay 0.1 \
25 --adam_beta1 0.9 \
26 --adam_beta2 0.95 \
27 --max_grad_norm 1.0 \
28 --gradient_checkpointing True \
29 --bf16 True \
30 --seed 42 \
31 --report_to wandb \
32 --include_num_input_tokens_seen True