🚀 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 许可证。