零基础大模型开发实战:(五)使用 LLaMA Factory 微调与量化模型并部署至 Ollama

LLaMA Factory 是一个开源的全栈大模型微调框架,简化和加速大型语言模型的训练、微调和部署流程。它支持从预训练到指令微调、强化学习、多模态训练等全流程操作,并提供灵活的配置选项和高效的资源管理能力,适合开发者快速定制化模型以适应特定应用场景。下面通过一个简单的示例来展示如何使用 LLaMA Factory 进行模型微调并部署至 Ollama。

环境搭建与配置

克隆 LLaMA Factory 的 Git 仓库(https://github.com/hiyouga/LLaMA-Factory),创建 Python 虚拟环境并安装依赖。

git clone https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install -e ".[torch,metrics,gptq]"

安装完成后,在 Python 终端执行以下代码,检查 PyTorch 是否为 GPU 版本,如果不是则需要手动安装。

import torch
print(torch.__version__)    # '2.6.0+cu126'
print(torch.cuda.is_available())    # True

在命令行中使用以下命令运行 LLaMA Factory。

llamafactory-cli webui

数据集准备

微调数据集使用“弱智吧数据集”(https://github.com/FunnySaltyFish/Better-Ruozhiba),从百度弱智吧上收集的一系列帖子,旨在启发人们娱乐性使用 ChatGPT 等 LLM 时的思路。微调模型使用阿里的 Qwen2.5:7B 模型。

// 数据集示例
[
    {
        "instruction": "只剩一个心脏了还能活吗?",
        "output": "能,人本来就只有一个心脏。"
    },
    {
        "instruction": "爸爸再婚,我是不是就有了个新娘?",
        "output": "不是的,你有了一个继母。\"新娘\"是指新婚的女方,而你爸爸再婚,他的新婚妻子对你来说是继母。"
    }
]

数据集和模型可以在魔塔社区(https://www.modelscope.cn)上搜索并下载,下载可以使用魔塔社区提供的 SDK 或者 Git 命令行下载。

下面的命令可以直接下载弱智吧数据集和 Qwen2.5:7B 模型。

git clone https://www.modelscope.cn/datasets/AI-ModelScope/Better-Ruozhiba.git    # 弱智吧数据集
git clone https://www.modelscope.cn/Qwen/Qwen2.5-7B-Instruct.git    # Qwen2.5:7B 模型

下载好的数据集还需要在 LLaMA Factory 中进行配置。LLaMA Factory 支持 Alpaca 和 ShareGPT 两种数据格式,分别适用于指令监督微调和多轮对话任务。

  • Alpaca 格式:适用于单轮任务,如问答、文本生成、摘要、翻译等。结构简洁,任务导向清晰,适合低成本的指令微调。
    {
        "instruction": "计算这些物品的总费用。",
        "input": "输入:汽车 - $3000,衣服 - $100,书 - $20。",
        "output": "汽车、衣服和书的总费用为 $3000 + $100 + $20 = $3120。"
    }
    
  • ShareGPT 格式:适用于多轮对话、聊天机器人等任务。结构复杂,包含多轮对话上下文,适合高质量的对话生成和人机交互任务。
    [
        {
            "instruction": "今天的天气怎么样?",
            "input": "",
            "output": "今天的天气不错,是晴天。",
            "history": [
                [
                    "今天会下雨吗?",
                    "今天不会下雨,是个好天气。"
                ],
                [
                    "今天适合出去玩吗?",
                    "非常适合,空气质量很好。"
                ]
            ]
        }
    ]
    

数据集中的字段含义如下:

  • instruction(必填):明确的任务指令,模型需要根据该指令生成输出。
  • input(可选):与任务相关的背景信息或上下文。
  • output(必填):模型需要生成的正确回答。
  • system(可选):系统提示词,用于定义任务的上下文。
  • history(可选):历史对话记录,用于多轮对话任务。

将下载好的 JSON 数据集放入 LLaMA-Factory/data 目录下,并在 LLaMA-Factory/data/data_info.json 中注册数据集。

WebUI 配置微调参数

访问 http://localhost:7860/ ,进入 LLaMA Factory 的 WebUI 界面。WebUI 主要分为四个界面:训练(Train)、评估与预测(Evaluate & Predict)、对话(Chat)、导出(Export)。

先设置页面上半部分的内容。

模型名称选择为待训练的模型名称,这里设置为 Qwen2.5-7B-Instruct。模型路径设置为上面下载的模型路径,例如在 LLaMA-Factory 目录下新建一个 models 文件夹,将下载的模型移动到此文件夹内,可设置路径为 models/Qwen2.5-7B-Instruct。微调方法支持 lora/freeze/full 方法,这里选择 lora 方法,其他方法对计算机配置要求较高,对个人电脑来说一般不适用。

  • LoRA(Low-Rank Adaptation):通过在模型的某些层中添加低秩矩阵来实现微调。
  • 全量微调(Full Fine-Tuning):对模型的所有参数进行微调。
  • 冻结微调(Freeze Fine-Tuning):冻结模型的某些层或全部层,仅微调特定的参数。

下表描述了在训练或推理不同规模的大模型(如 7B、13B 参数模型)时,所需硬件的显存需求。例如使用 LoRA 微调 Qwen2.5:7B 模型时,显存需求为 16GB。

方法精度7B14B30B70BxB
Full (bf16 or fp16)32120GB240GB600GB1200GB18xGB
Full (pure_bf16)1660GB120GB300GB600GB8xGB
Freeze/LoRA/GaLore/APOLLO/BAdam1616GB32GB64GB160GB2xGB
QLoRA810GB20GB40GB80GBxGB
QLoRA46GB12GB24GB48GBx/2GB
QLoRA24GB8GB16GB24GBx/4GB

下面设置 Train 选项卡中的参数。

训练阶段设置为 Supervised Fine-Tuning

  • Supervised Fine-Tuning:监督微调是最常见的微调方法,使用标注好的数据对预训练模型进行进一步训练,以适应特定任务(如分类、问答等)。
  • Reward Modeling:奖励建模是一种用于优化模型输出质量的方法,通常用于强化学习的上下文中。
  • PPO(Proximal Policy Optimization):PPO 是一种基于强化学习的微调方法,用于优化模型的输出策略。
  • DPO (Direct Preference Optimization):DPO 是一种基于人类偏好的直接优化方法,用于训练模型以生成更符合人类偏好的输出。
  • Pre-Training:预训练是指从头开始训练一个大模型,通常使用大量的无监督数据(如文本语料库)。预训练的目标是让模型学习通用的语言知识和模式。

数据集选择上文注册的数据集名称,这里设置为 ruozhiba。训练轮次根据数据集大小调整,这里设置为 100。学习率通常设置为 1e-4 或 5e-5。计算类型设置为 bf16,如果你的硬件不支持,可以选择 fp16,基本上 2020 年之后的 GPU 都支持 bf16

接着对 LoRA 参数进行设置。其中关键的参数是秩(rank),秩的大小直接影响模型的性能和资源消耗。秩越大,引入的可训练参数越多,模型对新数据的适应能力越强,但也增加了计算和内存的需求,可能导致过拟合。秩越小,引入的可训练参数较少,减少了计算和内存的需求,但可能不足以充分适应新数据,影响模型性能。可以从较小的值开始(如8、10、12),逐步增加,观察模型性能的变化。

参数配置好后,点击开始,即可进行训练。训练时可以观察右侧的损失曲线,曲线长时间不下降时,即可考虑退出训练。

模型训练好后,会保存至 LLaMA-Factory 的 saves 文件夹中。

模型导出与量化

下面切换至 Export 选项卡,设置导出参数。补全检查点路径与导出目录,点击开始导出。到此为止,模型已经具备了使用能力。

大语言模型的参数通常以高精度浮点数(如32位浮点数,FP32)存储,这导致模型推理需要大量计算资源。量化技术通过将高精度数据类型存储的参数转换为低精度数据类型(如8位整数,INT8)存储,可以在不改变模型参数量和架构的前提下加速推理过程。这种方法使得模型的部署更加经济高效,也更具可行性。

量化前需要先将模型导出后再量化。修改模型路径为导出后的模型路径,导出量化等级一般选择 8 或 4,太低模型会答非所问。

导入 Ollama

新版的 Ollama 可以直接导入 safetensors 模型,首先需要准备 Modelfile 文件。Modelfile 文件是一个文本文件,包含了模型的基本信息和配置参数。可以在命令行中执行下面的命令,看看 Ollama 中对应的模型是怎么写的。

ollama show --modelfile qwen2.5:7b

当然 LLaMA Factory 导出时也已经生成了 Modelfile 文件,直接使用即可。

将命令行切换到导出模型的目录,执行下面的命令,导入模型。

ollama create qwen2.5-ruozhi:7b -f Modelfile

最后运行微调前和微调后的模型,比较一下效果

 如何系统的去学习大模型LLM ?

大模型时代,火爆出圈的LLM大模型让程序员们开始重新评估自己的本领。 “AI会取代那些行业?”“谁的饭碗又将不保了?”等问题热议不断。

事实上,抢你饭碗的不是AI,而是会利用AI的人。

科大讯飞、阿里、华为等巨头公司发布AI产品后,很多中小企业也陆续进场!超高年薪,挖掘AI大模型人才! 如今大厂老板们,也更倾向于会AI的人,普通程序员,还有应对的机会吗?

与其焦虑……

不如成为「掌握AI工具的技术人」,毕竟AI时代,谁先尝试,谁就能占得先机!

但是LLM相关的内容很多,现在网上的老课程老教材关于LLM又太少。所以现在小白入门就只能靠自学,学习成本和门槛很高。

基于此,我用做产品的心态来打磨这份大模型教程,深挖痛点并持续修改了近70次后,终于把整个AI大模型的学习门槛,降到了最低!

在这个版本当中:

第一您不需要具备任何算法和数学的基础
第二不要求准备高配置的电脑
第三不必懂Python等任何编程语言

您只需要听我讲,跟着我做即可,为了让学习的道路变得更简单,这份大模型教程已经给大家整理并打包,现在将这份 LLM大模型资料 分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

一、LLM大模型经典书籍

AI大模型已经成为了当今科技领域的一大热点,那以下这些大模型书籍就是非常不错的学习资源。

在这里插入图片描述

二、640套LLM大模型报告合集

这套包含640份报告的合集,涵盖了大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。(几乎涵盖所有行业)
在这里插入图片描述

三、LLM大模型系列视频教程

在这里插入图片描述

四、LLM大模型开源教程(LLaLA/Meta/chatglm/chatgpt)

在这里插入图片描述

五、AI产品经理大模型教程

在这里插入图片描述

LLM大模型学习路线 

阶段1:AI大模型时代的基础理解

  • 目标:了解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应用案例

阶段2:AI大模型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 总结与展望

阶段3:AI大模型应用架构实践

  • 目标:深入理解AI大模型的应用架构,并能够进行私有化部署。

  • 内容

    • L3.1 Agent模型框架
    • L3.2 MetaGPT
    • L3.3 ChatGLM
    • L3.4 LLAMA
    • L3.5 其他大模型介绍

阶段4:AI大模型私有化部署

  • 目标:掌握多种AI大模型的私有化部署,包括多模态和特定领域模型。

  • 内容

    • L4.1 模型私有化部署概述
    • L4.2 模型私有化部署的关键技术
    • L4.3 模型私有化部署的实施步骤
    • L4.4 模型私有化部署的应用场景

这份 LLM大模型资料 包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

 

<think>好的,我现在需要帮助用户了解如何使用Llama-FactoryOllama中的大模型进行微调。首先,我应该回顾一下用户提供的引用内容,确保信息准确。 用户提到了三个引用,其中引用[3]提到了使用Llama-Factory微调通义千问qwen1.5-1.8B模型的实例,提到在model_config.py中配置模型路径。引用[1]和[2]则涉及在Ollama中创建模型的方法。结合这些信息,我需要将步骤拆分为准备环境、配置模型、数据准备、启动微调、转换格式和部署Ollama等步骤。 首先,安装Llama-Factory是基础步骤,需要确保用户克隆仓库安装依赖。然后,模型配置部分需要指导用户如何修改model_config.py,添加本地模型路径,这里可能需要引用引用[3]的内容。数据准备部分需要说明如何准备数据集文件,比如使用JSON格式,参考示例数据。 接下来,启动微调的命令可能需要指定模型名称、数据集和训练参数,这部分需要结合Llama-Factory的文档,确保命令正确。微调完成后,将模型转换为Ollama支持的GGUF格式是关键,这里可能需要使用llama.cpp的转换脚本,但用户可能需要额外安装,需要提醒他们注意。 最后,创建Ollama模型需要编写Modelfile,引用转换后的模型文件,这里可以引用引用[1]和[2]中的命令。同时,注意事项部分需要强调路径正确性和资源需求,特别是显存问题,可能影响微调效果。 在生成相关问题时,要覆盖用户可能遇到的后续步骤,比如模型部署、效果评估、多数据集处理和微调失败处理,这样能帮助用户全面了解整个流程。需要确保每个步骤都清晰,且引用正确,避免用户混淆。同时,保持语言简洁,避免技术术语过多,让新手也能理解。</think>### 使用 Llama-Factory 微调 Ollama 大模型的步骤教程 #### 1. 环境准备 - **安装 Ollama** 确保已安装 Ollama 配置基础环境[^2]。 - **安装 Llama-Factory** 克隆仓库安装依赖: ```bash git clone https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory pip install -r requirements.txt ``` #### 2. 配置模型路径 - **修改 `model_config.py`** 在 Llama-Factory 的配置文件中添加模型路径(参考引用[3]): ```python # model_config.py 示例 "your_model_name": { "pretrained_model_name": "ollama_model_path", "local_model_path": "/path/to/your/ollama_model" } ``` #### 3. 准备数据集 - **数据集格式** 使用 JSON 文件存储训练数据,格式示例: ```json [ {"instruction": "问题示例", "input": "", "output": "回答示例"}, {"instruction": "解释量子力学", "input": "", "output": "量子力学是研究微观粒子..."} ] ``` #### 4. 启动微调 - **运行训练命令** 使用以下命令启动微调(类似引用[3]中流程): ```bash python src/train_bash.py \ --model_name your_model_name \ --dataset your_dataset.json \ --batch_size 8 \ --num_epochs 3 ``` #### 5. 转换为 Ollama 格式 - **生成 GGUF 文件** 使用 `llama.cpp` 转换模型Ollama 支持的 GGUF 格式: ```bash python convert.py --input-dir ./output_model --output-dir ./gguf_model ``` #### 6. 部署Ollama - **创建 Modelfile** 编写包含模型参数的配置文件: ```modelfile FROM ./gguf_model/q4_0.gguf PARAMETER num_ctx 4096 ``` - **构建模型** 执行 Ollama 创建命令(参考引用[1][2]): ```bash ollama create your_model_name -f ./Modelfile ``` #### 注意事项 1. **路径一致性**:确保配置文件中模型路径本地实际路径完全匹配[^3] 2. **显存需求**:微调 7B 模型至少需要 24GB 显存 3. **量化建议**:可使用 `--quantization 4bit` 参数减少显存占用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值