ChatGLM、Baichuan、LLama、Vicuna、Gemini、Qwen2.5对比总结

大模型优化:ChatGLM2与LLaMA2的关键改进与速度提升,

ChatGLM2-6B相对于ChatGLM1-6B(GLM)的重要改进点

  • 使用了Flash Attention将Context Length由ChatGLM的2k扩展到了32k
  • 使用Multi-Query Attention大幅提高了模型的推理速度
  • 使用了混合目标函数,该目标函数在ChatGLM中已经提出来了,但当时效果不好。ChatGLM2加入了Document-level Masking和Sentece-level Masking
  • 仓库中提供了友好的P-tuning代码,fine-tuning模型非常方便

这部分转载自 https://www.zhihu.com/question/608732789/answer/3141379386

Vicuna相比LLaMA1的改进点

Vicuna是LLama经过Instruction Fine Tune的版本。

Instruction Fine Tune和Prompt Engineer的区别

IFT involves actually training the model by changing its weights. The LLM’s weights are not changed in prompt Engineer

部分转载自 https://community.deeplearning.ai/t/confusion-between-instruction-fine-tuning-vs-prompt-engineering/491824

LLama1相比GPT2的改进

  • 首次引入RMSNorm层​(去均值计算的LayerNorm变体)替代传统LayerNorm,提升计算效率,RMSNorm使用PreNorm更多
  • 采用SwiGLU激活函数替代ReLU,增强非线性表达能力
  • ​RoPE旋转位置编码突破传统绝对位置编码限制,支持长序列建模

LLama2相比LLama1的改进

  • 模型结构基本和llama一样,transformer decoder结构,RMSNorm 应用预归一化、使用 SwiGLU 激活函数和旋转位置嵌入RoPE。
  • 上下文长度是由之前的2048升级到4096,可以理解和生成更长的文本。
  • 7B和13B 使用与 LLaMA 相同的架构,34B和70B模型采用分组查询注意力(GQA)。For speed up decoding! 自回归解码的标准做法(past key-value 机制)是缓存序列中先前标记的k,v矩阵,从而加快注意力计算速度。但上下文长度、批量大小、模型大小较大时,多头注意力(MHA)中的kv缓存无疑巨大。所以采用分组查询注意力机制(GQA)可以提高大模型的推理可扩展性。它的工作原理是将键和值投影在多个头之间共享,而不会大幅降低性能。可以使用具有单个KV投影的原始多查询格式(MQA)或具有8KV投影的分组查询注意力变体(GQA)

Llama3相比LLama2的改进

  • 全面采用GQA机制(覆盖8B/70B所有版本),推理速度提升30%
  • ​128K超大规模词汇表​(LLama1/2为32K),压缩率提升15%,支持30+语言
  • 引入动态掩码技术,确保8K上下文窗口的跨文档处理安全性

Gemini

实际上就是把text、audio、vision全部tokenizer,再过transformer的思路,以下来自于Gemini: A Family of Highly Capable Multimodal Models,
在这里插入图片描述

Qwen2.5的改进

  • RoPE面临“外推问题”,Qwen2.5使用ABF(Adjustable Base Frequency)技术调整RoPE中的基频(base frequency),即旋转角度的底数,来增强模型在长上下文中的表现。具体来说,将基频从10000增加到500000,可以缩小RoPE对远端token信息的衰减效应。
  • 另外,Qwen2.5使用两个关键策略:YARN和DCA(Dual Chunk Attention)解决长序列在推理时遇到的困难。在处理长上下文问题时,YARN(Yet Another RoPE eXtension)和DCA(Dynamic Context Adjustment)是两种重要的技术,它们各自采用不同的方法来提高大型语言模型(LLM)在长文本处理中的性能。
  • YARN采用“按部分”插值策略,在嵌入空间的不同维度上进行操作,并引入温度因子来调整长输入的注意力分布。这种方法使得模型在处理长文本时能够保持较高的性能。DCA(Dynamic Context Adjustment)是一种动态调整上下文的方法,旨在进一步优化模型在处理长文本时的表现。DCA结合了自回归技术和位置信息,通过动态生成上下文表示来增强模型对长文本的理解能力。这使得模型在面对复杂任务时能够保持较高的性能。
