初始化项目,由ModelHub XC社区提供模型
Model: charlesdedampierre/TopicNeuralHermes-2.5-Mistral-7B Source: Original Platform
This commit is contained in:
142
README.md
Normal file
142
README.md
Normal file
@@ -0,0 +1,142 @@
|
||||
---
|
||||
license: apache-2.0
|
||||
base_model: teknium/OpenHermes-2.5-Mistral-7B
|
||||
datasets:
|
||||
- bunkalab/topic_based_chatml_dpo_pairs
|
||||
library_name: Bunkatopics
|
||||
widget:
|
||||
- text: Tell a danish joke in french
|
||||
pipeline_tag: text-generation
|
||||
---
|
||||
|
||||
|
||||

|
||||
|
||||
## Model description
|
||||
|
||||
|
||||
TopicNeuralHermes 2.5 Mistral 7B is a refined model developed through fine-tuning with a specific subset of data, selected via Topic Modeling Techniques using [Bunkatopics](https://github.com/charlesdedampierre/BunkaTopics), as a continuing from [OpenHermes 2.5](https://huggingface.co/teknium/OpenHermes-2.5-Mistral-7B).
|
||||
|
||||
|
||||
The model was trained on a refined DPO dataset. The objective was to train the model on a small portion of the DPO data. To achieve this, we compared two datasets used to train the reward model: the rejected Llama answers and the accepted ChatGPT answers from the [DPO dataset](mlabonne/chatml_dpo_pairs).
|
||||
We then conducted topic modeling on both datasets, keeping only the topics that existed in the accepted dataset but not in the rejected one.
|
||||
Our hypothesis is that these topics encapsulate the main differences between the two answering styles.
|
||||
|
||||
This method allows for quicker convergence with significantly less data (around 1/6 of the initial dataset). The Dataset can be found at [bunkalab/topic_based_chatml_dpo_pairs](https://huggingface.co/datasets/bunkalab/topic_based_chatml_dpo_pairs)
|
||||
|
||||
Special thanks to [mlabonne](https://huggingface.co/mlabonne) for creating the [colab notebook](https://colab.research.google.com/drive/15iFBr1xWgztXvhrj5I9fBv20c7CFOPBE?usp=sharing#scrollTo=YpdkZsMNylvp) that facilitated the DPO Strategy.
|
||||
|
||||
Results of the model can be found here: We do as well as similar models with way less data and computing power :)
|
||||
|
||||

|
||||
|
||||
## Topic Analysis
|
||||
|
||||
We applied the topic modeling method to both datasets, extracting 30 topics from each.
|
||||
These topics were characterized using the 10 most specific unigrams or bigrams.
|
||||
We then compared the two sets of topics (30 from each dataset) and retained those in the accepted dataset that shared fewer than 2 terms with any topic in the rejected dataset
|
||||
|
||||
We found the 13 distinctive following topics described by 10 terms each:
|
||||
|
||||
|
||||
**Emotional Dynamics**: feelings, Quinn, Austin, minority women, teaching, schools, individual, personality, backgrounds, triggers.
|
||||
|
||||
**Global Knowledge Queries**: question, information, geography, news articles, Step, answer, capital city, pipeline system, country, analogy.
|
||||
|
||||
**Digital Interactions and Queries**: questions, question, PersonX, modem, answers, effect relationship, Quora, browser, answer, e-commerce.
|
||||
|
||||
**Business and Cybersecurity**: email, businesses, initiatives, innovation, advertising papers, spam, breaches, antivirus, payments, prospects.
|
||||
|
||||
**Lifestyle and Wellness**: sleep, exercise, gifts, shopping, Casey, stores, stress, headaches, options, mood.
|
||||
|
||||
**Wildlife Ecology**: birds, prey, animals, species, infection, nest, eggs, bacteria, insects, kitty condo.
|
||||
|
||||
**Environmental Science and Climate**: temperature, gases, greenhouse, emissions, perturbation, sulfur, dioxide, climate change, water, heat.
|
||||
|
||||
**Maritime and Mechanical Engineering**: ship, bowling, propulsion, beam width, Filing cabinet, LED, lane, containment area, lawnmower, rotors.
|
||||
|
||||
**Cultural and Social Dynamics**: Lindsey, museum, Kate, Rachel, Jason, Alex, Erin, conversation, Laura, exhibits.
|
||||
|
||||
**Political Media Analysis**: media platforms, election, politics, teenagers, elections, White House, Barack Obama, nation, Confederate, depression.
|
||||
|
||||
**International Relations and Policy**: cooperation, EU, nations, alliance, NATO, European Union, member states, policy, monarch, Brexit.
|
||||
|
||||
**Astrophysics and Physical Sciences**: electrons, km, Moon, acceleration, orbit, friction, current, asteroid, electron, collector emitter.
|
||||
|
||||
**Film Critique and Analysis**: movie review, film, reviewer, sentiment, critic, flaws, DVD, plot, opinion, originality.
|
||||
|
||||
|
||||
While those topics are not domain-specific, they did not appear right away in the rejected dataset. Further research need to undersand the reason behind the prominence of
|
||||
those topics in the accepted dataset.
|
||||
|
||||
|
||||
## Usage
|
||||
You can run this model using LM Studio or any other frontend.
|
||||
|
||||
You can also run this model using the following code:
|
||||
|
||||
```python
|
||||
import transformers
|
||||
from transformers import AutoTokenizer
|
||||
|
||||
# Format prompt
|
||||
message = [
|
||||
{"role": "system", "content": "You are a helpful assistant chatbot."},
|
||||
{"role": "user", "content": "What is Topic Modeling?"}
|
||||
]
|
||||
tokenizer = AutoTokenizer.from_pretrained('charlesdedampierre/TopicNeuralHermes-2.5-Mistral-7B')
|
||||
prompt = tokenizer.apply_chat_template(message, add_generation_prompt=True, tokenize=False)
|
||||
|
||||
# Create pipeline
|
||||
pipeline = transformers.pipeline(
|
||||
"text-generation",
|
||||
model='charlesdedampierre/TopicNeuralHermes-2.5-Mistral-7B',
|
||||
tokenizer=tokenizer
|
||||
)
|
||||
|
||||
# Generate text
|
||||
sequences = pipeline(
|
||||
prompt,
|
||||
do_sample=True,
|
||||
temperature=0.7,
|
||||
top_p=0.9,
|
||||
num_return_sequences=1,
|
||||
max_length=200,
|
||||
)
|
||||
print(sequences[0]['generated_text'])
|
||||
```
|
||||
|
||||
|
||||
## Training hyperparameters
|
||||
|
||||
**LoRA**:
|
||||
* r=16
|
||||
* lora_alpha=16
|
||||
* lora_dropout=0.05
|
||||
* bias="none"
|
||||
* task_type="CAUSAL_LM"
|
||||
* target_modules=['k_proj', 'gate_proj', 'v_proj', 'up_proj', 'q_proj', 'o_proj', 'down_proj']
|
||||
|
||||
**Training arguments**:
|
||||
* per_device_train_batch_size=4
|
||||
* gradient_accumulation_steps=4
|
||||
* gradient_checkpointing=True
|
||||
* learning_rate=5e-5
|
||||
* lr_scheduler_type="cosine"
|
||||
* max_steps=200
|
||||
* optim="paged_adamw_32bit"
|
||||
* warmup_steps=100
|
||||
|
||||
**DPOTrainer**:
|
||||
* beta=0.1
|
||||
* max_prompt_length=1024
|
||||
* max_length=1536
|
||||
|
||||
|
||||
You can find the results of the running on Weights & Biases: https://wandb.ai/bunka/huggingface/runs/xq59p47g?workspace=user-charlesdedampierre
|
||||
|
||||
|
||||
## Model Family Tree
|
||||
|
||||
|
||||

|
||||
Reference in New Issue
Block a user