ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

从0到1微调安全大模型,如何通过各种开源框架在本地完成安全大模型的微调?

从0到1微调安全大模型,如何通过各种开源框架在本地完成安全大模型的微调? 前言本文将详细介绍如何通过各种开源框架在本地完成安全大模型的微调从底层模型层来优化模型做出适合安全研究人员的大模型微调简介微调指的是在一个已经经过大规模、通用数据集预训练好的基础模型上使用相对较小规模的、特定领域或特定任务的数据集对该模型进行进一步训练的过程。微调 预训练模型 特定任务数据 进一步训练本质是一种高效的迁移学习方法利用预训练模型强大的通用能力通过少量领域/任务数据对其进行针对性优化使其适应具体的应用需求。目的以较低的成本相比预训练让“通才”模型转变为特定领域的“专家”或特定任务的“能手”。基础环境硬件基础GPU: Inter GTX5060 100%跑勉强够用CPU: Inter I9-14900HX 实际上用不到内存32GB软件基础操作系统windows 11框架: LLama-Factory (国产最热门的微调框架)国内北航开源的低代码大模型训练框架可以实现零代码微调简单易学功能强大且目前热度很高建议新手从这个开始入门非常适合我这种小白关于框架选择建议可以看https://www.zhihu.com/question/638803488/answer/84354509523算法: LoRA (最著名的部分参数微调算法2021 年 Microsoft Research 提出首次提出了通过低秩矩阵分解的方式来进行部分参数微调极大推动了 AI 技术在多行业的广泛落地应用LoRA: Low-Rank Adaptation of Large Language Models基座模型DeepSeek-R1-Distill-Qwen-1.5B蒸馏技术通常用于通过将大模型教师模型的知识转移到小模型学生模型中使得小模型能够在尽量保持性能的同时显著减少模型的参数量和计算需求。实操过程\1.搭建LLama-Factory环境LLaMA-Factory 的 Github地址https://github.com/hiyouga/LLaMA-Factory克隆仓库Plain Text git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git切换到项目目录Plain Text cd LLaMA-Factory创建 conda 虚拟环境(一定要 3.10 的 python 版本不然和 LLaMA-Factory 不兼容)Plain Text conda create -n llama-factory python3.10激活虚拟环境Plain Text conda activate llama-factory在虚拟环境中安装 LLaMA Factory 相关依赖Plain Text pip install -e “.[torch,metrics]”注意如报错 bash: pip: command not found 先执行 conda install pip 即可在虚拟环境安装 PyTorch不安装微调的时候会报错滴查看自己的显卡支持的当前CUDAwindows命令为Plain Text nvidia-smi然后去PyTorch官网上对应下载版本https://pytorch.org/get-started/locally/Plain Text pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu128检验是否安装成功Plain Text llamafactory-cli version启动 LLama-Factory 的可视化微调界面 由 Gradio 驱动Plain Text llamafactory-cli webui成功启动后会返回一个前端链接\2.Hugging Face下载基准模型HuggingFace 是一个集中管理和共享预训练模型的平台 https://huggingface.co;HuggingFace数据huggingface-cli 下载https://huggingface.co/docs/huggingface_hub/main/en/guides/cli从 HuggingFace 上下载模型有多种不同的方式可以参考如何快速下载huggingface模型——全方法总结创建文件夹统一存放所有基座模型Plain Text mkdir Hugging-Face安装 HuggingFace 官方下载工具Plain Text pip install -U huggingface_hub修改 HuggingFace 的镜像源Plain Text set HF_ENDPOINThttps://hf-mirror.com修改模型下载的默认位置Plain Text set HF_HOMEC:\Users\H\Desktop\llm\Hugging-Face注意这种配置方式只在当前 shell 会话中有效如果你希望这个环境变量在每次启动终端时都生效可以将其添加到你的环境变量配置文件中检查环境变量是否生效Plain Text huggingface-cli env可以看到输入命令之后其中的ENDPOINT已经修改为上述设置的执行下载命令Plain Text huggingface-cli download --resume-download deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B可以看到成功下载PS图中其实是之前已经下载了的\3.构造数据集从hugging face中获取到数据集访问https://huggingface.co/datasets?searchsecurity 找些数据集随便找一个web安全的数据集吧https://huggingface.co/datasets/Conard/web-security优化数据格式为LLama-Factory的数据格式修改dataset_info.json文件添加如下配置Plain Textweb-security:{file_name:web-security.json},将数据集 web-security.json 放到 LLama-Factory 的data 目录下\4.Llama Factory 微调加载基准模型语言先选择中文之后在模型里边直接输入之前下载的会自动筛选最重要的是下载下来的模型文件路径注意这里的路径是模型文件夹内部的模型特定快照的唯一哈希值而不是整个模型文件夹然后就可以选择chat 加载模型之后随便输入当看到模型返回信息时证明模型已经成功加载并跑起来了微调配置按照下图选一下,这里除了微调算法、数据集之外剩下的超参数其实是按照默认的具体参数可根据情况改动哈选择微调算法Lora添加数据集web-security修改其他训练相关参数如学习率、训练轮数、截断长度、验证集比例等学习率Learning Rate决定了模型每次更新时权重改变的幅度。过大可能会错过最优解过小会学得很慢或陷入局部最优解训练轮数Epochs太少模型会欠拟合没学好太大会过拟合学过头了最大梯度范数Max Gradient Norm当梯度的值超过这个范围时会被截断防止梯度爆炸现象最大样本数Max Samples每轮训练中最多使用的样本数计算类型Computation Type在训练时使用的数据类型常见的有 float32 和 float16。在性能和精度之间找平衡截断长度Truncation Length处理长文本时如果太长超过这个阈值的部分会被截断掉避免内存溢出批处理大小Batch Size由于内存限制每轮训练我们要将训练集数据分批次送进去这个批次大小就是 Batch Size梯度累积Gradient Accumulation默认情况下模型会在每个 batch 处理完后进行一次更新一个参数但你可以通过设置这个梯度累计让他直到处理完多个小批次的数据后才进行一次更新验证集比例Validation Set Proportion数据集分为训练集和验证集两个部分训练集用来学习训练验证集用来验证学习效果如何学习率调节器Learning Rate Scheduler在训练的过程中帮你自动调整优化学习率开启微调点击开始此时就会调用电脑的GPU、CPU开始进行微调工作了只需要等上那么八八四十九天可以看到在漫长的一段时间最起码2h终于得到了微调后的模型当微调完毕后可以通过观察损失曲线的变化观察最终损失来了解本次的微调效果这里由于随便给的参数所以数据结果也不重要了实际上还凑合吧检查点保存的是模型在训练过程中的一个中间状态包含了模型权重、训练过程中使用的配置如学习率、批次大小等信息对LoRA来说检查点包含了训练得到的 B 和 A 这两个低秩矩阵的权重若微调效果不理想你可以使用更强的预训练模型增加数据量优化数据质量数据清洗、数据增强等可学习相关论文如何实现调整训练参数如学习率、训练轮数、优化器、批次大小等等直接看结果吧我们将刚才的微调后的数据加载到检查点路径然后重新卸载、加载下模型问他一个安全问题可以看到结果还是挺不错滴\5.玩上微调后的模型导出微调后的模型等待一会基本上一两分钟吧就可以导出成功FastAPI框架构造应用使用Python FastAPI框架快速搭建一个服务端应用fromfastapiimportFastAPIfromtransformersimportAutoModelForCausalLM,AutoTokenizerimporttorch appFastAPI()# 模型路径 model_path # 加载 tokenizer 分词器 tokenizer AutoTokenizer.from_pretrained(model_path) # 加载模型并移动到可用设备GPU/CPU device cuda if torch.cuda.is_available() else cpu print(使用设备:, device) model AutoModelForCausalLM.from_pretrained(model_path).to(device) app.get(/generate) async def generate_text(prompt: str): # 使用 tokenizer 编码输入的 prompt inputs tokenizer(prompt, return_tensorspt).to(device) # 使用模型生成文本 outputs model.generate(inputs[input_ids], max_length150) # 解码生成的输出 generated_text tokenizer.decode(outputs[0], skip_special_tokensTrue) return {generated_text: generated_text}小提示在windows下transformers本身有点编码不兼容的问题需要修改下这个包中的源代码修改完后加载起来可以看到成功run起来啦最后为什么要学AI大模型当下⼈⼯智能市场迎来了爆发期并逐渐进⼊以⼈⼯通⽤智能AGI为主导的新时代。企业纷纷官宣“ AI ”战略为新兴技术⼈才创造丰富的就业机会⼈才缺⼝将达 400 万DeepSeek问世以来生成式AI和大模型技术爆发式增长让很多岗位重新成了炙手可热的新星岗位薪资远超很多后端岗位在程序员中稳居前列。与此同时AI与各行各业深度融合飞速发展成为炙手可热的新风口企业非常需要了解AI、懂AI、会用AI的员工纷纷开出高薪招聘AI大模型相关岗位。最近很多程序员朋友都已经学习或者准备学习 AI 大模型后台也经常会有小伙伴咨询学习路线和学习资料我特别拜托北京清华大学学士和美国加州理工学院博士学位的鲁为民老师给大家这里给大家准备了一份涵盖了AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频全系列的学习资料这些学习资料不仅深入浅出而且非常实用让大家系统而高效地掌握AI大模型的各个知识点。这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】AI大模型系统学习路线在面对AI大模型开发领域的复杂与深入精准学习显得尤为重要。一份系统的技术路线图不仅能够帮助开发者清晰地了解从入门到精通所需掌握的知识点还能提供一条高效、有序的学习路径。但知道是一回事做又是另一回事初学者最常遇到的问题主要是理论知识缺乏、资源和工具的限制、模型理解和调试的复杂性在这基础上找到高质量的学习资源不浪费时间、不走弯路又是重中之重。AI大模型入门到实战的视频教程项目包看视频学习是一种高效、直观、灵活且富有吸引力的学习方式可以更直观地展示过程能有效提升学习兴趣和理解力是现在获取知识的重要途径光学理论是没用的要学会跟着一起敲要动手实操才能将自己的所学运用到实际当中去这时候可以搞点实战案例来学习。海量AI大模型必读的经典书籍PDF阅读AI大模型经典书籍可以帮助读者提高技术水平开拓视野掌握核心技术提高解决问题的能力同时也可以借鉴他人的经验。对于想要深入学习AI大模型开发的读者来说阅读经典书籍是非常有必要的。600AI大模型报告实时更新这套包含640份报告的合集涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师还是对AI大模型感兴趣的爱好者这套报告合集都将为您提供宝贵的信息和启示。AI大模型面试真题答案解析我们学习AI大模型必然是想找到高薪的工作下面这些面试题都是总结当前最新、最热、最高频的面试题并且每道题都有详细的答案面试前刷完这套面试题资料小小offer不在话下这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
返回列表