Views
No views yet
AutoModelForCausalLM implementation using trust_remote_code=True.model.lm_headtrust_remote_code=True is required.1from transformers import AutoModelForCausalLM, AutoTokenizer
2
3repo_id = "AIhomeJP/home1"
4
5tokenizer = AutoTokenizer.from_pretrained(
6 repo_id,
7 trust_remote_code=True,
8)
9
10model = AutoModelForCausalLM.from_pretrained(
11 repo_id,
12 trust_remote_code=True,
13)
14
15print(type(model))
16print(model.lm_head)1import torch
2from transformers import AutoModelForCausalLM, AutoTokenizer
3
4repo_id = "AIhomeJP/home1"
5
6tokenizer = AutoTokenizer.from_pretrained(
7 repo_id,
8 trust_remote_code=True,
9)
10
11model = AutoModelForCausalLM.from_pretrained(
12 repo_id,
13 trust_remote_code=True,
14)
15
16device = "cuda" if torch.cuda.is_available() else "cpu"
17model = model.to(device)
18model.eval()
19
20inputs = tokenizer(
21 "こんにちは",
22 return_tensors="pt",
23).to(device)
24
25with torch.no_grad():
26 output_ids = model.generate(
27 **inputs,
28 max_new_tokens=50,
29 do_sample=True,
30 temperature=0.8,
31 top_k=50,
32 eos_token_id=tokenizer.eos_token_id,
33 pad_token_id=tokenizer.eos_token_id,
34 )
35
36print(
37 tokenizer.decode(
38 output_ids[0],
39 skip_special_tokens=True,
40 )
41)lm_head.weight1token_emb.weight
2lm_head.weight1class TRMGPTForCausalLM(PreTrainedModel):
2 config_class = TRMGPTConfig
3 base_model_prefix = "trm_gpt"
4
5 _tied_weights_keys = ["lm_head.weight"]1def get_output_embeddings(self):
2 return self.lm_head
3
4def set_output_embeddings(self, new_embeddings):
5 self.lm_head = new_embeddings1def tie_weights(self):
2 super().tie_weights()
3
4 if self.config.tie_word_embeddings:
5 self._tie_or_clone_weights(
6 self.lm_head,
7 self.token_emb,
8 )lm_head.weight may not appear in the Safetensors filetoken_emb.weight and lm_head.weight share the same storage, Safetensors may save only one copy of the tensor.lm_head.weight entry in model.safetensors does not necessarily mean that the model has no lm_head.1token_emb.weight
2lm_head.weight1assert hasattr(model, "lm_head")
2
3assert (
4 model.lm_head.weight.data_ptr()
5 == model.token_emb.weight.data_ptr()
6)
7
8print("lm_head is available and correctly tied")lm_head.weight is reported as missing_tied_weights_keys = ["lm_head.weight"]1_keys_to_ignore_on_load_missing = [
2 r"lm_head\.weight",
3]1from transformers import AutoModelForCausalLM, AutoTokenizer
2
3repo_id = "AIhomeJP/home1"
4output_dir = "./home1_fixed"
5
6model = AutoModelForCausalLM.from_pretrained(
7 repo_id,
8 trust_remote_code=True,
9)
10
11tokenizer = AutoTokenizer.from_pretrained(
12 repo_id,
13 trust_remote_code=True,
14)
15
16model.tie_weights()
17
18assert (
19 model.lm_head.weight.data_ptr()
20 == model.token_emb.weight.data_ptr()
21)
22
23model.save_pretrained(
24 output_dir,
25 safe_serialization=True,
26)
27
28tokenizer.save_pretrained(output_dir)trust_remote_code=True is specified:1model = AutoModelForCausalLM.from_pretrained(
2 "AIhomeJP/home1",
3 trust_remote_code=True,
4)config.block_size.1inputs = tokenizer(
2 text,
3 truncation=True,
4 max_length=model.config.block_size,
5 return_tensors="pt",
6)1if tokenizer.pad_token_id is None:
2 tokenizer.pad_token = tokenizer.eos_tokeninput_ids.1outputs = model(
2 input_ids=input_ids,
3 attention_mask=attention_mask,
4 labels=input_ids,
5)
6
7loss = outputs.loss
8loss.backward()1shift_logits = logits[:, :-1, :].contiguous()
2shift_labels = labels[:, 1:].contiguous()-100.1{
2 "model_type": "trm_gpt",
3 "vocab_size": 50257,
4 "block_size": 256,
5 "n_layer": 4,
6 "n_embd": 256,
7 "n_head": 4,
8 "dropout": 0.1,
9 "recursive_steps": 2,
10 "tie_word_embeddings": true
11}trust_remote_code=True