--- language: - en tags: - pytorch - causal-lm - pythia license: apache-2.0 datasets: - Dahoas/synthetic-instruct-gptj-pairwise --- This model is created by finetuning [`EleutherAI/pythia-1.4b-deduped`](https://huggingface.co/EleutherAI/pythia-1.4b-deduped) on the [`Dahoas/synthetic-instruct-gptj-pairwise`](https://huggingface.co/datasets/Dahoas/synthetic-instruct-gptj-pairwise). You can try a [demo](https://cloud.lambdalabs.com/demos/ml/gpt-neox-side-by-side) of the model hosted on [Lambda Cloud](https://lambdalabs.com/service/gpu-cloud). ### Model Details - Finetuned by: [Lambda](https://lambdalabs.com/) - Model type: Transformer-based Language Model - Language: English - Pre-trained model: [EleutherAI/pythia-1.4b-deduped](https://huggingface.co/EleutherAI/pythia-1.4b-deduped) - Dataset: [Dahoas/synthetic-instruct-gptj-pairwise](https://huggingface.co/datasets/Dahoas/synthetic-instruct-gptj-pairwise) - Library: [transformers](https://huggingface.co/docs/transformers/index) - License: Apache 2.0 ### Prerequisites Running inference with the model takes ~4GB of GPU memory. ### Quick Start ``` import torch from transformers import AutoTokenizer, pipeline, StoppingCriteria, StoppingCriteriaList device = torch.device("cuda:0") if torch.cuda.is_available() else torch.device("cpu") model_name = "lambdalabs/pythia-1.4b-deduped-synthetic-instruct" max_new_tokens = 2048 stop_token = "<|stop|>" class KeywordsStoppingCriteria(StoppingCriteria): def __init__(self, keywords_ids: list): self.keywords = keywords_ids def __call__( self, input_ids: torch.LongTensor, scores: torch.FloatTensor, **kwargs ) -> bool: if input_ids[0][-1] in self.keywords: return True return False tokenizer = AutoTokenizer.from_pretrained( model_name, ) tokenizer.pad_token = tokenizer.eos_token tokenizer.add_tokens([stop_token]) stop_ids = [tokenizer.encode(w)[0] for w in [stop_token]] stop_criteria = KeywordsStoppingCriteria(stop_ids) generator = pipeline( "text-generation", model=model_name, device=device, max_new_tokens=max_new_tokens, torch_dtype=torch.float16, stopping_criteria=StoppingCriteriaList([stop_criteria]), ) example = "Can you give me some tips on how to save money every month." text = "Question: {}\nAnswer:".format(example) result = generator( text, num_return_sequences=1, ) output = result[0]["generated_text"] print(output) ``` Output: ``` Question: Can you give me some tips on how to save money every month. Answer:Create a budget and track your spending. 2. Cut down on unnecessary expenses, such as eating out, shopping, and entertainment. 3. Make a list of your monthly expenses and stick to it. 4. Take advantage of discounts and coupons when shopping. 5. Make sure to pay your bills on time to avoid late fees. 6. Save a portion of your income each month by investing it in a high-yield savings account. 7. Consider automating your savings by setting up a recurring transfer from your checking to a savings account. 8. Take advantage of free entertainment opportunities, such as going to the park or museum. 9. Look for ways to save on utilities, such as installing energy-efficient appliances. 10. Research and use public transportation to save on gas.<|stop|> ``` ### Training The model was trained on the [`Dahoas/synthetic-instruct-gptj-pairwise`](https://huggingface.co/datasets/Dahoas/synthetic-instruct-gptj-pairwise). We split the original dataset into the train (first 32000 examples) and validation (the remaining 1144 examples) subsets. We finetune the model for 4 epoches. This took 8xA100 80GB 2 hours, where we set `batch_size_per_gpu` to `8` (so global batch size is 64), and learning rate to `0.00002` (with linear decay to zero at the last trainig step). You can find a Weights and Biases record [here](https://wandb.ai/chuanli11/public-ft-synthetic-instruct-gptj-pairwise-pythia1-4b?workspace=user-).