news 2026/4/27 5:56:34

Phi-3.5-Mini-Instruct保姆级教程:模型微调(LoRA)本地训练环境搭建

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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/11
  • Python:3.8或更高版本
  • CUDA:11.7或更高版本(与显卡驱动匹配)
  • cuDNN:与CUDA版本对应

2. 基础环境安装

2.1 创建Python虚拟环境

为了避免依赖冲突,我们首先创建一个独立的Python虚拟环境:

python -m venv phi3-env source phi3-env/bin/activate # Linux/macOS # 或 phi3-env\Scripts\activate # Windows

2.2 安装PyTorch

根据你的CUDA版本安装对应的PyTorch:

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu117

2.3 安装必要库

安装模型训练和微调所需的核心库:

pip install transformers datasets accelerate peft bitsandbytes

3. 模型下载与准备

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_dtype="auto", device_map="auto")

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( r=8, # LoRA秩 lora_alpha=16, # 缩放因子 target_modules=["q_proj", "k_proj", "v_proj", "o_proj"], # 目标模块 lora_dropout=0.05, # Dropout率 bias="none", # 偏置项处理 task_type="CAUSAL_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_size=2, gradient_accumulation_steps=4, learning_rate=2e-4, num_train_epochs=3, logging_steps=10, save_steps=100, fp16=True, # 使用混合精度训练 optim="paged_adamw_8bit", # 8-bit优化器 report_to="none" # 不记录到任何平台 )

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_length=512, truncation=True) labels = tokenizer(targets, max_length=512, truncation=True) model_inputs["labels"] = labels["input_ids"] return model_inputs tokenized_dataset = dataset.map(preprocess_function, batched=True)

5.2 启动训练

使用Trainer进行训练:

from transformers import Trainer trainer = Trainer( model=model, args=training_args, train_dataset=tokenized_dataset, data_collator=lambda 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微调环境搭建和训练流程。总结关键步骤:

  1. 环境准备:安装必要的Python库和CUDA环境
  2. 模型下载:从Hugging Face获取官方模型
  3. 数据准备:整理适合微调的指令数据集
  4. LoRA配置:设置适合Phi-3.5的LoRA参数
  5. 训练执行:启动微调训练并监控进度
  6. 模型保存:保存和部署微调后的模型

LoRA微调是一种高效的参数高效微调方法,特别适合像Phi-3.5这样的轻量级模型。通过少量数据的微调,可以显著提升模型在特定任务上的表现,同时保持模型的通用能力。

获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/27 5:55:40

Phi-3.5-mini-instruct惊艳案例:从模糊需求描述生成可运行Python脚本

Phi-3.5-mini-instruct惊艳案例&#xff1a;从模糊需求描述生成可运行Python脚本 1. 引言 想象一下这样的场景&#xff1a;你脑海中有一个模糊的编程需求&#xff0c;但不确定具体该怎么实现。传统方式可能需要反复搜索、尝试各种代码片段&#xff0c;甚至需要请教同事。现在…

作者头像 李华
网站建设 2026/4/27 5:54:34

Keras与tf.image图像增强技术实战指南

1. 图像增强技术概述在计算机视觉项目中&#xff0c;数据质量往往决定了模型性能的上限。我处理过十几个工业级图像分类项目&#xff0c;发现当训练数据不足时&#xff0c;合理的图像增强技术能使模型准确率提升15%-30%。Keras预处理层和tf.image模块提供了两种互补的实现路径&…

作者头像 李华
网站建设 2026/4/27 5:53:52

ElasticSearch关键概念教程

ElasticSearch关键概念教程&#xff08;更新中&#xff09; 文章目录ElasticSearch关键概念教程&#xff08;更新中&#xff09;应用场景Index&#xff08;待更新&#xff09;Mapping&#xff08;待更新&#xff09;Document&#xff08;待更新&#xff09; 应用场景 这是一个专…

作者头像 李华
网站建设 2026/4/27 5:53:51

Venera漫画应用下载管理完全指南:从离线阅读到存储优化

Venera漫画应用下载管理完全指南&#xff1a;从离线阅读到存储优化 Venera作为一款跨平台漫画应用&#xff0c;其下载管理功能为用户提供了从在线浏览到离线阅读的完整解决方案。无论是通勤途中的碎片化阅读&#xff0c;还是网络不稳定环境下的持续追更&#xff0c;Venera的下…

作者头像 李华
网站建设 2026/4/27 5:51:48

C++位图学习笔记

位图在处理海量数据&#xff08;如 40 亿个整数&#xff09;时&#xff0c;传统的哈希表、set容器等等会消耗大量内存&#xff0c;这显然是不划算的。如果能用40亿个比特位来表示从0到40亿是否存在&#xff08;0不存在&#xff0c;1存在&#xff09;&#xff0c;就能节省大量空…

作者头像 李华
网站建设 2026/4/27 5:51:42

2026国内 LLM Coding Plan 订阅套餐

文章目录 前言一、快速对比二、AI Coding Plan1. 方舟 Coding Plan(字节)2. glm-coding(智谱)3. 百度千帆Coding Plan4. 腾讯云大模型Coding Plan5. 阿里云百炼Coding Plan6. MiniMax Token Plan7. Kimi Code Plan (月之暗面)8. 摩尔线程 AI Coding Plan (国产) 总结 前言 202…

作者头像 李华