Views
No views yet
1import os
2
3import torch
4import transformers
5from transformers import (AutoConfig, AutoModelForCausalLM, AutoTokenizer,
6 GenerationConfig, pipeline, set_seed)
7
8model_id = "ibm-fms/Bamba-9B"
9repo_id = "tiny-random/bamba"
10save_path = f"/tmp/{repo_id}"
11
12config = AutoConfig.from_pretrained(model_id, trust_remote_code=True)
13config.attn_layer_indices = [1]
14config.attn_rotary_emb = 4
15config.hidden_size = 16
16config.intermediate_size = 32
17config.num_attention_heads = 2
18config.num_hidden_layers = 2
19config.num_key_value_heads = 1
20config.mamba_expand = 4
21config.mamba_d_head = 8
22config.mamba_n_heads = 8
23config.mamba_d_state = 8
24
25tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True)
26tokenizer.save_pretrained(save_path)
27
28model = AutoModelForCausalLM.from_config(
29 config, torch_dtype=torch.bfloat16,
30 trust_remote_code=True,
31)
32# model.generation_config = GenerationConfig.from_pretrained(
33# model_id, trust_remote_code=True
34# )
35
36
37set_seed(42)
38with torch.no_grad():
39 for name, p in sorted(model.named_parameters()):
40 torch.nn.init.normal_(p, 0, 0.5)
41 print(name, p.shape)
42
43model.save_pretrained(save_path)
44
45model = AutoModelForCausalLM.from_pretrained(save_path).cuda()
46tokenizer = AutoTokenizer.from_pretrained(save_path)
47message = ["Hello, world!"]
48inputs = tokenizer(message, return_tensors='pt', return_token_type_ids=False).to(model.device)
49response = model.generate(**inputs, max_new_tokens=2)[0]
50print(tokenizer.convert_ids_to_tokens(response, skip_special_tokens=False))