【AI大模型】LLaMA-Factory微调入门个人重制版 📅 发布时间:2026/7/5 1:49:03 👁️ 浏览次数: 说明首次发表日期2024-08-30LLaMA-Factory 官方Github仓库 https://github.com/hiyouga/LLaMA-Factory关于本文是对LLaMA-Factory入门教程 的个人重制版记录一下学习过程省略掉了很多文字部分准备环境git clone https://github.com/hiyouga/LLaMA-Factory.git conda create -n llama_factory python3.10 conda activate llama_factory cd LLaMA-Factory # 使用清华pypi源 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple pip install -e .[torch,metrics]校验环境import torch torch.cuda.current_device() torch.cuda.get_device_name(0) torch.__version__# 获取训练相关的参数指导 llamafactory-cli train -h下载模型apt update apt install git-lfsmkdir models-modelscope cd models-modelscope git lfs install git clone https://www.modelscope.cn/LLM-Research/Meta-Llama-3-8B-Instruct.git下载模型时也可以先下载小文件然后手动pull需要的大文件参考 https://blog.csdn.net/flyingluohaipeng/article/details/130788293# git lfs install GIT_LFS_SKIP_SMUDGE1 git clone https://www.modelscope.cn/LLM-Research/Meta-Llama-3-8B-Instruct.git cd Meta-Llama-3-8B-Instruct git lfs pull --include*.safetensors:查看文件大小和数量是否正确cd Meta-Llama-3-8B-Instruct ls -al --block-sizeM运行推理DEMO运行模型的README中的推理DEMO验证文件的正确性和transformers等依赖库正常可用import transformers import torch # 切换为你下载的模型文件目录, 这里的demo是Llama-3-8B-Instruct # 如果是其他模型比如qwenchatglm请使用其对应的官方demo model_id /root/workspace/models-modelscope/Meta-Llama-3-8B-Instruct pipeline transformers.pipeline( text-generation, modelmodel_id, model_kwargs{torch_dtype: torch.bfloat16}, devicecuda, ) messages [ {role: system, content: You are a pirate chatbot who always responds in pirate speak!}, {role: user, content: Who are you?}, ] prompt pipeline.tokenizer.apply_chat_template( messages, tokenizeFalse, add_generation_promptTrue ) terminators [ pipeline.tokenizer.eos_token_id, pipeline.tokenizer.convert_tokens_to_ids(|eot_id|) ] outputs pipeline( prompt, max_new_tokens256, eos_token_idterminators, do_sampleTrue, temperature0.6, top_p0.9, ) print(outputs[0][generated_text][len(prompt):])输出Loading checkpoint shards: 100%|██████████| 4/4 [00:0000:00, 16.01it/s] Setting pad_token_id to eos_token_id:128009 for open-end generation. Arrrr, shiver me timbers! Me name be Captain Chatbot, the scurviest pirate to ever sail the Seven Seas! Me be a chatbot of great renown, feared and respected by all who cross me digital path. Me specialty be spinnin yarns, swabbin decks, and plunderin knowledge to share with me hearties. So hoist the colors, me matey, and lets set sail fer a swashbucklin adventure o conversation!验证一下LLaMA-Factory的推理部分是否正常会启动基于gradio开发的ChatBot推理页面# 一般不需要我的环境需要GRADIO_ROOT_PATH说明见 https://www.gradio.app/guides/environment-variables#7-gradio-root-path export GRADIO_ROOT_PATH/proxy/7860/ CUDA_VISIBLE_DEVICES0 llamafactory-cli webchat \ --model_name_or_path /root/workspace/models-modelscope/Meta-Llama-3-8B-Instruct \ --template llama3构建自定义数据集指令微调自带的identity.json数据集cd LLaMA-Factory # 其中的NAME 和 AUTHOR 替换成我们需要的内容 sed -i s/{{name}}/PonyBot/g data/identity.json sed -i s/{{author}}/LLaMA Factory/g data/identity.json商品文案生成数据集下载并解压数据cd data # 部分wget参数说明见 https://stackoverflow.com/questions/53189651/capture-a-download-link-redirected-by-a-page-wget 和 https://unix.stackexchange.com/questions/453465/wget-how-to-download-a-served-file-keeping-its-name wget -r -l 1 --span-hosts --accept-regex.*cloud.tsinghua.edu.cn/.*.exe -erobotsoff -nH --content-disposition -nd https://cloud.tsinghua.edu.cn/f/b3f119a008264b1cabd1/?dl1 tar -xvf AdvertiseGen.tar.gz检查数据集格式tail -n 3 AdvertiseGen/train.json输出{content: 类型#裙*版型#宽松*版型#显瘦*颜色#黑色*图案#撞色*裙型#直筒裙*裙款式#拼接, summary: 采用简洁大体的黑色格调宽松舒适的裙子内里配上落肩的袖子拼接不惧夏日的炎热穿出清凉舒适。用时尚的英文字母加上撞色的红白搭配呈现大气时尚的款式。直筒的裙子轮廓前短后长的长度裁剪上身拉长宝宝的身体比例挑高显瘦。} {content: 类型#上衣*颜色#黑色*颜色#紫色*风格#性感*图案#字母*图案#文字*图案#线条*图案#刺绣*衣样式#卫衣*衣长#短款*衣袖型#落肩袖*衣款式#连帽, summary: 卫衣的短款长度设计能够适当地露出腰线打造出纤瘦的身材十分性感。衣身的字母刺绣图案有着小巧的样式黑色的绣线在紫色的衣身上显得很出挑显眼。落肩袖的设计柔化了肩部的线条衬托得人很温柔可爱。紫色的颜色彰显出优雅的气质也不失年轻活力感。连帽的设计让卫衣更加丰满造型感很足长长的帽绳直到腰际处有着延长衣身的效果显得身材UNK。} {content: 类型#上衣*颜色#黑白*风格#简约*风格#休闲*图案#条纹*衣样式#风衣*衣样式#外套, summary: 设计师以条纹作为风衣外套的主要设计元素以简约点缀了外套带来大气休闲的视觉效果。因为采用的是黑白的经典色所以有着颇为出色的耐看性与百搭性可以帮助我们更好的驾驭日常的穿着而且不容易让人觉得它过时。}修改data/dataset_info.json文件添加自定义数据集adgen_local添加后文件尾部看起来如下}, adgen_local: { file_name: AdvertiseGen/train.json, columns: { prompt: content, response: summary } } }其中columns部分将AdvertiseGen/train.json中的content映射为prompt将summary映射为response数据集说明见 https://github.com/hiyouga/LLaMA-Factory/blob/main/data/README_zh.md#指令监督微调数据集基于LoRA的sft指令微调设置从魔搭社区下载数据集# 回到LLaMA-Factory文件夹 cd .. # 安装依赖 pip install modelscope oss2 addict # 从魔搭社区下载 export USE_MODELSCOPE_HUB1开始sft指令微调CUDA_VISIBLE_DEVICES0 llamafactory-cli train \ --stage sft \ --do_train \ --model_name_or_path /root/workspace/models-modelscope/Meta-Llama-3-8B-Instruct \ --dataset alpaca_gpt4_zh,identity,adgen_local \ --dataset_dir ./data \ --template llama3 \ --finetuning_type lora \ --output_dir ./saves/LLaMA3-8B/lora/sft \ --overwrite_cache \ --overwrite_output_dir \ --cutoff_len 1024 \ --preprocessing_num_workers 16 \ --per_device_train_batch_size 2 \ --per_device_eval_batch_size 1 \ --gradient_accumulation_steps 8 \ --lr_scheduler_type cosine \ --logging_steps 50 \ --warmup_steps 20 \ --save_steps 100 \ --eval_steps 50 \ --evaluation_strategy steps \ --load_best_model_at_end \ --learning_rate 5e-5 \ --num_train_epochs 5.0 \ --max_samples 1000 \ --val_size 0.1 \ --plot_loss \ --fp16动态合并LoRA的推理启动WebUIGradio# export GRADIO_ROOT_PATH/proxy/7860/ CUDA_VISIBLE_DEVICES0 llamafactory-cli webchat \ --model_name_or_path /root/workspace/models-modelscope/Meta-Llama-3-8B-Instruct \ --adapter_name_or_path ./saves/LLaMA3-8B/lora/sft \ --template llama3 \ --finetuning_type lora使用命令行进行交互式推理CUDA_VISIBLE_DEVICES0 llamafactory-cli chat \ --model_name_or_path /root/workspace/models-modelscope/Meta-Llama-3-8B-Instruct \ --adapter_name_or_path ./saves/LLaMA3-8B/lora/sft \ --template llama3 \ --finetuning_type lora效果如下User: 你是谁 Assistant: 您好我是 PonyBot一个由 LLaMA Factory 开发的人工智能助手。我可以帮助回答问题提供信息或者进行其他支持性任务。 User: 类型#裙*版型#宽松*版型#显瘦*颜色#黑色*图案#撞色*裙型#直筒裙*裙款式#拼接 Assistant: 这款裙子采用黑色和暗棕色拼接的撞色设计很有设计感。宽松的直筒版型适合任何身材的女人穿着。撞色拼接的裙摆显得活泼有趣。裙身的撞色拼接很有设计感。批量预测和训练效果评估pip install jieba pip install rouge-chinese pip install nltkCUDA_VISIBLE_DEVICES0 llamafactory-cli train \ --stage sft \ --do_predict \ --model_name_or_path /root/workspace/models-modelscope/Meta-Llama-3-8B-Instruct \ --adapter_name_or_path ./saves/LLaMA3-8B/lora/sft \ --eval_dataset alpaca_gpt4_zh,identity,adgen_local \ --dataset_dir ./data \ --template llama3 \ --finetuning_type lora \ --output_dir ./saves/LLaMA3-8B/lora/predict \ --overwrite_cache \ --overwrite_output_dir \ --cutoff_len 1024 \ --preprocessing_num_workers 16 \ --per_device_eval_batch_size 1 \ --max_samples 20 \ --predict_with_generate与训练脚本主要的参数区别如下两个参数名称参数说明do_predict现在是预测模式predict_with_generate现在用于生成文本max_samples每个数据集采样多少用于预测对比运行后输出的尾部***** predict metrics ***** predict_bleu-4 27.9112 predict_model_preparation_time 0.0037 predict_rouge-1 48.432 predict_rouge-2 27.0109 predict_rouge-l 41.2608 predict_runtime 0:01:46.62 predict_samples_per_second 0.563 predict_steps_per_second 0.563 08/29/2024 16:06:36 - INFO - llamafactory.train.sft.trainer - Saving prediction results to ./saves/LLaMA3-8B/lora/predict/generated_predictions.jsonl其中saves/LLaMA3-8B/lora/predict/generated_predictions.jsonl 输出了要预测的数据集的原始label和模型predict的结果saves/LLaMA3-8B/lora/predict/predict_results.json 给出了原始label和模型predict的结果用自动计算的指标数据LoRA模型合并导出如果想把训练的LoRA和原始的大模型进行融合输出一个完整的模型文件的话可以使用如下命令。合并后的模型可以自由地像使用原始的模型一样应用到其他下游环节当然也可以递归地继续用于训练。CUDA_VISIBLE_DEVICES0 llamafactory-cli export \ --model_name_or_path /root/workspace/models-modelscope/Meta-Llama-3-8B-Instruct \ --adapter_name_or_path ./saves/LLaMA3-8B/lora/sft \ --template llama3 \ --finetuning_type lora \ --export_dir megred-model-path \ --export_size 2 \ --export_device cpu \ --export_legacy_format False查看merge后的文件ls -al --block-sizeM megred-model-path/total 15326M drwxr-xr-x 2 root root 1M Aug 29 16:18 . drwxr-xr-x 15 root root 1M Aug 29 16:18 .. -rw-r--r-- 1 root root 1M Aug 29 16:18 config.json -rw-r--r-- 1 root root 1M Aug 29 16:18 generation_config.json -rw-r--r-- 1 root root 1883M Aug 29 16:18 model-00001-of-00009.safetensors -rw-r--r-- 1 root root 1809M Aug 29 16:18 model-00002-of-00009.safetensors -rw-r--r-- 1 root root 1889M Aug 29 16:18 model-00003-of-00009.safetensors -rw-r--r-- 1 root root 1857M Aug 29 16:18 model-00004-of-00009.safetensors -rw-r--r-- 1 root root 1889M Aug 29 16:18 model-00005-of-00009.safetensors -rw-r--r-- 1 root root 1857M Aug 29 16:18 model-00006-of-00009.safetensors -rw-r--r-- 1 root root 1889M Aug 29 16:18 model-00007-of-00009.safetensors -rw-r--r-- 1 root root 1249M Aug 29 16:18 model-00008-of-00009.safetensors -rw-r--r-- 1 root root 1003M Aug 29 16:18 model-00009-of-00009.safetensors -rw-r--r-- 1 root root 1M Aug 29 16:18 model.safetensors.index.json -rw-r--r-- 1 root root 1M Aug 29 16:18 special_tokens_map.json -rw-r--r-- 1 root root 9M Aug 29 16:18 tokenizer.json -rw-r--r-- 1 root root 1M Aug 29 16:18 tokenizer_config.jsonAPI Server的启动与调用使用merge前的LoRA模型推理# export FASTAPI_ROOT_PATH/proxy/8000/ CUDA_VISIBLE_DEVICES0 API_PORT8000 llamafactory-cli api \ --model_name_or_path /root/workspace/models-modelscope/Meta-Llama-3-8B-Instruct \ --adapter_name_or_path ./saves/LLaMA3-8B/lora/sft \ --template llama3 \ --finetuning_type lora BASH 复制 全屏使用merge后的完整版模型基于VLLM推理pip install vllm0.4.3# export FASTAPI_ROOT_PATH/proxy/8000/ CUDA_VISIBLE_DEVICES0 API_PORT8000 llamafactory-cli api \ --model_name_or_path megred-model-path \ --template llama3 \ --infer_backend vllm \ --vllm_enforce_eager我的环境云需要设置root_path见FastAPI文档 https://fastapi.tiangolo.com/zh/advanced/behind-a-proxy/ 故设置了环境变量FASTAPI_ROOT_PATH详见我在LLaMA-Factory官方仓库上提的Issue感谢快速修复转换为gguf模型文件格式git clone https://github.com/ggerganov/llama.cpp.git cd llama.cpp/gguf-py pip install --editable .cd .. python convert_hf_to_gguf.py /root/workspace/LLaMA-Factory/megred-model-path输出最后一行INFO:hf-to-gguf:Model successfully exported to /root/workspace/LLaMA-Factory/megred-model-path/Megred-Model-Path-8.0B-F16.gguf程序员为什么要学大模型大模型时代火爆出圈的LLM大模型让程序员们开始重新评估自己的本领。 “AI会取代那些行业”“谁的饭碗又将不保了”等问题热议不断。事实上抢你饭碗的不是AI而是会利用AI的人。继科大讯飞、阿里、华为等巨头公司发布AI产品后很多中小企业也陆续进场超高年薪挖掘AI大模型人才如今大厂老板们也更倾向于会AI的人普通程序员还有应对的机会吗与其焦虑……不如成为「掌握AI工具的技术人」毕竟AI时代谁先尝试谁就能占得先机但是LLM相关的内容很多现在网上的老课程老教材关于LLM又太少。所以现在小白入门就只能靠自学学习成本和门槛很高。针对所有自学遇到困难的同学们我帮大家系统梳理大模型学习脉络将这份LLM大模型资料分享出来包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 有需要的小伙伴可以扫描下方二维码领取↓↓↓CSDN大礼包全网最全《LLM大模型入门进阶学习资源包》免费分享安全链接放心点击一、LLM大模型经典书籍AI大模型已经成为了当今科技领域的一大热点那以下这些大模型书籍就是非常不错的学习资源。二、640套LLM大模型报告合集这套包含640份报告的合集涵盖了大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师还是对AI大模型感兴趣的爱好者这套报告合集都将为您提供宝贵的信息和启示。(几乎涵盖所有行业)三、LLM大模型系列视频教程四、LLM大模型开源教程LLaLA/Meta/chatglm/chatgptLLM大模型学习路线↓阶段1AI大模型时代的基础理解目标了解AI大模型的基本概念、发展历程和核心原理。内容L1.1 人工智能简述与大模型起源L1.2 大模型与通用人工智能L1.3 GPT模型的发展历程L1.4 模型工程L1.4.1 知识大模型L1.4.2 生产大模型L1.4.3 模型工程方法论L1.4.4 模型工程实践L1.5 GPT应用案例阶段2AI大模型API应用开发工程目标掌握AI大模型API的使用和开发以及相关的编程技能。内容L2.1 API接口L2.1.1 OpenAI API接口L2.1.2 Python接口接入L2.1.3 BOT工具类框架L2.1.4 代码示例L2.2 Prompt框架L2.3 流水线工程L2.4 总结与展望阶段3AI大模型应用架构实践目标深入理解AI大模型的应用架构并能够进行私有化部署。内容L3.1 Agent模型框架L3.2 MetaGPTL3.3 ChatGLML3.4 LLAMAL3.5 其他大模型介绍阶段4AI大模型私有化部署目标掌握多种AI大模型的私有化部署包括多模态和特定领域模型。内容L4.1 模型私有化部署概述L4.2 模型私有化部署的关键技术L4.3 模型私有化部署的实施步骤L4.4 模型私有化部署的应用场景这份LLM大模型资料包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 有需要的小伙伴可以扫描下方二维码领取↓↓↓CSDN大礼包全网最全《LLM大模型入门进阶学习资源包》免费分享安全链接放心点击
项目分享|Wan2.2:开源且进阶的大规模视频生成模型 引言 随着AIGC技术的快速发展,视频生成成为多模态生成领域的核心方向之一。但现有模型往往面临生成效率低、画质差、运动表现力不足等问题,难以兼顾工业级应用的效率与学术研究的可扩展性。Wan2.2的推出,正是为了解决这些痛点——它以创新的… 2026/5/17 3:39:30
照着用就行:10个降AI率工具测评,专科生必看的降AI率指南 在当前的学术写作环境中,AI生成内容(AIGC)已经成为许多学生和研究者不得不面对的问题。尤其是对于专科生来说,如何有效降低论文中的AI痕迹、提升原创性,是确保论文顺利通过查重检测的关键步骤。随着AI技术的普及&#… 2026/7/2 19:21:08
直接上结论:8个AI论文软件测评!专科生毕业论文写作+格式规范全攻略 在当前学术写作日益依赖AI工具的背景下,专科生群体在撰写毕业论文时面临诸多挑战:从选题构思到资料搜集、从内容撰写到格式调整,每一步都可能成为阻碍。为了帮助学生高效完成论文任务,笔者基于2026年最新测评数据与真实用户反馈&a… 2026/7/4 0:56:30
华为 eNSP 安装完全指南(人民标准版 v3.0) 华为 eNSP 安装完全指南(人民标准版 v3.0) DNA追溯码: #龍芯⚡️2026-07-04-ENSPI-INSTALL-GUIDE-v3.0 确认码: #CONFIRM🌌9622-ONLY-ONCE🧬LK9X-772Z IP编号: IP-0021 创始人: LuckyUID9622(诸葛鑫龙芯北辰࿰… 2026/7/5 1:48:25
sklearn 1.9.0 数据集加载实战:5种方法获取UCI数据,对比fetch_openml与本地读取 sklearn 1.9.0 数据集加载实战:5种方法高效获取UCI数据在机器学习项目中,数据获取往往是第一个关键步骤。UCI机器学习库作为全球最知名的开放数据集来源之一,收录了超过600个经典数据集,涵盖分类、回归、聚类等多种任务类型。本文… 2026/7/5 1:46:23
Obsidian Claudian Hermes 工作流 “Obsidian Claudian Hermes”这个组合,是一个由笔记软件(Obsidian)和两款AI工具(Claudian插件与Hermes Agent)共同构成的、本地优先的AI驱动型知识工作流系统。 简单来说,它的核心思想是:让强大… 2026/7/5 1:44:23
不同规模企业如何选择RFID资产管理系统?一份务实的选型指南 在数字化转型的背景下,RFID资产管理系统正在从“大型企业的专属工具”变为“各类规模企业的标准配置”。然而,面对市场上层次不齐的解决方案,不同规模的企业常常感到困惑:小企业担心投入产出比不划算,中型企业怕选到功… 2026/7/5 1:42:22
红队漏洞利用工具:从自动化武器化到实战攻防的核心设计 1. 项目概述:红队高危漏洞利用工具的定位与价值在网络安全攻防演练,也就是我们常说的红蓝对抗里,“红队”扮演的是攻击方的角色。他们的核心任务不是搞破坏,而是模拟真实世界的高级持续性威胁(APT)攻击者&a… 2026/7/5 1:36:20
哈希与hashmap原理知识点总结(java) 1. 哈希的基本思想哈希是一种通过“关键字”快速定位数据位置的思想。基本流程:key → hash 函数 → hash 值 → 数组下标 → 找到元素在 Java 的 HashMap 中,并不是直接把 key 放进数组,而是先计算 key 的 hashCode(),再经过扰动… 2026/7/5 1:32:18
6个月转型AI工程师:实战路径与核心技能 1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公… 2026/7/5 0:01:32
TPAFE0808与PIC18F87K22的多通道信号采集方案 1. 项目背景与核心需求在工业自动化、医疗设备和科研仪器等领域,多通道信号采集与系统监测是基础且关键的技术需求。传统方案往往面临通道数量不足、信号调理复杂、系统集成度低等问题。TPAFE0808作为一款8通道模拟前端芯片,与PIC18F87K22微控制器的组合… 2026/7/5 0:01:32
STC3115与PIC18LF26K80构建高精度电池管理系统 1. STC3115与PIC18LF26K80在电池管理系统中的核心价值在现代电子设备中,电池管理系统(BMS)的重要性不亚于设备的核心处理器。STC3115作为一款高精度电池电量监测IC,与PIC18LF26K80微控制器的组合,构成了一个既能精确监控又能智能管理的完整解… 2026/7/5 0:05:36
6个月转型AI工程师:实战路径与核心技能 1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公… 2026/7/5 0:01:32
TPAFE0808与PIC18F87K22的多通道信号采集方案 1. 项目背景与核心需求在工业自动化、医疗设备和科研仪器等领域,多通道信号采集与系统监测是基础且关键的技术需求。传统方案往往面临通道数量不足、信号调理复杂、系统集成度低等问题。TPAFE0808作为一款8通道模拟前端芯片,与PIC18F87K22微控制器的组合… 2026/7/5 0:01:32
STC3115与PIC18LF26K80构建高精度电池管理系统 1. STC3115与PIC18LF26K80在电池管理系统中的核心价值在现代电子设备中,电池管理系统(BMS)的重要性不亚于设备的核心处理器。STC3115作为一款高精度电池电量监测IC,与PIC18LF26K80微控制器的组合,构成了一个既能精确监控又能智能管理的完整解… 2026/7/5 0:05:36