Phi-3.5-Mini-Instruct保姆级教程:模型微调(LoRA)本地训练环境搭建
Phi-3.5-Mini-Instruct保姆级教程模型微调LoRA本地训练环境搭建1. 准备工作在开始搭建Phi-3.5-Mini-Instruct的本地训练环境前我们需要确保硬件和软件环境满足基本要求。Phi-3.5作为轻量级模型对硬件要求相对友好但仍需要一定的计算资源。1.1 硬件要求显卡建议NVIDIA显卡显存至少8GB如RTX 3060/3070或更高内存16GB及以上存储空间至少20GB可用空间用于存储模型和训练数据1.2 软件环境操作系统Linux推荐Ubuntu 20.04/22.04或Windows 10/11Python3.8或更高版本CUDA11.7或更高版本与显卡驱动匹配cuDNN与CUDA版本对应2. 基础环境安装2.1 创建Python虚拟环境为了避免依赖冲突我们首先创建一个独立的Python虚拟环境python -m venv phi3-env source phi3-env/bin/activate # Linux/macOS # 或 phi3-env\Scripts\activate # Windows2.2 安装PyTorch根据你的CUDA版本安装对应的PyTorchpip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu1172.3 安装必要库安装模型训练和微调所需的核心库pip install transformers datasets accelerate peft bitsandbytes3. 模型下载与准备3.1 下载Phi-3.5-Mini-Instruct模型我们可以直接从Hugging Face下载官方模型from transformers import AutoModelForCausalLM, AutoTokenizer model_name microsoft/Phi-3-mini-4k-instruct tokenizer AutoTokenizer.from_pretrained(model_name) model AutoModelForCausalLM.from_pretrained(model_name, torch_dtypeauto, device_mapauto)3.2 准备训练数据LoRA微调需要准备特定格式的训练数据。这里我们以对话数据为例from datasets import Dataset train_data [ {instruction: 解释量子计算, input: , output: 量子计算是利用...}, {instruction: 写一首关于春天的诗, input: , output: 春风拂面...} ] dataset Dataset.from_dict({ instruction: [d[instruction] for d in train_data], input: [d[input] for d in train_data], output: [d[output] for d in train_data] })4. LoRA微调配置4.1 配置LoRA参数我们将使用PEFT库进行LoRA微调from peft import LoraConfig, get_peft_model lora_config LoraConfig( r8, # LoRA秩 lora_alpha16, # 缩放因子 target_modules[q_proj, k_proj, v_proj, o_proj], # 目标模块 lora_dropout0.05, # Dropout率 biasnone, # 偏置项处理 task_typeCAUSAL_LM # 任务类型 ) model get_peft_model(model, lora_config) model.print_trainable_parameters() # 查看可训练参数4.2 训练参数设置配置训练参数from transformers import TrainingArguments training_args TrainingArguments( output_dir./phi3-lora-output, per_device_train_batch_size2, gradient_accumulation_steps4, learning_rate2e-4, num_train_epochs3, logging_steps10, save_steps100, fp16True, # 使用混合精度训练 optimpaged_adamw_8bit, # 8-bit优化器 report_tonone # 不记录到任何平台 )5. 开始微调训练5.1 数据预处理将数据转换为模型可接受的格式def preprocess_function(examples): inputs [f|user|\n{inst}\n{inp}|end|\n|assistant|\n for inst, inp in zip(examples[instruction], examples[input])] targets examples[output] model_inputs tokenizer(inputs, max_length512, truncationTrue) labels tokenizer(targets, max_length512, truncationTrue) model_inputs[labels] labels[input_ids] return model_inputs tokenized_dataset dataset.map(preprocess_function, batchedTrue)5.2 启动训练使用Trainer进行训练from transformers import Trainer trainer Trainer( modelmodel, argstraining_args, train_datasettokenized_dataset, data_collatorlambda data: {input_ids: torch.stack([d[input_ids] for d in data]), attention_mask: torch.stack([d[attention_mask] for d in data]), labels: torch.stack([d[labels] for d in data])} ) trainer.train()6. 模型保存与使用6.1 保存微调后的模型训练完成后保存LoRA适配器model.save_pretrained(./phi3-lora-adapter)6.2 加载并使用微调模型加载基础模型和LoRA适配器from peft import PeftModel base_model AutoModelForCausalLM.from_pretrained(microsoft/Phi-3-mini-4k-instruct) model PeftModel.from_pretrained(base_model, ./phi3-lora-adapter) model model.merge_and_unload() # 合并LoRA权重到基础模型7. 总结通过本教程我们完成了Phi-3.5-Mini-Instruct模型的LoRA微调环境搭建和训练流程。总结关键步骤环境准备安装必要的Python库和CUDA环境模型下载从Hugging Face获取官方模型数据准备整理适合微调的指令数据集LoRA配置设置适合Phi-3.5的LoRA参数训练执行启动微调训练并监控进度模型保存保存和部署微调后的模型LoRA微调是一种高效的参数高效微调方法特别适合像Phi-3.5这样的轻量级模型。通过少量数据的微调可以显著提升模型在特定任务上的表现同时保持模型的通用能力。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。