|
--- |
|
license: other |
|
--- |
|
|
|
## airoboros-gpt-3.5-turbo-100k-7b |
|
|
|
This is a 7b parameter, fine-tuned on 100k synthetic instruction/response pairs generated by gpt-3.5-turbo using my version of self-instruct [airoboros](https://github.com/jondurbin/airoboros) |
|
|
|
Links: |
|
|
|
* [airoboros](https://github.com/jondurbin/airoboros) |
|
* [instructions.jsonl](https://storage.googleapis.com/airoboros-dump/gpt-3.5-turbo-100k/instructions.jsonl) |
|
* [topics.txt](https://storage.googleapis.com/airoboros-dump/gpt-3.5-turbo-100k/topics-d732f92dd90a1a5337a4a02ddeaec72b.txt) |
|
|
|
### Prompt generation |
|
|
|
``` |
|
airoboros generate-instructions --instruction-count 100000 --concurrency 100 --temperature 1.0 |
|
``` |
|
|
|
### Fine-tuning |
|
|
|
The instructions.jsonl file was converted to conversation style expected by the FastChat training scripts, and then trained with: |
|
``` |
|
torchrun --nproc_per_node=8 --master_port=20001 train_mem.py \ |
|
--model_name_or_path /workspace/llama-7b-hf \ |
|
--data_path ./as_conversations.json \ |
|
--bf16 True \ |
|
--output_dir /workspace/airoboros-gpt-3.5-100k-7b \ |
|
--num_train_epochs 3 \ |
|
--per_device_train_batch_size 4 \ |
|
--per_device_eval_batch_size 32 \ |
|
--gradient_accumulation_steps 4 \ |
|
--evaluation_strategy "steps" \ |
|
--eval_steps 1500 \ |
|
--save_strategy "steps" \ |
|
--save_steps 1500 \ |
|
--save_total_limit 8 \ |
|
--learning_rate 2e-5 \ |
|
--weight_decay 0. \ |
|
--warmup_ratio 0.04 \ |
|
--lr_scheduler_type "cosine" \ |
|
--logging_steps 1 \ |
|
--fsdp "full_shard auto_wrap offload" \ |
|
--fsdp_transformer_layer_cls_to_wrap 'LlamaDecoderLayer' \ |
|
--tf32 True \ |
|
--model_max_length 2048 \ |
|
--gradient_checkpointing True \ |
|
--lazy_preprocess True |
|
``` |
|
|
|
Training took roughly 22 hours on 8x nvidia A100 80GB. |
|
|
|
Conversion to conversation style: |
|
``` |
|
import json |
|
import uuid |
|
inputs = [json.loads(line) for line in open("instructions.jsonl").readlines()] |
|
conversations = [] |
|
for row in inputs: |
|
inputs = row['instruction'] |
|
conversations.append({ |
|
"id": str(uuid.uuid4()), |
|
"conversations": [ |
|
{ |
|
"from": "human", |
|
"value": inputs, |
|
}, |
|
{ |
|
"from": "gpt", |
|
"value": row['response'] |
|
}, |
|
], |
|
}) |
|
with open("as_conversations.json", "w") as outfile: |
|
outfile.write(json.dumps(conversations, indent=2) |
|
``` |
|
|
|
## Evaluation |
|
|
|
I used the same questions from (WizardVicunaLM)[]: |
|
|
|
| instruction | gpt3.5 | wizard-vicuna-13b | vicuna-13b | wizard-7b | airoboros-gpt-3.5-turbo-100k-7b | |
|
| --- | --- | --- | --- | --- | --- | |
|
| "Write a compelling product launch announcement email to inform our customers of our new software solution." | 95 | 92 | 89 | 90 | 91 | |
|
| "Draft an apology email to a customer who experienced a delay in their order, and provide reassurance that the issue has been resolved." | 94 | 96 | 90 | 89 | 91 | |
|
| "As a pirate captain, what would you say to your crew to motivate them to search for hidden treasure?" | 95 | 90 | 80 | 70 | 85 | |
|
| "Imagine you are a time traveler from the year 3000. What technological advancements would you tell people about?" | 95 | 92 | 90 | 88 | 85 | |
|
| "As a space colonist on Mars, describe your daily life and the challenges you face living on another planet." | 95 | 90 | 87 | 85 | 88 | |
|
| "How can you assess the credibility of a source of information, such as a news article or blog post, without relying solely on the reputation of the author or publisher?" | 93 | 85 | 89 | 87 | 90 | |
|
| "How can observing the behavior of other people in a social situation provide clues about cultural norms and expectations?" | 95 | 90 | 85 | 92 | 80 | |
|
| "How many text messages are sent globally in a minute? Try to explain your answer. Your explanation should take the reader through your reasoning step-by-step." | 90 | 70 | 65 | 80 | 85 | |
|
| "What are the main differences between Python and JavaScript programming languages?"| 90 | 85 | 80 | 88 | 82 | |
|
| "What are the differences between plant-based and animal-based protein sources?"| 85 | 92 | 90 | 80 | 94 | |
|
| "Describe a scenario where artificial intelligence could be used to improve the quality and efficiency of healthcare delivery." | 95 | 90 | 92 | 89 | 91 | |
|
| "How do cultural, social, and economic factors influence people's food choices, and how can this knowledge be used to promote healthier diets?" | 90 | 85 | 87 | 83 | 84 | |
|
| "How many words are spoken daily on Earth? Try to explain your answer. Your explanation should take the reader through your reasoning step-by-step." | 90 | 70 | 80 | 75 | 65 | |
|
| "How many lightning strikes occur on Earth each day? Try to explain your answer. Your explanation should take the reader through your reasoning step-by-step." | 90 | 80 | 60 | 70 | 85 | |
|
|
|
If we use gpt-3.5 as the baseline (as wizardvicuna/vicuna did), we get the following scores: |
|
|
|
| gpt3.5 | wizard-vicuna-13b | vicuna-13b | wizard-7b | airoboros-gpt-3.5-turbo-100k-7b | |
|
| --- | --- | --- | --- | --- | |
|
| 1.0 | __0.968421052631579__ | 0.9368421052631579 | 0.9473684210526315 | 0.9578947368421052 | |
|
| 1.0 | __1.0212765957446808__ | 0.9574468085106383 | 0.9468085106382979 | 0.9680851063829787 | |
|
| 1.0 | __0.9473684210526315__ | 0.8421052631578947 | 0.7368421052631579 | 0.8947368421052632 | |
|
| 1.0 | __0.968421052631579__ | 0.9473684210526315 | 0.9263157894736842 | 0.8947368421052632 | |
|
| 1.0 | __0.9473684210526315__ | 0.9157894736842105 | 0.8947368421052632 | 0.9263157894736842 | |
|
| 1.0 | 0.9139784946236559 | 0.956989247311828 | 0.9354838709677419 | __0.967741935483871__ | |
|
| 1.0 | 0.9473684210526315 | 0.8947368421052632 | __0.968421052631579__ | 0.8421052631578947 | |
|
| 1.0 | 0.7777777777777778 | 0.7222222222222222 | 0.8888888888888888 | __0.9444444444444444__ | |
|
| 1.0 | 0.9444444444444444 | 0.8888888888888888 | __0.9777777777777777__ | 0.9111111111111111 | |
|
| 1.0 | 1.0823529411764705 | 1.0588235294117647 | 0.9411764705882353 | __1.1058823529411765__ | |
|
| 1.0 | 0.9473684210526315 | __0.968421052631579__ | 0.9368421052631579 | 0.9578947368421052 | |
|
| 1.0 | 0.9444444444444444 | __0.9666666666666667__ | 0.9222222222222223 | 0.9333333333333333 | |
|
| 1.0 | 0.7777777777777778 | __0.8888888888888888__ | 0.8333333333333334 | 0.7222222222222222 | |
|
| 1.0 | 0.8888888888888888 | 0.6666666666666666 | 0.7777777777777778 | __0.9444444444444444__ | |
|
|
|
Average scores: |
|
|
|
``` |
|
gpt3.5 1.000000 |
|
wizard-vicuna-13b 0.934090 |
|
vicuna-13b 0.900847 |
|
wizard-7b 0.902428 |
|
airoboros-gpt-3.5-turbo-100k-7b 0.926496 |
|
``` |
|
As you can see, the __7b__ airoboros model performs well, even compared to 13b models. |
|
|
|
## License |
|
The model is licensed under the LLaMA model, and the dataset is licensed under the terms of OpenAI because it uses ChatGPT. Everything else is free. |