泗洪网站设计公司,网络服务器功能概述,深圳网页设计兴田德润i优惠吗,网络营销网站建设案例本文详细介绍了使用LLaMA Factory对大语言模型进行指令监督微调(SFT)的完整流程。从数据准备、清洗和格式化开始#xff0c;讲解了全量微调(Full FT)和参数高效微调(PEFT/LoRA)两种技术方法#xff0c;最后通过LLaMA Factory API和Ollama API实现模型部署。文章提供了详细的配…本文详细介绍了使用LLaMA Factory对大语言模型进行指令监督微调(SFT)的完整流程。从数据准备、清洗和格式化开始讲解了全量微调(Full FT)和参数高效微调(PEFT/LoRA)两种技术方法最后通过LLaMA Factory API和Ollama API实现模型部署。文章提供了详细的配置示例和代码片段帮助读者将基础LLM转化为解决特定业务问题的定制化智能体实现高效的大模型微调与应用落地。随着 GPT、LLaMA、QWen 等一众基础模型Base Models的出现LLMs 的通用语言理解和生成能力已得到广泛验证。然而在面对垂直行业、专业领域或特定业务流程对高精度、定制化的需求时基础模型的通用性往往存在局限。微调 (Fine-Tuning)正是解决这类问题的核心技术。它基于已经具备通用知识和特征的预训练模型在相对较小的专业数据集上进行再训练实现知识迁移和能力聚焦从而显著提升模型在特定任务上的表现。本文将重点聚焦于最成熟的微调技术之一——指令监督微调SFT。以 LLaMA Factory 为载体系统性地演示和解析一套完整的微调工作流程。内容涵盖从构建和格式化高质量训练数据到实施不同训练策略如 Full FT 和 PEFT直至最终通过 API 接口将模型部署上线的全部环节旨在帮助大家高效地将基础 LLM 转化为解决特定业务问题的专业化智能体。Fine-Tuning微调Fine-tuning是利用预训练好的模型如 GPT、QWen、LLama 等模型作为基础模型Base Model在一个更小、更专业领域的数据集上进行进一步的训练的过程。它能将预训练模型所学到的模式和特征迁移到新的任务上从而只需较少的数据和计算资源就能提升模型在特定任务上的表现能力。它已成为 NLP 领域的热门方法常用于文本分类、情感分析和问答等任务。通常 Fine-Tuning 可以分为以下三种Unsupervised Fine-Tuning不需要标注数据通过让 LLMs 接触来自目标领域的大量未标注文本语料库从而提升其语言理解能力。这种方法适用于法律或医学等新兴领域不过对于分类或摘要等特定任务的精确度较低。Supervised Fine-TuningSFT为 LLMs 提供针对目标任务定制的标注数据。如在特定业务中使用已标注的分类文本来微调 LLMs使 LLMs 具备对该业务文本的分类能力。这种方法能有效提升 LLMs 在特定业务中的能力但它需要大量的标注数据数据成本高。Instruction Fine-Tuning via Prompt Engineering无需对模型进行训练通过设计 Prompt 来让 LLMs 具备特定的推理能力。这种方法非常依赖于 Prompt 的设计对于创建专业助手非常有用但在面对复杂的推理任务上则效果一般。本文主要是关注于 SFT详细介绍如何一步步使用我们自己的数据来微调出能够解决特定问题的 LLMs。LLaMA Factory在介绍具体步骤之前我们先看下本文使用微调工具LLaMA_Factory。具体可以参考官方文档LLaMA Factory: https://llamafactory.readthedocs.io/zh-cn/latest/LLaMA Factory 是一个简单易用且高效的 LLMs 训练与微调平台。通过 LLaMA Factory可以在无需编写任何代码的前提下在本地完成上百种预训练模型的微调框架特性包括模型种类LLaMA、LLaVA、Mistral、Mixtral-MoE、Qwen、Yi、Gemma、Baichuan、ChatGLM、Phi 等等。训练算法增量预训练、多模态指令监督微调、奖励模型训练、PPO 训练、DPO 训练、KTO 训练、ORPO 训练等等。运算精度16 比特全参数微调、冻结微调、LoRA 微调和基于 AQLM/AWQ/GPTQ/LLM.int8/HQQ/EETQ 的 2/3/4/5/6/8 比特 QLoRA 微调。优化算法GaLore、BAdam、DoRA、LongLoRA、LLaMA Pro、Mixture-of-Depths、LoRA、LoftQ 和 PiSSA。加速算子FlashAttention-2 和 Unsloth。推理引擎Transformers 和 vLLM。实验监控LlamaBoard、TensorBoard、Wandb、MLflow、SwanLab 等等。在安装相关依赖之后就可以通过下面的命令直接安装了git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.gitcd LLaMA-Factorypip install -e .[torch,metrics]# 校验是否安装成功llamafactory-cli versionSFT Pipeline for LLMs微调 LLM 的基本流程图下图所示主要包括Data Preparation构建高质量训练数据集。依次实现对目标领域数据的收集清洗去重/去噪/修正格式、转换为模型可理解的InstructResponse结构并加特殊Token、将数据分为训练集/验证集/测试集Training Fine-Tuning采用 Full FT 或者 PEFT如LoRA 等微调技术对模型进行微调Evaluation Deployment通过设计好的评估指标对模型在测试集上进行评估。最后将上将模型部署上线提供应用。Data Preparation核心目标收集、清理并格式化数据使我们的数据符合模型训练的要求。采用 LLaMA Factory 训练模型需将数据格式化具体可以参考文档https://llamafactory.readthedocs.io/zh-cn/latest/getting_started/data_preparation.html本文采用 ShareGPT 格式来组织结构化数据。ShareGPT格式支持更多的角色种类如 human、gpt、observation、function 等等。下面 OpenAI 格式ShareGPT 的一种特殊格式[ { messages: [ { role: system, content: 系统提示词选填 }, { role: user, content: 人类指令 }, { role: assistant, content: 模型回答 } ] }]这个数据集的效果是模型根据人类指令输出模型回答。然后将 JSON 格式的数据转换成适合用于训练 LLM的 Hugging Face 数据集格式import codecsimport osimport jsonfrom datasets import Dataset # 需安装 dataset 包json_file PATH_TO_JSON_FORMAT_FILE.jsonsave_path SAVE_PATHwith codecs.open(json_file, r, utf-8) as fp: data_json json.load(fp)all_systems data_json[system]all_conversations data_json[conversations]my_dataset Dataset.from_dict({system: all_systems, conversations: all_conversations})print(fSaving to path: [{save_path}])my_dataset.save_to_disk(save_path, max_shard_size2048MB)处理完数据后需要在 LLaMA Factory 的data/dataset_info.json中配置我们的数据名称为My_New_Data_Set_1My_New_Data_Set_1: { file_name: PATH_TO_DATA_FILE, formatting: sharegpt, columns: { messages: messages }, tags: { role_tag: role, content_tag: content, user_tag: user, assistant_tag: assistant, system_tag: system }}注意数据准备阶段应当尽可能保证数据干净可以采用人工或大模型如 DeepSeek-R1对数据进行清洗确保数据有效。Model Training在模型训练之前我们需要下载要用的 Base Model可以在 Hugging Face 官网直接下载如 QWen 模型可以在下面的链接中下载https://huggingface.co/Qwen/models这里更建议通过下面的 python 代码直接下载from huggingface_hub import snapshot_downloadmodel_name Qwen/Qwen2.5-1.5B-Instructprint(f正在下载模型 {model_name} 到 {model_name} ...)snapshot_download( repo_idmodel_name, local_dirmodel_name)下载完成之后我们就有了与训练好的 Base Modeltotal 3026368-rw-r--r-- 1 root root 660 Nov 12 14:21 config.json-rw-r--r-- 1 root root 242 Nov 12 14:21 generation_config.json-rw-r--r-- 1 root root 11343 Nov 12 14:21 LICENSE-rw-r--r-- 1 root root 1671839 Nov 12 14:21 merges.txt-rw-r--r-- 1 root root 3087467144 Nov 12 14:21 model.safetensors-rw-r--r-- 1 root root 4917 Nov 12 14:21 README.md-rw-r--r-- 1 root root 7305 Nov 12 14:21 tokenizer_config.json-rw-r--r-- 1 root root 7031645 Nov 12 14:21 tokenizer.json-rw-r--r-- 1 root root 2776833 Nov 12 14:21 vocab.json下面就可以通过配置来使用我们的数据对 Base Model 进行微调了主要有如下两种微调技术Full Fine-Tuning全量微调在微调阶段会更新预训练模型的所有参数。加载预训练的 LLM如 Llama、Qwen后所有层的权重都会被设置为可训练Trainable并会根据训练数据进行梯度更新。优点性能上限高模型的所有参数都会在新数据上会调整理论上它可以达到最佳的任务性能灵活性强可以修改模型所有的内部表示能更好地适应与预训练数据分布差异较大的新任务。缺点计算资源需大需要巨大的GPU 显存来存储整个模型的权重、激活值和优化器状态例如一个 7B 模型可能需要 40GB 显存训练速度慢需要计算和更新大量的参数梯度存储成本高每次微调都需要保存一个完整模型副本灾难性遗忘对所有权重进行了更新可能会导致模型遗忘在预训练阶段学到的通用知识和能力。在 LLaMA Factory 中可以通过以下配置来实现全量微调qwen2.5_1.5b_full_sft.yaml### modelmodel_name_or_path:/data/BaseModels/Qwen/Qwen2.5-1.5B-Instructtrust_remote_code:true### methodstage:sftdo_train:truedo_eval:truefinetuning_type:fulldeepspeed:examples/deepspeed/ds_z2_config.json### datasetdataset:My_New_Data_Set_1template:qwencutoff_len:2048overwrite_cache:truepreprocessing_num_workers:16dataloader_num_workers:4### outputoutput_dir:saves/qwen2.5-1.5b/full_sftlogging_steps:10save_steps:200plot_loss:trueoverwrite_output_dir:true### trainper_device_train_batch_size:1gradient_accumulation_steps:12learning_rate:1.0e-5num_train_epochs:3.0lr_scheduler_type:cosinewarmup_ratio:0.1bf16:falseddp_timeout:180000000resume_from_checkpoint:null### evalval_size:0.1per_device_eval_batch_size:1eval_strategy:stepseval_steps:200启动训练提供了多种版本可以根据需要选择# 单卡版FORCE_TORCHRUN1 CUDA_VISIBLE_DEVICES0 llamafactory-cli train qwen2.5_1.5b_full_sft.yaml# 多卡版FORCE_TORCHRUN1 NNODES1 NODE_RANK0 MASTER_PORT29500 llamafactory-cli train qwen2.5_1.5b_full_sft.yaml# 多机多卡版假设两台机器FORCE_TORCHRUN1 NNODES2 NODE_RANK0 MASTER_ADDRxx.xx.xx.xx MASTER_PORT29500 llamafactory-cli train qwen2.5_1.5b_full_sft.yamlFORCE_TORCHRUN1 NNODES2 NODE_RANK1 MASTER_ADDRxx.xx.xx.xx MASTER_PORT29500 llamafactory-cli train qwen2.5_1.5b_full_sft.yamlPEFT参数高效微调PEFT 是一组方法的统称只更新模型参数的一小部分甚至不到 1%同时固定大部分预训练权重。代表性方法包括 LoRA (Low-Rank Adaptation)、Prefix Tuning、Prompt Tuning 等。核心思想大多数预训练模型是过参数化的只需要调整少量参数就能达到接近全量微调的性能。优点极大地节省计算资源 只需存储和计算少量新增参数的梯度。如使用 QLoRA 技术微调 7B 模型可能只需 16GB-24GB 显存训练速度快 参数少梯度计算快训练速度显著提升存储成本低 最终只需要存储一个很小的适配器文件Adapter, 几 MB 到几百 MB避免灾难性遗忘 固定了大部分预训练权重有助于保留模型的通用知识和能力模型切换方便 可以轻松切换和加载不同的 Adapter 来应对不同的下游任务。缺点性能略低于 Full Fine-Tuning 在某些极端复杂的、或与预训练领域差异巨大的任务上其性能上限可能略低于全量微调推理时需要合并Merge 在生产部署时通常需要将 PEFT 权重如 LoRA Adapter与原模型权重合并才能获得最佳的推理速度和效率。在 LLaMA Factory 中可以通过以下配置来实现 LoRA 微调qwen2.5_32b_lora_sft.yaml### modelmodel_name_or_path:/data/BaseModels/Qwen/Qwen2.5-32B-Instructtrust_remote_code:true### methodstage:sftdo_train:truefinetuning_type:loralora_alpha:32lora_rank:16lora_target:alldeepspeed:examples/deepspeed/ds_z2_config.json### datasetdataset:My_New_Data_Set_1template:qwencutoff_len:4096overwrite_cache:truepreprocessing_num_workers:16dataloader_num_workers:4### outputoutput_dir:saves/qwen2.5-32b_instruct/lora_sftlogging_steps:10save_steps:400plot_loss:trueoverwrite_output_dir:truesave_only_model:falsereport_to:none### trainper_device_train_batch_size:2gradient_accumulation_steps:8learning_rate:1.0e-5num_train_epochs:3.0lr_scheduler_type:cosinewarmup_ratio:0.1bf16:trueddp_timeout:180000000resume_from_checkpoint:null### evalval_size:0.1per_device_eval_batch_size:1eval_strategy:stepseval_steps:200在模型部署时需要将 Base model 和 Adapter 进行合并可以采用如下代码llamafactory-cli export \ --model_name_or_path /data/BaseModels/Qwen2.5-32B-Instruct \ --adapter_name_or_path saves/qwen2.5-32b_instruct/lora_sft \ --export_dir saves/qwen2.5-32b_instruct/lora_sft/merge/ --template qwen \ --finetuning_type lora \ --export_size 2 \ --export_legacy_format False \ --export_device cpu至此我们得到了使用 LoRA 微调的完整模型。DeepSpeed 配置上面的配置中有 deepspeed 的配置deepspeed: examples/deepspeed/ds_z2_config.jsonDeepSpeed 是微软开发的一个开源深度学习优化库旨在提高大模型训练的效率和速度。DeepSpped 作为 LLMs 训练的高性能基础设施能让研究人员和企业以更少的 GPU 资源或更快的速度来训练超大模型如千亿甚至上万亿参数。在使用 DeepSpeed 之前需要先估计训练任务的显存大小再根据任务需求与资源情况选择合适的 ZeRO 阶段。ZeRO-1: 仅划分优化器参数每个GPU各有一份完整的模型参数与梯度。ZeRO-2: 划分优化器参数与梯度每个GPU各有一份完整的模型参数。ZeRO-3: 划分优化器参数、梯度与模型参数。简单来说从ZeRO-1到ZeRO-3阶段数越高显存需求越小但是训练速度也依次变慢。此外设置offload_paramcpu参数会大幅减小显存需求但会极大地使训练速度减慢。因此如果您有足够的显存 应当使用 ZeRO-1并且确保offload_paramnone。LLaMA Factory 提供了使用不同阶段的 DeepSpeed 配置文件的示例# LLaMA-Factory/examples/deepspeedds_z0_config.jsonds_z2_config.jsonds_z2_offload_config.jsonds_z3_config.jsonds_z3_offload_config.jsonEvaluation Deployment模型训练完后需要对模型在测试集上进行评估。这里的评估指标更多的是我们定义的业务指标如模型回答的格式是否正确回答内容的准确率等等。不同也不差异较大这里就不详细介绍了。下面主要介绍如何部署模型让我们能通过API请求模型。LLaMA Factory API可以通过 LLaMA Factory 实现 API 部署如下所示将模型使用 GPU0 部署起来API_PORT8000 CUDA_VISIBLE_DEVICES0 llamafactory-cli api \ --model_name_or_path saves/qwen2.5-32b_instruct/lora_sft/merge/ \ --template qwen可以通过 Requets 来请求模型defcall_llamafactory_api(prompt): url http://localhost:8000/v1/chat/completions headers { accept: application/json, Content-Type: application/json } payload { model: qwen, messages: [{ role: user, content: prompt}], do_sample: True, temperature: 0.7, top_p: 0.9, n: 1, max_tokens: 200, stream: False } try: response requests.post(url, headersheaders, datajson.dumps(payload)) if response.status_code 200: rsp_json response.json() messages [] for chs in rsp_json.get(choices, []): msg chs[message] messages.append(msg[content]) return messages except requests.exceptions.RequestException as e: print(f请求发生异常: {e})return NoneOllama API此外还可以使用 Ollama 来部署主要流程如下在合并Merge后的 Hugging Face 格式模型之后我们可以通过如下步骤来将模型部署之 Ollama 中转成 GGUF 格式python3 tools/llama.cpp/convert_hf_to_gguf.py \ /data/LLamaFactory/saves/qwen2.5-32b_instruct/lora_sft/merge/\ --outtype auto \ --outfile /data/LLamaFactory/saves/qwen2.5-32b_instruct_lora_sft.gguf创建 Modelfile 在包含 GGUF 文件的目录下创建一个名为 Modelfile 的文件无扩展名FROMqwen2.5-32b_instruct_lora_sft.ggufPARAMETERnum_ctx4096创建/导入模型使用 Ollama CLI 创建或导入模型ollama create my-llm-model -f Modelfile# my-llm-model 给模型起的名字运行模型一旦导入完成可以启动 Ollama 服务OLLAMA_MODELS/usr/share/ollama/.ollama/models \ OLLAMA_HOST0.0.0.0:6006 \ OLLAMA_ORIGINS* \ ollama serveAPI调用通过 Requests 来请求 ollama api实现模型调用OLLAMA_URL http://localhost:6006/v1/chat/completionsMODEL_NAME my-llm-model defcall_ollama(prompt): data { model: MODEL_NAME, messages: [{role: user, content: prompt}], stream: False } try: response requests.post(OLLAMA_URL, jsondata) response.raise_for_status() rsp response.json() results [] for chs in rsp[choices]: if chs[message][role] assistant: result.append(chs[message][content]) return results except Exception as e: result None至此我们成功将模型部署上线并可以通过 API 请求模型实现模型的在线服务。Conclusion本文提供了一份详尽且高度可操作的 LLMs 指令监督微调SFT实践指南系统性地涵盖了从构建和格式化专业数据集到选择合适的训练策略Full FT 或 PEFT再到最终实现模型 API 部署上线的完整链路。文中的每个关键环节都贴心地附带了必要的配置示例与核心代码片段旨在帮助读者快速掌握端到端的微调技术将基础 LLM 高效转化为解决特定业务问题的定制化智能体。最后我在一线科技企业深耕十二载见证过太多因技术卡位而跃迁的案例。那些率先拥抱 AI 的同事早已在效率与薪资上形成代际优势我意识到有很多经验和知识值得分享给大家也可以通过我们的能力和经验解答大家在大模型的学习中的很多困惑。我整理出这套 AI 大模型突围资料包✅AI大模型学习路线图✅Agent行业报告✅100集大模型视频教程✅大模型书籍PDF✅DeepSeek教程✅AI产品经理入门资料完整的大模型学习和面试资料已经上传带到CSDN的官方了有需要的朋友可以扫描下方二维码免费领取【保证100%免费】为什么说现在普通人就业/升职加薪的首选是AI大模型人工智能技术的爆发式增长正以不可逆转之势重塑就业市场版图。从DeepSeek等国产大模型引发的科技圈热议到全国两会关于AI产业发展的政策聚焦再到招聘会上排起的长队AI的热度已从技术领域渗透到就业市场的每一个角落。智联招聘的最新数据给出了最直观的印证2025年2月AI领域求职人数同比增幅突破200%远超其他行业平均水平整个人工智能行业的求职增速达到33.4%位居各行业榜首其中人工智能工程师岗位的求职热度更是飙升69.6%。AI产业的快速扩张也让人才供需矛盾愈发突出。麦肯锡报告明确预测到2030年中国AI专业人才需求将达600万人人才缺口可能高达400万人这一缺口不仅存在于核心技术领域更蔓延至产业应用的各个环节。资料包有什么①从入门到精通的全套视频教程⑤⑥包含提示词工程、RAG、Agent等技术点② AI大模型学习路线图还有视频解说全过程AI大模型学习路线③学习电子书籍和技术文档市面上的大模型书籍确实太多了这些是我精选出来的④各大厂大模型面试题目详解⑤ 这些资料真的有用吗?这份资料由我和鲁为民博士共同整理鲁为民博士先后获得了北京清华大学学士和美国加州理工学院博士学位在包括IEEE Transactions等学术期刊和诸多国际会议上发表了超过50篇学术论文、取得了多项美国和中国发明专利同时还斩获了吴文俊人工智能科学技术奖。目前我正在和鲁博士共同进行人工智能的研究。所有的视频教程由智泊AI老师录制且资料与智泊AI共享相互补充。这份学习大礼包应该算是现在最全面的大模型学习资料了。资料内容涵盖了从入门到进阶的各类视频教程和实战项目无论你是小白还是有些技术基础的这份资料都绝对能帮助你提升薪资待遇转行大模型岗位。智泊AI始终秉持着“让每个人平等享受到优质教育资源”的育人理念通过动态追踪大模型开发、数据标注伦理等前沿技术趋势构建起前沿课程智能实训精准就业的高效培养体系。课堂上不光教理论还带着学员做了十多个真实项目。学员要亲自上手搞数据清洗、模型调优这些硬核操作把课本知识变成真本事如果说你是以下人群中的其中一类都可以来智泊AI学习人工智能找到高薪工作一次小小的“投资”换来的是终身受益应届毕业生无工作经验但想要系统学习AI大模型技术期待通过实战项目掌握核心技术。零基础转型非技术背景但关注AI应用场景计划通过低代码工具实现“AI行业”跨界。业务赋能 突破瓶颈传统开发者Java/前端等学习Transformer架构与LangChain框架向AI全栈工程师转型。获取方式有需要的小伙伴可以保存图片到wx扫描二v码免费领取【保证100%免费】**