🚀 TinyMistral-248M-Chat
TinyMistral-248M-Chat 是基於特定基礎模型,利用多組數據集訓練得到的模型,可用於文本生成任務,能為用戶提供準確、友好的信息回覆。
🚀 快速開始
本模型可用於文本生成任務,你可以按照以下步驟開始使用。
推薦的提示格式
<|im_start|>system
{系統消息}<|im_end|>
<|im_start|>user
{用戶消息}<|im_end|>
<|im_start|>assistant
使用示例
from transformers import AutoModelForCausalLM, AutoTokenizer, TextStreamer
import torch
model_path = "Felladrin/TinyMistral-248M-Chat-v4"
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,
)
✨ 主要特性
📚 詳細文檔
訓練方式
SFT 訓練
本模型使用 SFTTrainer 進行訓練,使用的設置如下:
超參數 |
值 |
學習率 |
2e-5 |
總訓練批次大小 |
32 |
最大序列長度 |
2048 |
權重衰減 |
0.01 |
預熱比例 |
0.1 |
NEFTune 噪聲 Alpha |
5 |
優化器 |
Adam(beta=(0.9,0.999),epsilon=1e-08) |
調度器 |
cosine |
隨機種子 |
42 |
DPO 微調
然後,通過 LLaMA-Factory 使用 DPO 方法進行微調,使用的超參數和命令如下:
參數 |
值 |
數據集 |
HuggingFaceH4/ultrafeedback_binarized |
學習率 |
1e-06 |
訓練批次大小 |
4 |
評估批次大小 |
8 |
隨機種子 |
42 |
分佈式類型 |
多 GPU |
設備數量 |
8 |
梯度累積步數 |
4 |
總訓練批次大小 |
128 |
總評估批次大小 |
64 |
優化器 |
adamw_8bit(beta=(0.9,0.999),epsilon=1e-08) |
學習率調度器類型 |
cosine |
學習率調度器預熱比例 |
0.1 |
訓練輪數 |
2.0 |
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 \
--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 linear \
--max_grad_norm 1.0 \
--logging_steps 10 \
--save_steps 50 \
--save_total_limit 1 \
--warmup_ratio 0.1 \
--packing False \
--report_to tensorboard \
--output_dir ~/TinyMistral-248M-Chat-v4 \
--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
📄 許可證
本項目採用 Apache License 2.0 許可證。