Spaces:
Build error
Build error
| #!/usr/bin/env python | |
| # This script creates a super tiny model that is useful inside tests, when we just want to test that | |
| # the machinery works, without needing to check the quality of the outcomes. | |
| # | |
| # usage: adjust the configs if wanted, but otherwise just run the script | |
| from pathlib import Path | |
| from transformers import LlamaConfig, LlamaForCausalLM, LlamaTokenizer | |
| mname_tiny = "tiny-random-LlamaForCausalLM" | |
| path = Path(mname_tiny) | |
| path.mkdir(parents=True, exist_ok=True) | |
| config = LlamaConfig() | |
| config.update( | |
| dict( | |
| vocab_size=32000, | |
| hidden_size=16, | |
| intermediate_size=16 * 4, | |
| num_hidden_layers=2, | |
| num_attention_heads=4, | |
| ) | |
| ) | |
| model = LlamaForCausalLM(config) | |
| tokenizer = LlamaTokenizer.from_pretrained("path_to_llama_7b") | |
| # Test w/ one text | |
| query = "This is a test" | |
| query_tokens = tokenizer(query, return_tensors="pt") | |
| input = { | |
| "input_ids": query_tokens["input_ids"], | |
| "attention_mask": query_tokens["attention_mask"], | |
| } | |
| out_gen = model.generate(**input) | |
| text = tokenizer.batch_decode(out_gen) | |
| # Save model + config + tokenizer | |
| model.half() # makes it smaller | |
| model.save_pretrained(path) | |
| tokenizer.save_pretrained(path) | |
| # test we can load it back | |
| model = LlamaForCausalLM.from_pretrained(path) | |
| print(f"Generated {mname_tiny} - Upload the generated folder to the hub") | |