Day5:微调硬件环境与训练环境选型

Day5:微调硬件环境与训练环境选型 结合咱们前面学的 SFT、LoRA、数据制作这一节聚焦实际跑训练需要什么设备、用什么框架、不同配置怎么选都是落地实操必考点。一、硬件核心显卡GPU大模型微调主要靠显卡算力和显存CPU 仅做辅助分两类场景说明1. 传统全量 SFT全参数微调特点更新全部模型参数显存占用极高最低要求单卡24G 及以上显存如 RTX 4090、A10现状个人电脑基本很难满足大多使用云服务器、算力集群2. LoRA 轻量微调主流选择特点只训练少量低秩矩阵显存需求大幅降低入门配置8G 显存即可跑小型模型如 7B 参数量模型舒适配置12G/16G 显存可流畅训练主流开源模型结论个人学习、日常微调优先用 LoRA普通消费级显卡就能搞定补充概念模型参数量常见开源模型规格7B、13B、34B…… 数字越大模型能力越强但对显存 / 算力要求也越高。个人练习优先选7B 模型。二、本地硬件 vs 云端算力表格方案优点缺点适用人群本地显卡随时使用、无额外费用高端显卡成本高、性能上限固定已有 12G 显卡、长期学习练习云服务器按需选配高显存显卡、无需自备硬件按时长计费长期使用成本高临时训练、本地配置不足、跑大参数量模型三、必备软件 / 框架环境微调代码基本都基于 Python 生态必装工具Python代码运行基础环境PyTorch主流深度学习框架模型训练核心Transformers加载开源大模型、分词器Datasets加载、处理训练数据集PEFT专门实现 LoRA 微调前面代码用到的库Accelerate分布式训练、硬件加速适配四、运行模式区分面试 / 实操常考单卡训练只用一张显卡训练个人学习、小模型微调最常用配置简单。多卡分布式训练多张显卡协同工作提速、支撑更大模型配置复杂多用于企业 / 专业算力集群个人基本用不到。五、训练显存优化小技巧实用知识点硬件不够时可通过参数设置降低显存占用2. 梯度检查点用速度换显存3. 模型量化最最最常用开启梯度累积变相扩大批次不增加显存消耗梯度检查点牺牲少量速度大幅降低显存模型量化把模型参数精度调低如 4bit/8bit显存直接减半LoRA 场景非常常用1. 梯度累积变相加大批次不占显存平时一次喂 4 条数据 → 显存爆梯度累积分 4 次喂每次喂 1 条攒够 4 条再更新效果显存不变训练更稳原理不保存所有中间计算结果只存关键部分效果显存省一半但速度慢一点点把模型从 “高精度” → 切成 “低精度”4bit 量化 →显存直接省 75%8bit 量化 →显存省 50%个人电脑必开不开大概率跑不起来六、整体环境搭建流程plaintext安装Python → 安装深度学习依赖库(PyTorch/Transformers/PEFT等) → 准备标注数据集 → 选择模型微调方案(SFT/LoRA) → 配置训练参数显存优化选项 → 启动训练# 1. 加载必备库 from transformers import AutoModelForCausalLM, AutoTokenizer, TrainingArguments from peft import LoraConfig, get_peft_model from datasets import load_dataset # 2. 加载模型 分词器 model_name qwen-7b-chat # 你用的模型 tokenizer AutoTokenizer.from_pretrained(model_name) model AutoModelForCausalLM.from_pretrained( model_name, load_in_4bitTrue, # 4bit量化超级省显存第5点知识点 device_mapauto ) # 3. LoRA配置核心 lora_config LoraConfig( r16, lora_alpha32, target_modules[q_proj, v_proj], lora_dropout0.05, biasnone, task_typeCAUSAL_LM ) # 给模型装上LoRA model get_peft_model(model, lora_config) # 4. 加载数据集Alpaca格式JSON dataset load_dataset(json, data_filestrain_data.json) # 5. 训练参数配置 training_args TrainingArguments( output_dir./lora_model, per_device_train_batch_size2, gradient_accumulation_steps4, # 梯度累积省显存 gradient_checkpointingTrue, # 梯度检查点再省一波 learning_rate2e-5, num_train_epochs3, logging_steps10, fp16True ) # 6. 启动训练 from transformers import Trainer trainer Trainer( modelmodel, argstraining_args, train_datasetdataset[train] ) trainer.train()