保姆级教程:用LLaMA-Factory微调GLM-4-9B-Chat-1M

📅 发布时间:2026/7/11 16:58:32 👁️ 浏览次数:
保姆级教程:用LLaMA-Factory微调GLM-4-9B-Chat-1M
保姆级教程用LLaMA-Factory微调GLM-4-9B-Chat-1M1. 教程概述今天我要带大家用LLaMA-Factory这个强大的微调工具来训练一个专门处理长文本任务的GLM-4-9B-Chat-1M模型。这个模型最大的特点就是能一次性处理长达100万个token的文本相当于200万字的中文内容想象一下你可以让AI一次性读完一本300页的书然后让它帮你总结重点、提取关键信息或者回答关于书中内容的问题。这就是我们要实现的目标。学习完本教程你将掌握如何快速搭建微调环境准备适合自己任务的数据集使用可视化界面训练模型将训练好的模型部署成API服务用Python代码调用你自己的AI助手不需要深厚的技术背景只要跟着步骤走就能轻松上手2. 环境准备与快速部署2.1 获取项目代码首先我们需要获取LLaMA-Factory的源代码git clone https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory2.2 使用预构建镜像推荐为了节省时间我建议大家直接使用我已经构建好的Docker镜像docker run -it --gpus device0 \ -v ./hf_cache:/root/.cache/huggingface \ -v ./ms_cache:/root/.cache/modelscope \ -v ./data:/app/data \ -v ./output:/app/output \ -v /path/to/your/models:/models \ -p 7860:7860 \ -p 8000:8000 \ --shm-size 16G \ kevinchina/deeplearning:llamafactory0823 bash这个镜像已经包含了所有必要的依赖开箱即用。如果你想要自己构建也可以参考提供的Dockerfile。3. 数据准备与格式说明3.1 准备训练数据训练数据需要准备成特定的JSON格式。这里我给大家一个实际例子[ { instruction: 请对以下材料进行分类并找出材料中的负责人名字。, input: 本公司2024年第一季度财报显示收入增长了20%。财务负责人是张三。, output: 分类: 财务报告; 负责人: 张三, system: 你是一位文本分类和信息提取专家。 }, { instruction: 请对以下材料进行分类并找出材料中的负责人名字。, input: 根据最新的市场调研报告本季度市场份额有显著提升。市场部负责人李四表示对未来市场充满信心。, output: 分类: 市场调研报告; 负责人: 李四, system: 你是一位文本分类和信息提取专家。 } ]3.2 配置数据集信息在dataset_info.json文件中添加你的数据集配置{ my_custom_dataset: { file_name: data.json, columns: { prompt: instruction, query: input, response: output, system: system } } }这样系统就知道怎么读取你的数据了。4. 可视化训练界面LLaMA-Factory提供了一个很友好的Web界面让训练变得非常简单llamafactory-cli webui然后在浏览器打开http://localhost:7860你会看到这样的界面模型设置选择GLM-4-9B-Chat-1M模型路径训练配置设置学习率、训练轮数等参数数据选择选择你刚才配置的数据集LoRA设置配置适配器参数后面会详细解释填好所有参数后系统会生成训练命令你可以直接复制执行。5. 开始训练模型5.1 训练命令详解在容器内执行这个训练命令CUDA_VISIBLE_DEVICES0 llamafactory-cli train \ --stage sft \ --do_train True \ --model_name_or_path /models/glm-4-9b-chat-1m \ --preprocessing_num_workers 16 \ --finetuning_type lora \ --template glm4 \ --flash_attn auto \ --dataset_dir data \ --dataset my_custom_dataset \ --cutoff_len 1024 \ --learning_rate 5e-05 \ --num_train_epochs 20.0 \ --max_samples 100000 \ --per_device_train_batch_size 2 \ --gradient_accumulation_steps 8 \ --lr_scheduler_type cosine \ --max_grad_norm 1.0 \ --logging_steps 5 \ --save_steps 100 \ --warmup_steps 0 \ --optim adamw_torch \ --packing False \ --report_to none \ --output_dir saves/GLM-4-9B-1M-Chat/lora/train_2024-08-23-05-50-59 \ --bf16 True \ --plot_loss True \ --ddp_timeout 180000000 \ --include_num_input_tokens_seen True \ --lora_rank 128 \ --lora_alpha 16 \ --lora_dropout 0 \ --lora_target all5.2 训练过程监控训练开始后你会看到损失曲线逐渐下降这意味着模型正在学习。整个过程可能需要几个小时到几天取决于你的数据量和硬件配置。训练完成后模型权重会保存在指定的输出目录中。6. 模型推理与测试训练完成后我们可以在Web界面中加载训练好的模型进行测试选择模型路径和适配器路径点击加载模型按钮在聊天界面输入测试文本查看模型的回复效果你可以输入一些长文本测试模型的信息提取和能力。比如给一段技术文档让模型总结重点内容。7. 模型导出与部署7.1 导出训练好的模型在Web界面中你可以选择导出训练好的模型。导出的模型可以独立部署不需要LLaMA-Factory环境。7.2 启动API服务使用这个命令启动API服务llamafactory-cli api \ --model_name_or_path /models/glm-4-9b-chat-1m \ --template glm4 \ --finetuning_type lora \ --adapter_name_or_path saves/GLM-4-9B-1M-Chat/lora/train_2024-08-23-05-50-59/checkpoint-1320 \ --infer_dtype bfloat16服务启动后可以通过http://localhost:8000/docs访问API文档。8. 实际应用示例8.1 使用curl测试APIcurl -X POST \ http://localhost:8000/v1/chat/completions \ -H accept: application/json \ -H Content-Type: application/json \ -d { model: gpt-3.5-turbo, messages: [ { role: system, content: 你是一位文本分类和信息提取专家。 }, { role: user, content: 请分析以下文本材料并提取关键信息。 }, { role: assistant, content: 好的请提供需要分析的文本材料。 }, { role: user, content: 这里放你的长文本内容... } ], do_sample: true, temperature: 0.7, top_p: 0.9, n: 1, max_tokens: 250 }8.2 Python代码调用示例import requests import json def call_ai_api(text_content): url http://localhost:8000/v1/chat/completions headers { accept: application/json, Content-Type: application/json } data { model: gpt-3.5-turbo, messages: [ { role: system, content: 你是一位专业的文本分析专家。 }, { role: user, content: f请分析以下文本并提取关键信息{text_content} } ], max_tokens: 500 } response requests.post(url, headersheaders, datajson.dumps(data)) return response.json() # 使用示例 result call_ai_api(你的长文本内容在这里...) print(result)9. 总结与建议通过这个教程你应该已经掌握了用LLaMA-Factory微调GLM-4-9B-Chat-1M模型的完整流程。这个模型特别适合处理长文本任务比如文档摘要快速总结长篇文章或报告信息提取从合同、论文中提取关键信息问答系统基于长文档的智能问答内容分析分析用户反馈、评论等文本数据给新手的建议从小数据集开始先确保流程跑通多尝试不同的参数设置找到最适合你任务的配置训练前后都要充分测试模型效果记得保存训练过程中的检查点方便回退现在你已经有了一个强大的长文本处理AI助手快去尝试解决实际问题吧获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。