|
--- |
|
library_name: transformers |
|
license: apache-2.0 |
|
datasets: |
|
- kaist-ai/CoT-Collection |
|
tags: |
|
- finetune |
|
- gpt4 |
|
- synthetic data |
|
- custom_code |
|
- h2oai |
|
--- |
|
|
|
 |
|
- This is an experimental model, Finetuned [h2oai/h2o-danube-1.8b-chat](https://huggingface.co/h2oai/h2o-danube-1.8b-chat), on variety of CoT tasks. |
|
- The original idea was to use this 1.8B model, divide the dataset based on task specific capabilities, train models and transform them into a mixture of experts. |
|
- Hyperparameters: adamw with eps of 1e-8, cosine decay w/ 20% warmup, lr=2e-5. |
|
|
|
## Format: |
|
``` |
|
<|system|></s><|prompt|></s><|answer|> |
|
``` |
|
|
|
## Benchamrks: |
|
|
|
WIP |
|
|
|
## Example: |
|
``` |
|
from transformers import AutoModelForCausalLM, AutoTokenizer, TextStreamer, StoppingCriteria |
|
import torch |
|
|
|
class MyStoppingCriteria(StoppingCriteria): |
|
def __init__(self, target_sequence, prompt): |
|
self.target_sequence = target_sequence |
|
self.prompt=prompt |
|
|
|
def __call__(self, input_ids, scores, **kwargs): |
|
generated_text = tokenizer.decode(input_ids[0]) |
|
generated_text = generated_text.replace(self.prompt,'') |
|
if self.target_sequence in generated_text: |
|
return True |
|
return False |
|
|
|
def __len__(self): |
|
return 1 |
|
|
|
def __iter__(self): |
|
yield self |
|
|
|
modelpath="aloobun/Cypher-CoT-1.8B" |
|
|
|
model = AutoModelForCausalLM.from_pretrained( |
|
modelpath, |
|
torch_dtype=torch.bfloat16, |
|
device_map="cuda", |
|
trust_remote_code=True, |
|
) |
|
|
|
tokenizer = AutoTokenizer.from_pretrained( |
|
modelpath, |
|
trust_remote_code=True, |
|
use_fast=False, |
|
) |
|
|
|
prompt = "<|prompt|>Avery opens a flower shop. She ties 8 bunches of flowers with 9 flowers in each bunch. How many bunches would she have if she put 12 flowers in each bunch instead?</s><|answer|>" |
|
encoded_input = tokenizer(prompt, return_tensors='pt') |
|
input_ids=encoded_input['input_ids'].cuda() |
|
streamer = TextStreamer(tokenizer=tokenizer, skip_prompt=True) |
|
op = model.generate( |
|
input_ids, |
|
streamer=streamer, |
|
pad_token_id=tokenizer.eos_token_id, |
|
do_sample=True, |
|
temperature=0.7, |
|
top_p=0.8, |
|
max_new_tokens=512, |
|
stopping_criteria=MyStoppingCriteria("</s>", prompt) |
|
) |
|
``` |
|
|
|
## Output: |
|
|