windows电脑上安装llama-factory实现大模型微调_windows安装llamafactory
一、安装环境准备
这是官方给的llama-factory安装教程,安装 - LLaMA Factory,上面介绍了linux系统上以及windows系统上如何正确安装。大家依照安装步骤基本能够完成安装,但是可能由于缺少经验或者相关的知识导致启动webUi界面运行相应内容时会报各种错误。
特别需要注意的是:一定要有英伟达的显卡。如果没有显卡的GPU加速,模型的训练时间是非常长的。我的电脑配置是i5-14代的CPU,4070显卡12G显存,64G内存,通过写代码微调deepseek-r1:1.5B模型显示程序运行需要91个小时(具体需要所长的时间我也不确定,等待12个小时训练进度10%),我把对应的代码(安装的pytorch是CPU版本的)放在文章的结尾处,有需要的小伙伴自取。
我在安装llama-factory的过程中一共遇到两种错误情况:
(1)pytorch安装的版本错误,导致模型在运行的过程找不到CUDA;
(2)在模型训练的过程中出现“RuntimeError: CUDA Setup failed despite GPU being available”的错误,导致训练中断。
今天刚把windows上的llama-factory安装完成。下面是我在windows系统上安装llama-factory上安装的配置,大家可以参考一下。
二、安装相应的软件
1、安装python环境
我们直接从anaconda官网上下载对应的安装包即可,双击打开之后按照默认选项一步一步安装即可。也可以更改安装的位置如D盘。
特别需要注意的是如果在安装过程中出现添加path环境变量的选项一定要勾选上,否则就需我们手动配置环境变量。不仅仅是对anaconda,后续安装所有的软件也需要遵照同样的原则。
anaconda安装完毕后,我们需要在自己的电脑上配置运行llama-factory的虚拟环境。这里为甚选择anaconda配置python开发环境而不是之家安装python,大家可以自行百度。
conda create --name largeLanguageModelLearn python=3.12
在anaconda的powershell prompt下输入如下的命令构建大语言模型训练的环境,激活该开发环境的命令如下
conda activate largeLanguageModelLearn
以后我们关于大语言模型所有的包都安装在该环境下。
2、安装CUDA
安装CUDA是为了能够在训练模型的时候使用。首先需要确定自己windows系统的规格,下载安装的CUDA一定要和自己系统的规格对应,否则会导致后续模型加载或者训练的过程中提示找不到CUDA。CUDA的网址为: https://developer.nvidia.com/cuda-gpus。
依据我的系统规格,我选择的是Windows—》x86_64—》11—》exe(local)版本。
在安装CUDA的时候我选择自定义安装,把所有的需要安装的项都勾选上。另外不要忘记勾选自动配置环境变量选项。
CUDA安装完成后,打开 cmd 输入 nvcc -V
,若出现类似内容则安装成功。
3、安装llama-factory
安装llama-factory我们只需安装官方的教程即可。
下载llama-factory至本地:我们可以使用官方中给的方法下载,这种下载方式方便对llama-factory框架更新。我这里使用的是手动下载llama-factory框架的各个文件至本地。对应的网址如下:
https://github.com/hiyouga/LLaMA-Factory.git
进入该网址后,点击Code按钮选择download ZIP即可下载至本地。
下载至本地后,就需要安装该框架。我把该框架放在D盘某个目录下,在下图中给出我安装该框架的操作步骤:
step1:进入到下载LLaMA-Factory的目录下;
step2:激活我们之前为学习大语言模型创建的python环境;
step3:在该环境下下载对应的安装包,也可以安装需要增加额外的包,额外需要的包如下图
4、启动llama-factory的webUI界面
在anaconda的powershell prompt中输入:llamafactory-cli webui,注意要在LLaMA-Factory的目录下启动,除非你将llamafactory-cli webui配置了全局变量。
三、处理开头提出的两个错误
我在安装llama-factory的过程中一共遇到两种错误情况:
(1)pytorch安装的版本错误,导致模型在运行的过程找不到CUDA;
处理方法:安装GPU版本的pytorch,在conda环境下运行如下命令即可实现安装:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124
(2)在模型训练的过程中出现“RuntimeError: CUDA Setup failed despite GPU being available”的错误,导致训练中断。
处理方法:在网上收到的教程是执行如下的命令
pip uninstall bitsandbytespip install bitsandbytes-windows
但是执行上述的命令并没有解决我的问题,最后发现执行如下的代码可以解决,对应的命令如下:
pip uninstall bitsandbytespip install bitsandbytes-cuda113pip uninstall bitsandbytes-cuda113pip install bitsandbytes
我曾经在B站看过一个大佬的课程,他说在运行过程中所有的错误无非两种情况造成的。情况1:安装环境出现冲突(包的依赖出现冲突或者CUDA的版本没有安装对);情况2:权限不够(sudo运行或者管理员下运行即可解决,一般报错信息中会出现permission字样)
代码微调
main方法
\'\'\'需要的依赖 torch transformers datasets peft bitsandbytes\'\'\'# 测试模型是否可用from transformers import AutoTokenizer, AutoModelForCausalLM, TrainingArguments# 加载模型 Hugging face提前下载model_name = r\'D:\\pycharmProject\\firstProject\\大模型微调\\DeepSeekR1DistillQwen1.5B\'tokenizer = AutoTokenizer.from_pretrained(model_name)# 模型加载成功之后注释model代码,否则每次都占用内存 (如果内存不够,可以使用device_map=\'auto\')model = AutoModelForCausalLM.from_pretrained(model_name,device_map=\'auto\',trust_remote_code=True)for name, param in model.named_parameters(): if param.is_meta: raise ValueError(f\"Parameter {name} is in meta device.\")print(\'---------------模型加载成功-------------\')# 制作数据集from data_prepare import samplesimport jsonwith open(\'datasets.jsonl\',\'w\',encoding=\'utf-8\') as f: for s in samples: json_line = json.dumps(s,ensure_ascii=False) f.write(json_line + \'\\n\') else: print(\'-------数据集制作完成------\')# 准备训练集和测集from datasets import load_datasetdataset = load_dataset(\'json\',data_files={\'train\':\'datasets.jsonl\'},split=\'train\')print(\'数据的数量\',len(dataset))train_test_split = dataset.train_test_split(test_size=0.1)train_dataset = train_test_split[\'train\']eval_dataset = train_test_split[\'test\']print(\'训练集的数量\',len(train_dataset))print(\'测试集的数量\',len(eval_dataset))print(\'--------完成训练数据的准备工作--------\')# 编写tokenizer处理工具def tokenize_function(examples): texts = [f\"{prompt}\\n{completion}\" for prompt , completion in zip(examples[\'prompt\'],examples[\'completion\'])] tokens = tokenizer(texts,truncation=True,max_length=512,padding=\"max_length\") tokens[\"labels\"] = tokens[\"input_ids\"].copy() return tokenstokenized_train_dataset = train_dataset.map(tokenize_function,batched=True)tokenized_eval_dataset = eval_dataset.map(tokenize_function,batched=True)print(\'---------完成tokenizer-------------\')# print(tokenized_eval_dataset[0])# 量化设置import torchmodel = AutoModelForCausalLM.from_pretrained( model_name, torch_dtype=torch.bfloat16, device_map=\"auto\")print(\'-----------完成量化模型的加载-----------------\')# lora设置from peft import LoraConfig,get_peft_model,TaskTypelora_config = LoraConfig( r=8, lora_alpha=16, target_modules=[\"q_proj\",\"v_proj\"], lora_dropout=0.05, bias=\"none\", task_type=TaskType.CAUSAL_LM)model = get_peft_model(model,lora_config)model.print_trainable_parameters()print(\'-----------完成lora模型的加载-----------------\')# 设置训练参数training_args = TrainingArguments( output_dir=\"./results\", num_train_epochs=3, per_device_train_batch_size=8, per_device_eval_batch_size=8, gradient_accumulation_steps=4, fp16=True, evaluation_strategy=\"steps\", save_steps=100, eval_steps=10, learning_rate=3e-5, logging_dir=\"./logs\", run_name=\'deepseek1.5b\', # 后期增加的内容 label_names=[\"labels\"], # 必须显式指定 remove_unused_columns=False, # 确保不自动删除标签字段)print(\'--------训练参数设置完毕----------\')# 定义训练器from transformers import Trainertrainer = Trainer( model=model, args=training_args, train_dataset=tokenized_train_dataset, eval_dataset=tokenized_eval_dataset)print(\'--------训练器定义完毕----------\')print(\'----------开始训练-------------\')trainer.train()print(\'----------训练完成-------------\')
数据集
samples = [ { \"prompt\": \"请解释什么是神经网络?\", \"completion\": \"神经网络是受生物神经系统启发的计算模型,由相互连接的神经元层组成。它通过前向传播处理输入数据,反向传播调整参数,最终实现模式识别和预测功能。\" }, { \"prompt\": \"如何预防计算机病毒?\", \"completion\": \"建议采取以下措施:1. 安装杀毒软件并定期更新;2. 不打开可疑邮件附件;3. 使用强密码保护系统;4. 定期备份重要数据。\" }, { \"prompt\": \"神经网络的工作原理?\", \"completion\": \"1. 前向传播;2. 损失计算;3. 反向传播。\" }, { \"prompt\": \"神经网络的类型与变体?\", \"completion\": \"1. 前馈神经网络;2. 卷积神经网络;3. 循环神经网络;4. 生成对抗网络。\" }, { \"prompt\": \"神经网络的应用领域?\", \"completion\": \"1. 图像与语音识别;2. 自然语言处理;3. 金融与预测;4. 自动驾驶。\" }, { \"prompt\": \"区块链技术的主要特点是什么?\", \"completion\": \"三个核心特征:1. 去中心化网络结构;2. 不可篡改的分布式账本;3. 智能合约自动执行。\" }, { \"prompt\": \"如何快速入门Python编程?\", \"completion\": \"推荐路径:1. 安装Anaconda环境;2. 学习基础语法;3. 实践小项目开发;4. 参与开源社区贡献。\" }, { \"prompt\": \"云计算服务的部署模式有哪些?\", \"completion\": \"主要类型:公有云(如AWS)、私有云(企业自建)、混合云(两者结合)、社区云(多组织共享)。\" }, { \"prompt\": \"什么是GDPR数据保护法规?\", \"completion\": \"欧盟通用数据保护条例,要求企业:1. 明确用户数据使用范围;2. 提供数据可移植性;3. 72小时内报告数据泄露事件。\" }, { \"prompt\": \"如何预防糖尿病?\", \"completion\": \"健康建议:控制糖分摄入、定期血糖检测、保持适度运动、维持正常体重、避免吸烟饮酒。\" }, { \"prompt\": \"股票与债券的主要区别?\", \"completion\": \"差异点:股票代表所有权(高风险高收益),债券体现债权(固定利率回报),发行主体及清偿顺序不同。\" }, { \"prompt\": \"如何提高英语听力水平?\", \"completion\": \"训练方法:每日精听VOA常速、跟读影视片段、使用播客泛听、建立听力高频词库、模拟真实对话场景。\" }, { \"prompt\": \"物联网设备的安全风险点有哪些?\", \"completion\": \"主要隐患:1. 弱密码认证;2. 固件更新漏洞;3. 数据传输未加密;4. 物理接口暴露风险。\" }, { \"prompt\": \"正确刷牙的七个步骤\", \"completion\": \"巴氏刷牙法要点:1.45度角牙龈接触;2.小幅度水平颤动;3.涵盖所有牙面;4.舌侧清洁;5.每次至少2分钟。\" }, { \"prompt\": \"处理厨房油火的正确方法\", \"completion\": \"应急步骤:1.立即关闭气源;2.用锅盖窒息火焰;3.切勿泼水;4.小苏打覆盖灭火;5.及时拨打119。\" }, { \"prompt\": \"量子计算机与传统计算机的核心差异?\", \"completion\": \"三个关键区别:1. 采用量子比特(叠加态)替代二进制;2. 支持量子并行计算;3. 适用于破解加密算法等特定问题。\" }, { \"prompt\": \"制定个人理财规划的五个步骤\", \"completion\": \"操作流程:1. 评估财务状况 2. 设定财务目标 3. 风险承受测试 4. 资产配置规划 5. 定期复盘调整\" }, { \"prompt\": \"无人机飞行法规的核心要求\", \"completion\": \"主要限制:1. 120米限高 2. 禁飞区电子围栏 3. 视距内操作 4. 夜间飞行需申请 5. 商业用途需许可证\" }, { \"prompt\": \"AI绘画工具的伦理争议点\", \"completion\": \"三大争议:1. 版权作品训练数据;2. 艺术家人力替代;3. 深度伪造滥用风险;4. 创作署名权归属问题\" }, { \"prompt\": \"野外遇险的SOS求救信号规则\", \"completion\": \"国际标准:三次一组(火光/声音),间隔1分钟重复。地面标志需大于3米,推荐三角形或直线排列。\" }, { \"prompt\": \"生物降解塑料的技术原理\", \"completion\": \"核心机制:1. 淀粉基材料水解 2. 微生物分解PHB酯键 3. 光敏添加剂促进氧化 4. 堆肥条件温湿度控制\" }, { \"prompt\": \"选择深度学习框架的考量因素\", \"completion\": \"评估维度:1. 社区活跃度 2. 文档完整性 3. 硬件兼容性 4. 预训练模型库 5. 部署便利性\" }, { \"prompt\": \"应对DDoS攻击的防护策略\", \"completion\": \"五层防御:1. 流量清洗中心 2. CDN分发 3. 访问频率限制 4. IP黑名单 5. 负载均衡冗余\" }, { \"prompt\": \"碳中和实现的关键技术路径\", \"completion\": \"四大方向:1. 可再生能源发电 2. 碳捕集与封存 3. 工业流程电气化 4. 碳交易市场机制完善\" }, { \"prompt\": \"构建家庭智能安防系统的必备组件\", \"completion\": \"基础配置:智能门锁+摄像头+烟雾传感器+水浸检测+网关中枢+手机联动APP\" }, { \"prompt\": \"疫苗研发的临床试验阶段划分\", \"completion\": \"三期流程:I期(安全性测试,数十人)→ II期(剂量确定,数百人)→ III期(有效性验证,数千人)\" }, { \"prompt\": \"选择云服务器的硬件配置策略\", \"completion\": \"决策矩阵:1. CPU核数≈并发请求量 2. 内存≥应用峰值使用量×2 3. 存储类型按IO需求选择\" }, { \"prompt\": \"企业危机公关的5R原则\", \"completion\": \"应对策略:Regret(真诚致歉)→ Reform(改进方案)→ Restitution(补偿措施)→ Recovery(恢复行动)→ Reinforcement(制度完善)\" }, { \"prompt\": \"智能合约的典型应用场景\", \"completion\": \"三大领域:1. 去中心化金融(DeFi) 2. 供应链溯源 3. 数字版权交易 4. 自动理赔保险\" }, { \"prompt\": \"防范电信诈骗的五个原则\", \"completion\": \"安全守则:1. 不透露验证码 2. 官方渠道核实 3. 慎重点击链接 4. 警惕高收益理财 5. 家属涉案必报警确认\" }, { \"prompt\": \"影响房价的主要经济指标\", \"completion\": \"关键因素:1. 按揭利率 2. 土地供应量 3. 人口迁移趋势 4. 租金收益率 5. 政策调控力度\" }, { \"prompt\": \"自动驾驶的SAE分级标准\", \"completion\": \"等级定义:L0(人工驾驶)→L1(辅助转向/制动)→L2(部分自动化)→L3(条件自动)→L4(高度自主)→L5(完全自主)\" }, { \"prompt\": \"健康餐食的营养搭配原则\", \"completion\": \"黄金比例:碳水50%+蛋白质20%+脂肪30%,每餐包含膳食纤维,控制GI值<55,钠摄入<2000mg/天\" }, { \"prompt\": \"元宇宙的关键技术支撑\", \"completion\": \"六大基石:区块链+AR/VR+5G网络+AI+数字孪生+边缘计算,需交互设备与去中心化经济系统配合\" }, { \"prompt\": \"设计问卷调查的七个注意事项\", \"completion\": \"要点提醒:1.问题中立 2.选项穷尽 3.逻辑排序 4.避免复合问 5.控制题量 6.预测试用 7.明确填写说明\" }, { \"prompt\": \"敏捷开发中的每日站会核心规则\", \"completion\": \"三大铁律:1. 15分钟准时结束 2. 回答三问题(昨日进展/今日计划/阻塞障碍)3. 不展开技术讨论\" }, { \"prompt\": \"卫星互联网的频段分配策略\", \"completion\": \"主流方案:Ka波段(26.5-40GHz)高频段用于高速传输,Ku波段(12-18GHz)保障雨衰稳定性,V波段提供扩容空间\" }, { \"prompt\": \"初创企业股权分配陷阱规避方法\", \"completion\": \"五个警示:1. 避免均分股权 2. 设立成熟期条款 3. 预留期权池10-20% 4. 明确决策机制 5. 定期动态调整\" }, { \"prompt\": \"脑机接口的信号传输原理\", \"completion\": \"三层处理:1. 电极捕获神经电信号 2. 模数转换与噪声过滤 3. 机器学习算法解码运动意图\" }, { \"prompt\": \"选择留学国家的评估维度\", \"completion\": \"八大指标:教育质量、移民政策、就业前景、生活成本、安全系数、文化适应、语言门槛、签证通过率\" }, { \"prompt\": \"工业机器人可靠性测试标准\", \"completion\": \"关键测试项:MTBF(平均无故障时间)≥5万小时,重复定位精度±0.02mm,负载循环测试10万次无故障\" }, { \"prompt\": \"构建私域流量的核心步骤\", \"completion\": \"四步走策略:1. 企业微信沉淀用户 2. 内容运营提升粘性 3. 社群分层管理 4. 自动化营销转化\" }, { \"prompt\": \"FDA医疗器械审批分类标准\", \"completion\": \"三类管理:Ⅰ类(低风险,登记备案)Ⅱ类(中等风险,510(k)审查)Ⅲ类(高风险,PMA临床验证)\" }, { \"prompt\": \"光伏电站的选址评估要素\", \"completion\": \"六大参数:年日照时长>1400小时,坡度<15°,电网接入距离<10km,土地性质合规,年均温度<25℃,无阴影遮挡\" }, { \"prompt\": \"深度学习模型压缩技术对比\", \"completion\": \"方案对比:知识蒸馏(保持精度)vs 权重剪枝(提升速度)vs 量化训练(减少存储)vs 低秩分解(降低计算量)\" }, { \"prompt\": \"跨境电商物流模式选择策略\", \"completion\": \"决策树:小件选邮政/专线(成本优先),高货值用商业快递(时效优先),大件货物走海外仓(综合成本最优)\" }, { \"prompt\": \"基因编辑技术的脱靶率控制方案\", \"completion\": \"三重保障:1. 高保真Cas9变体 2. 双重sgRNA验证 3. 全基因组脱靶检测(GUIDE-seq/CIRCLE-seq)\" }, { \"prompt\": \"智能家居Zigbee与Wi-Fi协议选型建议\", \"completion\": \"选择标准:传输距离远/低功耗设备选Zigbee,高速率/视频传输用Wi-Fi 6,跨平台兼容考虑Matter协议\" }, { \"prompt\": \"专利申请的创造性判断标准\", \"completion\": \"三要素审查:1. 现有技术差异 2. 技术效果显著性 3. 本领域技术人员非显而易见性\" }, { \"prompt\": \"新能源汽车电池回收流程\", \"completion\": \"四阶段处理:检测分级→梯次利用(储能系统)→拆解再生(金属提取)→环保处置(电解液无害化)\" }, { \"prompt\": \"医院HIS系统升级风险评估要点\", \"completion\": \"五类风险:数据迁移完整性、业务中断可能性、新老系统兼容性、人员操作适应性、应急回滚方案完备性\" }, { \"prompt\": \"数字人民币的离线支付实现原理\", \"completion\": \"双离线技术:NFC近场通信+硬件加密芯片,通过碰一碰完成端对端加密数据交换,联网后后台结算\" }, { \"prompt\": \"工业互联网安全靶场建设要素\", \"completion\": \"必备模块:虚实映射系统、攻击渗透测试环境、安全防护验证平台、红蓝对抗演练场景库、人才培养课程体系\" }, { \"prompt\": \"绿色建筑LEED认证评分标准\", \"completion\": \"七大维度:可持续场地(15%)、用水效率(10%)、能源气候(35%)、材料资源(13%)、室内质量(16%)、创新设计(6%)、地域优先(5%)\" }, { \"prompt\": \"微波光子雷达的技术突破点\", \"completion\": \"前沿方向:光生微波超高频率、光子波束成形精度、光电转换效率提升、抗干扰信号处理算法\" }, { \"prompt\": \"知识图谱构建的五个阶段\", \"completion\": \"实施流程:1. 知识抽取 2. 数据清洗 3. 实体链接 4. 关系建模 5. 推理验证\" }, { \"prompt\": \"智能客服的语义理解优化方案\", \"completion\": \"四维提升:领域词典扩充、意图识别模型微调、上下文记忆增强、多轮对话状态跟踪\" }, { \"prompt\": \"5G网络切片的应用场景划分\", \"completion\": \"三大场景类型:eMBB(增强移动宽带)、uRLLC(超可靠低延迟)、mMTC(大规模物联网)\" }, { \"prompt\": \"实验室危险化学品管理规范\", \"completion\": \"五项制度:双人双锁存储、使用登记追溯、MSDS随取随查、防护装备配备、应急预案演练\" }, { \"prompt\": \"影响光伏板发电效率的环境因素\", \"completion\": \"关键参数:光照强度(>800W/m²)、环境温度(每升1℃效率降0.4%)、积尘程度(每月清洗至少1次)、组件朝向(正南倾角±10°)\" }, { \"prompt\": \"RPA流程自动化实施方法论\", \"completion\": \"六步路线图:流程识别→可行性评估→工具选型→开发部署→效果监控→持续优化\" }, { \"prompt\": \"食品添加剂使用的合法性标准\", \"completion\": \"合规四要素:在GB 2760规定范围内、用量不超过最大限量、工艺必要性证明、标签完整标注\" }, { \"prompt\": \"智慧港口自动化升级关键技术\", \"completion\": \"核心技术栈:5G通信网络、场桥远程操控、AGV路径规划、数字孪生仿真、智能闸口OCR识别\" }, { \"prompt\": \"脑卒中康复训练的阶段规划\", \"completion\": \"三阶段方案:急性期(被动运动防萎缩)→恢复期(主动训练重建功能)→后遗症期(辅助器具适应性训练)\" }, { \"prompt\": \"影响FPGA芯片选型的核心参数\", \"completion\": \"关键指标:逻辑单元数量(LE)、存储带宽(Mbps)、DSP模块密度、收发器速率、功耗比(GFLOPS/W)\" }]