--- language: - en license: apache-2.0 base_model: Locutusque/TinyMistral-248M datasets: - HuggingFaceH4/ultrachat_200k - Felladrin/ChatML-ultrachat_200k - Open-Orca/OpenOrca - Felladrin/ChatML-OpenOrca - hkust-nlp/deita-10k-v0 - Felladrin/ChatML-deita-10k-v0 - LDJnr/Capybara - Felladrin/ChatML-Capybara - databricks/databricks-dolly-15k - Felladrin/ChatML-databricks-dolly-15k - euclaise/reddit-instruct-curated - Felladrin/ChatML-reddit-instruct-curated - CohereForAI/aya_dataset - Felladrin/ChatML-aya_dataset - HuggingFaceH4/ultrafeedback_binarized pipeline_tag: text-generation widget: - messages: - role: system content: You are a highly knowledgeable and friendly assistant. Your goal is to understand and respond to user inquiries with clarity. Your interactions are always respectful, helpful, and focused on delivering the most accurate information to the user. - role: user content: Hey! Got a question for you! - role: assistant content: Sure! What's it? - role: user content: What are some potential applications for quantum computing? - messages: - role: user content: Heya! - role: assistant content: Hi! How may I help you? - role: user content: I'm interested in developing a career in software engineering. What would you recommend me to do? - messages: - role: user content: Morning! - role: assistant content: Good morning! How can I help you today? - role: user content: Could you give me some tips for becoming a healthier person? - messages: - role: system content: You are a very creative assistant. User will give you a task, which you should complete with all your knowledge. - role: user content: Hello! Can you please elaborate a background story of an RPG game about wizards and dragons in a sci-fi world? --- # TinyMistral-248M-Chat - Base model: [Locutusque/TinyMistral-248M](https://huggingface.co/Locutusque/TinyMistral-248M) with two additional special tokens (`<|im_start|>` and `<|im_end|>`) - Datasets: - [[ChatML](https://huggingface.co/datasets/Felladrin/ChatML-ultrachat_200k)] [HuggingFaceH4/ultrachat_200k](https://huggingface.co/datasets/HuggingFaceH4/ultrachat_200k) - [[ChatML](https://huggingface.co/datasets/Felladrin/ChatML-OpenOrca)] [Open-Orca/OpenOrca](https://huggingface.co/datasets/Open-Orca/OpenOrca) - [[ChatML](https://huggingface.co/datasets/Felladrin/ChatML-deita-10k-v0)] [hkust-nlp/deita-10k-v0](https://huggingface.co/datasets/hkust-nlp/deita-10k-v0) - [[ChatML](https://huggingface.co/datasets/Felladrin/ChatML-Capybara)] [LDJnr/Capybara](https://huggingface.co/datasets/LDJnr/Capybara) - [[ChatML](https://huggingface.co/datasets/Felladrin/ChatML-databricks-dolly-15k)] [databricks/databricks-dolly-15k](https://huggingface.co/datasets/databricks/databricks-dolly-15k) - [[ChatML](https://huggingface.co/datasets/Felladrin/ChatML-reddit-instruct-curated)] [euclaise/reddit-instruct-curated](https://huggingface.co/datasets/euclaise/reddit-instruct-curated) - [[ChatML](https://huggingface.co/datasets/Felladrin/ChatML-aya_dataset)] [CohereForAI/aya_dataset](https://huggingface.co/datasets/CohereForAI/aya_dataset) - [HuggingFaceH4/ultrafeedback_binarized](https://huggingface.co/datasets/HuggingFaceH4/ultrafeedback_binarized) - License: [Apache License 2.0](https://huggingface.co/Felladrin/TinyMistral-248M-Chat-v3/resolve/main/license.txt) ## Recommended Prompt Format ``` <|im_start|>system {system_message}<|im_end|> <|im_start|>user {user_message}<|im_end|> <|im_start|>assistant ``` ## Usage Example ```python from transformers import AutoModelForCausalLM, AutoTokenizer, TextStreamer import torch model_path = "Felladrin/TinyMistral-248M-Chat-v3" device = torch.device("cuda" if torch.cuda.is_available() else "cpu") tokenizer = AutoTokenizer.from_pretrained(model_path) model = AutoModelForCausalLM.from_pretrained(model_path).to(device) streamer = TextStreamer(tokenizer) messages = [ { "role": "system", "content": "You are a highly knowledgeable and friendly assistant. Your goal is to understand and respond to user inquiries with clarity. Your interactions are always respectful, helpful, and focused on delivering the most accurate information to the user.", }, { "role": "user", "content": "Hey! Got a question for you!", }, { "role": "assistant", "content": "Sure! What's it?", }, { "role": "user", "content": "What are some potential applications for quantum computing?", }, ] prompt = tokenizer.apply_chat_template( messages, tokenize=False, add_generation_prompt=True ) inputs = tokenizer(prompt, return_tensors="pt").to(device) model.generate( inputs.input_ids, attention_mask=inputs.attention_mask, max_length=tokenizer.model_max_length, streamer=streamer, eos_token_id=tokenizer.eos_token_id, pad_token_id=tokenizer.pad_token_id, do_sample=True, temperature=0.6, top_p=0.8, top_k=0, min_p=0.1, typical_p=0.2, repetition_penalty=1.176, ) ``` ## How it was trained This model was trained with [SFTTrainer](https://huggingface.co/docs/trl/main/en/sft_trainer) using the following settings: | Hyperparameter | Value | | :--------------------- | :-------------------------------------------- | | Learning rate | 2e-5 | | Total train batch size | 32 | | Max. sequence length | 2048 | | Weight decay | 0.01 | | Warmup ratio | 0.1 | | NEFTune Noise Alpha | 5 | | Optimizer | Adam with betas=(0.9,0.999) and epsilon=1e-08 | | Scheduler | cosine | | Seed | 42 | Then, the model was fine-tuned with DPO through [LLaMA-Factory](https://github.com/hiyouga/LLaMA-Factory) using the following hyperparameters and command: | Parameter | Value | | :-------------------------- | :------------------------------------------------------------------------------------------------------------- | | Dataset | [HuggingFaceH4/ultrafeedback_binarized](https://huggingface.co/datasets/HuggingFaceH4/ultrafeedback_binarized) | | Learning rate | 1e-06 | | Train batch size | 4 | | Eval batch size | 8 | | Seed | 42 | | Distributed type | multi-GPU | | Number of devices | 8 | | Gradient accumulation steps | 4 | | Total train batch size | 128 | | Total eval batch size | 64 | | Optimizer | adamw_8bit with betas=(0.9,0.999) and epsilon=1e-08 | | LR scheduler type | cosine | | LR scheduler warmup ratio | 0.1 | | Number of epochs | 2.0 | ```sh llamafactory-cli train \ --stage dpo \ --do_train True \ --model_name_or_path ~/TinyMistral-248M-Chat \ --preprocessing_num_workers $(python -c "import os; print(max(1, os.cpu_count() - 2))") \ --dataloader_num_workers $(python -c "import os; print(max(1, os.cpu_count() - 2))") \ --finetuning_type full \ --template default \ --flash_attn auto \ --enable_liger_kernel True \ --dataset_dir data \ --dataset ultrafeedback \ --cutoff_len 1024 \ --learning_rate 1e-6 \ --num_train_epochs 2.0 \ --per_device_train_batch_size 4 \ --gradient_accumulation_steps 4 \ --lr_scheduler_type cosine \ --max_grad_norm 1.0 \ --logging_steps 10 \ --save_steps 50 \ --save_total_limit 1 \ --warmup_ratio 0.1 \ --packing False \ --report_to none \ --output_dir ~/TinyMistral-248M-Chat-v3 \ --pure_bf16 True \ --plot_loss True \ --trust_remote_code True \ --ddp_timeout 180000000 \ --include_tokens_per_second True \ --include_num_input_tokens_seen True \ --optim adamw_8bit \ --pref_beta 0.5 \ --pref_ftx 0 \ --pref_loss simpo \ --gradient_checkpointing True ```