|
--- |
|
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-). |
|
|