🚀 TinyMistral-248M-Chat
TinyMistral-248M-Chat是基於特定基礎模型,利用多個數據集訓練得到的模型,可用於文本生成任務,具有特定的使用格式和訓練方式。
🚀 快速開始
本模型可用於文本生成任務,以下是使用時的一些關鍵信息:
✨ 主要特性
- 支持特定的提示格式,方便用戶輸入。
- 可用於文本生成任務,通過示例代碼可快速上手。
📦 安裝指南
文檔未提及安裝步驟,暫不提供相關內容。
💻 使用示例
基礎用法
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,
)
📚 詳細文檔
推薦提示格式
<|im_start|>system
{system_message}<|im_end|>
<|im_start|>user
{user_message}<|im_end|>
<|im_start|>assistant
訓練方式
本模型使用 SFTTrainer 進行訓練,使用了以下設置:
超參數 |
值 |
學習率 |
2e - 5 |
總訓練批次大小 |
32 |
最大序列長度 |
2048 |
權重衰減 |
0.01 |
熱身比例 |
0.1 |
NEFTune噪聲阿爾法 |
5 |
優化器 |
Adam,beta=(0.9, 0.999),epsilon = 1e - 08 |
調度器 |
餘弦 |
隨機種子 |
42 |
然後,通過 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 |
學習率調度器類型 |
餘弦 |
學習率調度器熱身比例 |
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許可證2.0。