<think> 首先,用户的问题是关于使用LLaMA-Factory对Qwen v2.5进行微调训练的方法。用户指定了参考站内引用,这些引用提供了相关信息。我需要基于这些引用系统级指令来回答问题。 回顾系统级指令: - 所有行内数学表达式必须使用$...$格式。 - 独立公式必须使用$$...$$格式并单独成段。 - LaTeX语法正确。 - 使用中文回答。 - 生成相关问题。 - 回答中引用的段落末尾自然地添加引用标识。 引用内容: - [^1]: 命令启动微调脚本。 - [^2]: 模型下载、数据集准备、训练、验证等笔记。 - [^3]: 使用WebUI进行训练,包括启动WebUI、步骤配置。 - [^4]: 环境安装、数据集制作等。 用户上一次的问题是在之前的对话中,但在这个上下文中,只有当前的用户查询。查询是:"我想获取使用Llama Factory对Qwen v2.5进行微调训练的方法 请问Llama Factory对Qwen v2.5进行微调训练的使用方法"。所以,我需要直接回答这个。 响应结构: - 回答应该结构清晰,帮助用户逐步解决问题。 - 基于引用,提供微调训练的方法。 - 引用相关部分并添加引用标识。 - 生成相关问题。 关键步骤(从引用综合): 1. **环境准备**:安装LLaMA-Factory依赖。 2. **模型下载**:获取Qwen2.5模型(如7B或VL版本)。 3. **数据集准备**:准备微调数据,遵循特定格式(如JSON)。 4. **启动训练**:使用命令行或WebUI。 - 命令行方式:如`llamafactory-cli train`。 - WebUI方式:可视化界面操作。 5. **训练监控导出**:监控训练过程,导出模型。 6. **推理环境**:注意隔离推理环境。 基于引用[^1]:命令行启动微调脚本。 基于引用[^3]:WebUI方式详细步骤。 基于引用[^2][^4]:模型下载、数据集准备环境隔离。 组织回答: - 标题或开头概述。 - 分步说明。 - 使用中文。 - 结尾生成相关问题。 生成相关问题: - 根据主题,生成类似示例中的问题。 数学表达式:在这个主题中,可能不涉及数学,但如果有,比如损失函数,使用$...$格式。例如,如果提到学习率,可以写成$ \alpha $。但这里可能不需要添加数学表达式。 最终响应结构: 1. **引言**:简要介绍方法。 2. **步骤**:逐步分解。 - 步骤1: 环境安装 - 步骤2: 模型下载 - 步骤3: 数据集准备 - 步骤4: 启动训练(命令行WebUI选项) - 步骤5: 监控导出 3. **注意事项**:环境隔离。 4. **相关问题**:生成3-4个相关问题。 </think> 以下是根据您的要求,基于提供的引用信息,整理的LLaMA-Factory对Qwen2.5模型进行微调训练的使用方法。Qwen2.5是通义千问开源的大语言模型系列,包括基础版本(如Qwen2.5-7B)多模态版本(如Qwen2.5-VL)。LLaMA-Factory是一个高效的微调工具库,支持命令行WebUI两种方式进行训练。方法分为几个关键步骤,我会结合引用内容逐步解释,确保真实可靠。引用信息来源于共享文档。 ### 1. 环境准备 在开始前,需设置微调环境。建议使用Conda或虚拟环境隔离依赖,避免版本冲突。 - **安装LLaMA-Factory**:克隆仓库并安装依赖。引用[4]提到: ```bash git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory pip install -e ".[torch,metrics]" # 安装核心依赖,包括PyTorch评估工具 ``` 确保Python版本兼容(推荐Python 3.10+)。 - **推理环境隔离**:如果后续需部署推理,需单独创建环境(如使用Conda)。引用[4]强调微调与推理环境分开,例如: ```bash conda create -n qwen_inference python=3.11 -y pip install -r requirements.txt # 参考Qwen文档安装推理依赖 ``` 这防止库冲突导致失败[^4]。 ### 2. 模型下载 下载Qwen2.5预训练模型权重。支持Hugging Face或ModelScope平台。 - **方式选择**: - Hugging Face下载:使用`transformers`库直接加载(需API密钥)。 - ModelScope下载:适合国内用户,速度更快。引用[2]描述了基本步骤: 1. 访问ModelScope页面(如https://modelscope.cn/models/Qwen/Qwen2.5-7B)。 2. 使用代码下载:`from modelscope import snapshot_download; model_dir = snapshot_download('Qwen/Qwen2.5-7B')`。 - **注意事项**:确保模型存放路径正确(如`~/models/Qwen2.5-7B`),后续训练脚本需引用该路径[^2]。 ### 3. 数据集准备 微调需要自定义数据集,格式需符合LLaMA-Factory要求。通常使用JSON格式的文件。 - **数据集结构**:引用[3][4]指出,数据集应为键值对形式,例如对话数据: ```json [ {"instruction": "解释牛顿第二定律", "input": "", "output": "$F = ma$,其中$F$是力,$m$是质量,$a$是加速度。"}, {"instruction": "翻译句子", "input": "Hello, world!", "output": "你好,世界!"} ] ``` 保存为`data/Qwen25_sft.json`(文件名可自定义)。 - **关键点**: - 支持监督微调(SFT)、指令微调等任务。 - 数据集路径需在训练脚本中指定(如`data/`目录下)[^3][^4]。 ### 4. 启动微调训练 LLaMA-Factory提供两种方式:命令行脚本(快速高效)WebUI(可视化操作)。选择其一即可。 #### 方式一:命令行脚本(适合批量操作) 引用[1]给出了基础命令: ```bash llamafactory-cli train examples/train_qlora/qwen_lora_sft_bitsandbytes.yaml ``` - **参数说明**: - `train`: 训练命令。 - `qwen_lora_sft_bitsandbytes.yaml`: 配置文件路径,指定模型、数据集训练参数(如Qwen2.5-7B版本)。 - 可自定义YAML文件,例如修改`model_name_or_path`为模型路径、`dataset_path`为数据集路径。 - **示例YAML配置**: ```yaml model_name_or_path: "Qwen/Qwen2.5-7B" # 模型名称或本地路径 dataset_path: "data/Qwen25_sft.json" # 数据集文件 output_dir: "output/qwen_finetuned" # 输出目录 quantization: bitsandbytes # 量化方法,减少GPU占用 batch_size: 8 # 批大小,根据GPU调整 learning_rate: 2e-5 # 学习率$ \alpha $ num_train_epochs: 3 # 训练轮次 ``` 运行命令后,日志会输出训练进度[^1]。 #### 方式二:WebUI界面(适合交互式操作) 引用[3]详细描述了WebUI步骤(以Qwen2.5-VL为例,但适用于所有Qwen2.5版本): 1. **启动WebUI**: ```bash python webui.py # 在LLaMA-Factory根目录运行,默认在http://localhost:7860打开 ``` 浏览器访问该URL后,进入训练界面。 2. **配置训练参数**: - **步骤一:选择微调模式**:在“基础模型”输入框选择模型(如`Qwen/Qwen2.5-7B`)。 - **步骤二:选择模型**:在“训练参数”或“训练阶段”中选择`SFT`(Supervised Fine Tuning)。 - **步骤三:上传数据集**:在“数据集目录”选择存放JSON文件的目录(如`data/`),在“数据集文件名”选择文件(如`Qwen25_sft.json`)。 - **步骤四:设置其他参数**:调整`output_dir`(输出路径)、`batch_size`、`learning_rate`等(学习率通常设为$2 \times 10^{-5}$)。 - **步骤五:开始训练**:点击“开始训练”按钮,界面实时显示损失曲线(Loss Curve)日志。 3. **监控训练**:WebUI提供实时指标,如损失函数值(例如交叉熵损失$ \mathcal{L} = -\sum y \log(\hat{y}) $),方便调试[^3]。 ### 5. 训练监控模型导出 - **监控**:命令行训练会输出日志;WebUI可视化Loss曲线。训练完成后,检查输出目录(如`output/qwen_finetuned`)中的权重文件。 - **模型导出**:使用LLaMA-Factory工具导出为Hugging Face格式: ```bash llamafactory-cli export --output_dir output/qwen_finetuned --export_path finetuned_qwen ``` 导出后可直接用于推理或部署。 - **推理隔离**:引用[4]提醒,切换到推理环境避免冲突(如使用vLLM或SGLang工具)[^3][^4]。 ### 注意事项 - **硬件要求**:Qwen2.5-7B微调需至少一张24GB显存的GPU(如A100),使用LoRA或量化可降低需求。 - **版本兼容**:确保LLaMA-FactoryQwen2.5库版本匹配(参考官方文档)。 - **常见问题**: - 数据集格式错误:验证JSON结构(可使用在线验证工具)。 - GPU OOM:减少`batch_size`或启用`bitsandbytes`量化。 - **最佳实践**:首次训练建议用小数据集测试(如100条样本),验证流程后再扩展。 以上步骤基于引用内容整理,覆盖了从环境到导出的全过程。如果您有具体模型版本(如Qwen2.5-7B或Qwen2.5-VL),可进一步定制配置。 ### 相关问题 1. 如何优化Qwen2.5微调的训练效率(例如使用LoRA或量化技术)? 2. Qwen2.5微调后如何进行模型评估测试? 3. LLaMA-Factory支持哪些其他大模型(如LLaMABaichuan)的微调? 4. 微调Qwen2.5-VL多模态模型时如何处理图像数据?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值