File size: 5,984 Bytes
fa32dd4 46afb13 fa32dd4 46afb13 fe37e0c |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 |
---
base_model: openlm-research/open_llama_3b_v2
tags:
- llama-2
- instruct
- finetune
- alpaca
- gpt4
- synthetic data
- distillation
datasets:
- teknium/openhermes
model-index:
- name: openhermes-7b
results: []
license: apache-2.0
language:
- en
---
# OpenHermes-Llama-3B
*An OpenLlama-3B finetune for role-play, instruction following, and code generation*
<img src="https://cdn-uploads.huggingface.co/production/uploads/648a374f00f7a3374ee64b99/bDQ8ybHVS--CibUf4rvFB.png" width="400" height="400">
*Logo AI Generated by Dalle*
For a guide on how this was fine tuned, check out this blog [post](https://calebfahlgren.com/post/how-to-finetune-a-large-language-model).
# Model description
**OpenHermes-Lllama_3B** is a finetune of the Hermes dataset that has a fully open source dataset!
It was trained on 15,000 entries of primarily GPT-4 generated data, from open datasets across the AI landscape, including:
- GPTeacher - General Instruct, Roleplay v1, Roleplay v2, and Code Instruct Datasets, by Teknium
- WizardLM (v1, evol_instruct 70k), by WizardLM Team/nlpxucan
- Airoboros GPT-4 (v1.0), by JonDurbin
- Camel-AI's domain expert datasets, by the Camel-AI Team
- CodeAlpaca, by Sahil2801
- GPT4-LLM and Unnatural Instructions, by Microsoft
**OpenHermes-Lllama-3B** has improved very much improved coding abilities and general instruction following than the OpenLlama-3B base model. You can see the before and after outputs comparison below.
# Example Outputs
### Writing Code
**Q:** Write a Fast API endpoint with ratelimiting
**OpenHermes-Llama-3B Output**
<img src="https://cdn-uploads.huggingface.co/production/uploads/648a374f00f7a3374ee64b99/ZZxphP0JN1Y6HfcGDRwJ1.png" width="600" height="600">
**Base Model Output**
*Create a new FastAPI app
*Create a new endpoint
*Create a new ratelimit middleware
*Create a new ratelimit rule
*Create a new ratelimit backend
*Create a new ratelimit backend
### Planning an Itinerary
**Q:** Create a travel itinery for italy for 3 days for me.
**OpenHermes-Llama-3B Output**
Hi,
I am happy to help you create an itinery for Italy for 3 days.
Here is an example itinery:
Day 1:
Morning: Arrive in Rome, check into your hotel.
Afternoon: Visit the Colosseum, the Roman Forum, and the Pantheon.
Evening: Have a dinner at a local restaurant and enjoy the nightlife in Rome.
Day 2:
Morning: Visit the Vatican Museums, St. Peter's Basilica, and the Sistine Chapel.
Afternoon: Take a guided tour of the Italian capital.
Evening: Have a dinner at a local restaurant and enjoy the nightlife in Rome.
Day 3:
Morning: Visit the Fontana di Trevi, the Pantheon, and the Colosseum.
Afternoon: Take a guided tour of the Italian capital.
Evening: Have a dinner at a local restaurant and enjoy the nightlife in Rome.
You can also add visits to other attractions such as the Capitoline Museums, the Palatine Hill, and the Spanish Steps.
I hope this itinery helps you plan your trip to Italy. Let me know if you have any questions or if you need any further assistance.
**Base Model Output**
Hi,
I am a travel agent and I can help you with your travel itinerary.
I can help you with the following:
1. Flight booking
2. Hotel booking
3. Car rental
4. Tour booking
5. Visa
6. Travel insurance
7. Airport transfers
8. Airport pick up
9. Airport drop off
10. Airport lounge
11. Airport lounge pick up
12. Airport lounge drop off
### Explaining Concepts
**Q:** Explain golang structs
**OpenHermes-Llama-3B Output**
A golang struct is a way to define a data type in Go. It is a collection of fields, each of which is a value of a specific type. The fields are arranged in a hierarchy and are connected using interfaces.
Example:
```go
type User struct {
Name string
Age int
Email string
}
```
In this example, the User struct contains a Name field, an Age field, an Email field, and a few other fields. The Name field is of type string, the Age field is of type int, and the Email field is of type string. The User struct is connected to other structs through interfaces, such as the interface for the User type.
The main advantage of structs in Go is that they can be used to represent data in a way that is more flexible and easier to use than traditional arrays or maps. Structs also allow for more complex data structures to be created without the need for nested arrays or maps.
Here's an example of how to use a User struct:
package main
```go
import (
"fmt"
"strings"
)
type User struct {
Name string
Age int
Email string
}
func main() {
user1 := User{"John", 25, "[email protected]"}
user2 := User{"Mary", 22, "[email protected]"}
// Print the users' names and ages
fmt.Printf("User 1: %s (%d)\nUser 2: %s (%d)\n", user1.Name, user1.Age, user2.Name, user2.Age)
// Print the users' emails separated by commas
email1 := user1.Email
email2 := user2.Email
fmt.Printf("User 1's email: %s\nUser 2's email: %s\n", email1, email2)
}
```
In this example, the User struct is used to represent two different users. The Name field is used to store the users' names, the Age field is used to store their ages, and the Email field is used to store their emails. The main function prints out the users' names and ages, along with their emails separated by commas.
In summary, a golang struct is a way to define data types in Go. It is a collection of fields, each of which is a value of a specific type. The fields are arranged in a hierarchy and are connected through interfaces. The main advantage of structs in Go is that they can be used to represent data in a way that is more flexible and easier to use than traditional arrays or maps.
**Base Model Output**
*A struct is a named collection of variables.
# Benchmark Comparison
## HumanEval
| Model | pass@1 |
| ------------------------------ | ------ |
| openllama-3b-v2 (base) | 8.1% |
| openhermes-llama-3b (finetune) | 9.8% | |