使用transformers在聊天指令数据集上使用LoRA对Phi-3语言模型进行微调,以改进会话理解和响应生成。
logging
日志记录:设置日志记录以跟踪训练过程。
import sys
import logging
import datasets
from datasets import load_dataset
from peft import LoraConfig
import torch
import transformers
from trl import SFTTrainer
from transformers import AutoModelForCausalLM, AutoTokenizer, TrainingArguments, BitsAndBytesConfig
# Logging setup (you can customize this as needed)
logging.basicConfig(
format="%(asctime)s - %(levelname)s - %(name)s - %(message)s",
datefmt="%Y-%m-%d %H:%M:%S",
handlers=[logging.StreamHandler(sys.stdout)],
)
logger = logging.getLogger(__name__)
超参数
超参数:定义两个字典,training_config
和peft_config
,分别存储用于训练和PEFT(Parameter-Efficient Fine-Tuning)的超参数。
训练参数:从training_config字典中创建一个TrainingArguments
对象。
PEFT配置:从peft_config
字典创建一个LoraConfig
对象,指定LoRA (Low-Rank Adaptation)设置以进行有效的微调。
# Training hyperparameters
training_config = {
"bf16": True, # Use mixed precision
"do_eval": False,
"learning_rate": 5.0e-06,
"log_level": "info",
"logging_steps": 20,
"logging_strategy": "steps",
"lr_scheduler_type": "cosine",
"num_train_epochs": 1,
"max_steps": -1,
"output_dir": "./checkpoint_dir",