This model is a fine-tuned version of
NousResearch/Llama-2-7b-hf on the darulm dataset.
From darulm aphorisms, dramaturgy, history, humor, literature domains were sampled
Training on 2_125_871_104 tokens.
1from transformers import AutoModelForCausalLM, AutoTokenizer
2
3# Load a pretrained BitNet model
4model = "igorktech/RuBit-LLama-63M"
5tokenizer = AutoTokenizer.from_pretrained(model)
6model = AutoModelForCausalLM.from_pretrained(model)
7
8def convert_to_bitnet(model, copy_weights):
9 for name, module in model.named_modules():
10 # Replace linear layers with BitNet
11 if isinstance(module, LlamaSdpaAttention) or isinstance(module, LlamaMLP):
12 for child_name, child_module in module.named_children():
13 if isinstance(child_module, nn.Linear):
14 bitlinear = BitLinear(child_module.in_features, child_module.out_features, child_module.bias is not None).to(device="cuda:0")
15 if copy_weights:
16 bitlinear.weight = child_module.weight
17 if child_module.bias is not None:
18 bitlinear.bias = child_module.bias
19 setattr(module, child_name, bitlinear)
20 # Remove redundant input_layernorms
21 elif isinstance(module, LlamaDecoderLayer):
22 for child_name, child_module in module.named_children():
23 if isinstance(child_module, LlamaRMSNorm) and child_name == "input_layernorm":
24 setattr(module, child_name, nn.Identity().to(device="cuda:0"))
25
26
27convert_to_bitnet(model, copy_weights=True)
28model.to(device="cuda:0")
29
30prompt = "Привет"
31inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
32generate_ids = model.generate(inputs.input_ids, max_length=100)
33tokenizer.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]