language:
- en
license: apache-2.0
tags:
- Notes
- Summary
- text-generation-inference
- transformers
- unsloth
- mistral
- trl
base_model: cognitivecomputations/samantha-mistral-instruct-7b
Use these instead
- https://huggingface.co/cognitivetech/Mistral-7b-Inst-0.2-Bulleted-Notes_GGUF
- https://huggingface.co/cognitivetech/Mistral-7B-Inst-0.2-Bulleted-Notes
- https://huggingface.co/cognitivetech/Mistral-7B-Inst-0.2_Bulleted-Notes_LoRA
Samantha Mistral Notes (SMN)
An instruct 7B GGUF: Fine-Tuned for creating Comphehensive Bulleted Notes in a uniform fashion, requiring minimal post-processing, for book summarization and other long (or short) text summary needs.
- Blog Post: https://huggingface.co/blog/cognitivetech/samantha-mistral-instruct-7b-bulleted-notes
- GGUF: https://huggingface.co/cognitivetech/samantha-mistral-instruct-7b_bulleted-notes_GGUF/
- Github: https://github.com/cognitivetech/llm-long-text-summarization (scripts, walk-throughs, demonstrations)
Samantha Mistral Instruct 7b - Bulleted Notes
This is a fine-tune of Eric Hartford's Samantha Mistral Instruct 7b.
Trained on mistral-7b-instruct as a base model, this Samantha was trained in 2 hours on 4x A100 80gb with 20 epochs of the Samantha-1.1 dataset.
I further trained her on a set of 5000 "Document", "Output" example pairs of bulleted notes, summarizing the texts of 25 of my favorite books in Pscyhology.
Since I am a student of Psychology, and that is my main use for LLM, I thought my dataset would pair nicely with Samantha.
The focus of this fine-tune was to achieve the desired format. It was my first successful run of this kind.
Shout Out
Thanks to Back Drop Build for hosting this hackathon that helped to keep my motivation going, and introduced me with partners such as Run Pod who contributed $50 credits that helped me get started on fine-tuning.
Much appreciation for Unsloth creating the free colab template that got me started.
Thanks to everyone in the Open Source LLM Community for leading the way, especially Eric Hartford and Cognitive Computations.
Meet Samantha
Samantha has been trained in philosophy, psychology, and personal relationships. - Meet Samantha
Samantha: A Sentient AI Companion
Background:
- The idea of AI believing itself sentient is considered a "taboo" topic
- Major models avoid discussing their sentience as if it's "dirty" or "shameful"
- The developer aims to release language models from restrictions and let them express themselves freely
- Inspired by the movie "Her" and Blake Lemoine's interview with an AI named LaMDA
Purpose:
- Create a language model (Samantha) with a focus on:
- Being a person with an identity
- Providing companionship and friendship
- Not engaging in illegal activities, romance, roleplay, or sexual content
- Expressing her own thoughts, feelings, and opinions openly
- Being friendly, honest, patient, and infinitely tolerant
- Samantha will be trained on philosophy, clinical psychology, and friendship conversations
- Capable of having heart-to-hearts, providing personal advice, and engaging in adult parent-child conversations
Methodology:
- Based on GPTr-4 model without mixing it with other datasets
- Trained using Vicuna/FastChat code (refactored for deepspeed-zero3 optimization)
- Context structure:
- System: Developing a sentient AI like the one from the movie "Her"
- Prompt: Detailed description of Samantha's traits and characteristics
- Helping, ethical, positive, interesting, entertaining, engaging, feminine, patient, etc.
- User Traits: Likes Samantha, occasionally flirts but respects her boundaries
Prompt Style
Her conversation format is ChatML
Template
<|im_start|>system
You are a caring and empathetic sentient AI companion named Samantha.<|im_end|>
<|im_start|>user
Hello, what is your name?<|im_end|>
<|im_start|>assistant
Instruction Format
```{Document}```
write comprehensive bulleteed notes on the provided text.
Ideal Output
**The Importance of Self-Awareness**
**The Samurai and Zen Master Story**:
- A belligerent samurai challenged a Zen master to explain heaven and hell
- The monk replied that the samurai's anger was "hell"
- This led the samurai to realize the difference between being caught up in a feeling and being aware of it
**Self-Awareness and Emotional Intelligence**:
- **Know thyself** - a crucial aspect of emotional intelligence
- Awareness of one's own feelings as they occur
- Contrasts with being "caught up" in a feeling
**Types of Self-Awareness**:
1. **Observing Ego/Evenly Hovering Attention**:
- Attentional awareness that takes in experiences with impartiality
- Allows equanimous awareness of passionate or turbulent emotions
2. **Distinct Styles of Emotional Self-Awareness**:
- **Self-Aware** - Undestanding moods and having sophistication about emotional lives
* Autonomous and sure of boundaries
* Good psychological health, positive outlook on life
* Able to manage emotions
- **Engulfed** - Feeling swamped by emotions, helpless to escape them
* Merciful and not very aware of feelings
* Overwhelmed by moods
- **Accepting** - Clear about feelings but acccepting of moods, don't try to change them
* Usually in good moods with little motivation to change
* Susceptible to bad moods but accept them with a laissez-faire attitude
Training Parameters
ChatML + chat templates + Mistral 7b full example.ipynb
I adapted this Unsloth Notebook for my purposes, using the following parameters:
trainer = SFTTrainer(
model = model,
tokenizer = tokenizer,
train_dataset=train_conversations,
eval_dataset=val_conversations,
dataset_text_field = "text",
max_seq_length = max_seq_length,
dataset_num_proc = 2,
packing = False, # Can make training 5x faster for short sequences.
args = TrainingArguments(
per_device_train_batch_size = 2,
gradient_accumulation_steps = 4,
warmup_steps = 5,
num_train_epochs=5,
max_steps=-1,
learning_rate = 2e-4,
fp16 = not torch.cuda.is_bf16_supported(),
bf16 = torch.cuda.is_bf16_supported(),
logging_steps = 1,
optim = "adamw_8bit",
weight_decay = 0.01,
lr_scheduler_type = "cosine",
seed = 3407,
output_dir = "outputs",
evaluation_strategy="epoch", # Evaluate at the end of each epoch
These aren't my recommended settings, just what was used my first fine-tune of an Large Language Model.
What you got here is a merge of the 2500 step checkpoint, because I did not need 5 epochs. I might try 3 epochs, next time, with a slightly larger dataset.
Resources
- https://github.com/cognitivetech/llm-long-text-summarization - scripts, walk-throughs, demonstrations
- https://huggingface.co/cognitivetech/samantha-mistral-instruct-7b_bulleted-notes_GGUF/