| | --- |
| | language: |
| | - en |
| | tags: |
| | - pytorch |
| | - causal-lm |
| | license: mit |
| |
|
| | --- |
| | |
| | # Lit-125M - A Small Fine-tuned Model For Fictional Storytelling |
| |
|
| | Lit-125M is a GPT-Neo 125M model fine-tuned on 2GB of a diverse range of light novels, erotica, and annotated literature for the purpose of generating novel-like fictional text. |
| |
|
| | ## Model Description |
| |
|
| | The model used for fine-tuning is [GPT-Neo 125M](https://huggingface.co/EleutherAI/gpt-neo-125M), which is a 125 million parameter auto-regressive language model trained on [The Pile](https://pile.eleuther.ai/).. |
| |
|
| | ## Training Data & Annotative Prompting |
| |
|
| | The data used in fine-tuning has been gathered from various sources such as the [Gutenberg Project](https://www.gutenberg.org/). The annotated fiction dataset has prepended tags to assist in generating towards a particular style. Here is an example prompt that shows how to use the annotations. |
| |
|
| | ``` |
| | [ Title: The Dunwich Horror; Author: H. P. Lovecraft; Genre: Horror; Tags: 3rdperson, scary; Style: Dark ] |
| | *** |
| | When a traveler in north central Massachusetts takes the wrong fork... |
| | ``` |
| |
|
| | The annotations can be mixed and matched to help generate towards a specific style. |
| |
|
| | ## Downstream Uses |
| |
|
| | This model can be used for entertainment purposes and as a creative writing assistant for fiction writers. The small size of the model can also help for easy debugging or further development of other models with a similar purpose. |
| |
|
| | ## Example Code |
| |
|
| | ``` |
| | from transformers import AutoTokenizer, AutoModelForCausalLM |
| | |
| | model = AutoModelForCausalLM.from_pretrained('hakurei/lit-125M') |
| | tokenizer = AutoTokenizer.from_pretrained('hakurei/lit-125M') |
| | |
| | prompt = '''[ Title: The Dunwich Horror; Author: H. P. Lovecraft; Genre: Horror ] |
| | *** |
| | When a traveler''' |
| | |
| | input_ids = tokenizer.encode(prompt, return_tensors='pt') |
| | output = model.generate(input_ids, do_sample=True, temperature=1.0, top_p=0.9, repetition_penalty=1.2, max_length=len(input_ids[0])+100, pad_token_id=tokenizer.eos_token_id) |
| | |
| | generated_text = tokenizer.decode(output[0]) |
| | print(generated_text) |
| | ``` |
| |
|
| | An example output from this code produces a result that will look similar to: |
| |
|
| | ``` |
| | [ Title: The Dunwich Horror; Author: H. P. Lovecraft; Genre: Horror ] |
| | *** |
| | When a traveler takes a trip through the streets of the world, the traveler feels like a youkai with a whole world inside her mind. It can be very scary for a youkai. When someone goes in the opposite direction and knocks on your door, it is actually the first time you have ever come to investigate something like that. |
| | That's right: everyone has heard stories about youkai, right? If you have heard them, you know what I'm talking about. |
| | It's hard not to say you |
| | ``` |
| |
|
| | ## Team members and Acknowledgements |
| |
|
| | - [Anthony Mercurio](https://github.com/harubaru) |
| | - Imperishable_NEET |