🚀 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。