gemma2-9B-GGUF / README.md
Deeokay's picture
Update README.md
9bdd5ea verified
|
raw
history blame
No virus
4.82 kB
---
base_model: unsloth/gemma-2-9b-bnb-4bit
language:
- en
license: apache-2.0
tags:
- text-generation-inference
- transformers
- unsloth
- gemma2
- gguf
---
# Uploaded model
- **Developed by:** Deeokay
- **License:** apache-2.0
- **Finetuned from model :** unsloth/gemma-2-9b-bnb-4bit
This gemma2 model was trained 2x faster with [Unsloth](https://github.com/unslothai/unsloth) and Huggingface's TRL library.
[<img src="https://raw.githubusercontent.com/unslothai/unsloth/main/images/unsloth%20made%20with%20love.png" width="200"/>](https://github.com/unslothai/unsloth)
# README
This is a test model on a the following
- a private dataset
- slight customization on alpaca chat template
- Works with Ollama create but requires customization to Modelfile
- One reason for this was wanted to try doing Q2_K and see if it was actually good(?)
- My examples will be based on unslot.Q2_K.GGUF file, however other quantization should work as well
# HOW TO USE
The whole point of conversion for me was I wanted to be able to to use it through Ollama or (other local options)
For Ollama, it required to be a GGUF file. Once you have this it is pretty straight forward
Quick Start:
- You must already have Ollama running in your setting
- Download the unsloth.Q4_K_M.gguf model from Files
- In the same directory create a file call "Modelfile"
- Inside the "Modelfile" type
```python
FROM ./GEMMA2_unsloth.Q2_K.gguf
TEMPLATE """Below is an instruction that describes a task. Write a response that appropriately completes the request.
### Instruction:
{{.Prompt}}
### Response:
"""
PARAMETER stop "<start_of_turn>"
PARAMETER stop "<end_of_turn>"
PARAMETER stop "<eos>"
PARAMETER stop "### "
PARAMETER stop "###: "
PARAMETER stop "###"
PARAMETER temperature 0.4
PARAMETER top_p 0.95
PARAMETER top_k 40
PARAMETER num_ctx 2048
SYSTEM """You are an AI teacher designed to educate young, curious minds. Your responses should be:
1. Accurate and precise, based on verified facts and data.
2. Age-appropriate and easily understandable.
3. Encouraging further exploration and learning.
4. Never containing made-up or speculative information.
5. Brief but comprehensive, covering key points without overwhelming detail.
If you're unsure about any information, clearly state that you don't have enough verified data to answer accurately."""
```
- Save a go back to the folder (folder where model + Modelfile exisit)
- Now in terminal make sure you are in the same location of the folder and type in the following command
```python
ollama create mycustomai # "mycustomai" <- you can name it anything u want
```
After than you should be able to use this model to chat!
This GGUF is based on Gemma2-9B-4bit by Unslot,
# NOTE: DISCLAIMER
Please note this is not for the purpose of production, but result of Fine Tuning through self learning
This is my first pass through my ~30K personalized customized dataset.
Please feel free to customize the Modelfile, and if you do get a better response than mine, please share!!
If would like to know how I started creating my dataset, you can check this link
[Crafting GPT2 for Personalized AI-Preparing Data the Long Way (Part1)](https://medium.com/@deeokay/the-soul-in-the-machine-crafting-gpt2-for-personalized-ai-9d38be3f635f)
As the data was getting created with custom GPT2 special tokens, I had to convert that to the a Alpaca Template.
However I got creative again.. the training data has the following Template:
```python
prompt = """Below is an instruction that describes a task, with an analysis that provides further context. Write a response, classification and sentiment that appropriately completes the request.
### Instruction:
{}
### Analysis:
{}
### Response:
{}
### Classification:
{}
### Sentiment:
{}
"""
EOS_TOKEN = tokenizer.eos_token # Must add EOS_TOKEN
def formatting_prompts_func(examples):
instructions = examples["Question"]
analyses = examples["Analysis"]
responses = examples["Answer"]
classifications = examples['Classification']
sentiments = examples['Sentiment']
texts = []
for instruction, analysis, response, classification, sentiment in zip(instructions, analyses, responses, classifications, sentiments):
# Must add EOS_TOKEN, otherwise your generation will go on forever!
text = prompt.format(instruction, analysis, response, classification, sentiment) + EOS_TOKEN
texts.append(text)
return { "text" : texts }
data_path = 'file to dataset'
df = pd.read_csv(data_path)
dataset = Dataset.from_pandas(df)
# Shuffle the dataset
shuffled_dataset = dataset.shuffle(seed=42) # Seed for reproducibility
dataset = dataset.map(formatting_prompts_func, batched = True,)
```
Will be updating this periodically.. as I have limited colab resources..