当下最容易上手的大模型微调工具是谁?LLamaFactory或是其中之一

近日,国内的一款微调框架发布了自己的论文《LLAMAFACTORY: Unified Efficient Fine-Tuning of 100+ Language Models》,对他们的框架做了系统性的总结。该框架自推出后迅速出圈,现已斩获15.6k的star,逐步成为当下微调的首选工具。

https://arxiv.org/pdf/2403.13372.pdf

模型微调相较于上下文学习来讲,存在比较高的门槛,但又是模型专业化,领域化不可或缺的技术手段。而其复杂性突出表现在这些方面:

1)理论基础,如果说基于大模型写prompt 根据一定范式来构建RAG或者Agent不需要太多机器学习理论知识,然而微调就必须要对这些有理解,比如样本,学习率,logloss等。

2)数据准备,对于普通开发者,高质量的数据是微调成功的关键保证,而如何预处理,清洗,标注这些样本本身就很复杂,更因此诞生了大模型数据工程这样的领域来解决这一问题。

3)基座模型存在分化,虽然当下很多模型都参考llama和huggingface的一些规范,但是仍然都有一些特殊之处,想要微调也需要针对性地去分析和构建相应的策略。

4)超参数优化,微调本身是一个“炼丹”过程,如何能够找到合适的超参数,达到一个最佳性能,是一个重大挑战。

5)AI工程复杂性,涉及到硬件\软件\复杂流程的协同配合以及系统优化,在有限的成本、资源和时间要求下完成模型训练过程。

正是因为这些原因,对于预训练微调,需要一个类似于工厂的工业化手段来降低门槛,提升效率。

因此,行业内出现了很多微调框架,而LLamaFactory(https://github.com/hiyouga/LLaMA-Factory)便是其中之一,从起名上就可以看出它们的目标是成为模型微调的工厂。

它得以流行主要得益于支持当下主流的大模型百川、千问、LLaMA等,不仅集成了大模型预训练、监督微调和强化微调等阶段的主流的微调技术(支持 LoRA 和 QLoRA 等参数高效微调策略),还提供了预训练、指令微调等丰富的数据集,方便参考使用,最重要的是提供了一个无代码的图形界面,大幅降低使用门槛,非开发者也可以方便地完成模型微调。

该框架架构上由四个模块构成:模型加载器、数据工作器和训练器,以及用户界面LlamaBoard。

在根据官方文档安装好LLamaFactory后,可以有三种方式进行操作,WebUI、CLI或者Python。

1.webUI。

CUDA_VISIBLE_DEVICES=0 python src/train_web.py

2.CLI,由于有时候界面限制,可能需要命令行的方式进行微调。如果不知道具体格式,可以在界面上配置好,再复制到命令行中调整使用。

在example目录中有大量的示例可供参考。

examples/``├── lora_single_gpu/``│   ├── pretrain.sh: 进行预训练``│   ├── sft.sh: 进行指令监督微调``│   ├── reward.sh: 进行奖励模型训练``│   ├── ppo.sh: 进行 PPO 训练``│   ├── dpo.sh: 进行 DPO 训练``│   ├── orpo.sh: 进行 ORPO 训练``│   ├── prepare.sh: 保存预处理后的数据集``│   └── predict.sh: 进行批量预测``├── qlora_single_gpu/``│   ├── bitsandbytes.sh: 微调 4/8 比特 BNB 模型``│   ├── gptq.sh: 微调 4/8 比特 GPTQ 模型``│   ├── awq.sh: 微调 4 比特 AWQ 模型``│   └── aqlm.sh: 微调 2 比特 AQLM 模型``├── lora_multi_gpu/``│   ├── single_node.sh: 使用 Accelerate 进行单节点训练``│   └── multi_node.sh: 使用 Accelerate 进行多节点训练``├── full_multi_gpu/``│   ├── single_node.sh: 使用 DeepSpeed 进行单节点训练``│   └── multi_node.sh: 使用 DeepSpeed 进行多节点训练``├── merge_lora/``│   ├── merge.sh: 将 LoRA 权重合并到预训练模型中``│   └── quantize.sh: 使用 AutoGPTQ 量化模型``├── inference/``│   ├── cli_demo.sh: 启动命令行推理接口``│   ├── api_demo.sh: 启动 OpenAI 风格 API``│   ├── web_demo.sh: 启动浏览器推理接口``│   └── evaluate.sh: 在 MMLU 数据集上评测模型``└── extras/`    `├── galore/`    `│   └── sft.sh: 使用 GaLore 训练模型`    `├── loraplus/`    `│   └── sft.sh: 使用 LoRA+ 训练模型`    `├── llama_pro/`    `│   ├── expand.sh: 扩展模型中的层`    `│   └── sft.sh: 训练扩展后的模型`    `└── fsdp_qlora/`        `└── sft.sh: 使用 FSDP 微调量化模型

3)编程方式。

from llmtuner import run_exp``run_exp(dict(`  `stage="sft",`  `do_train=True,`  `model_name_or_path="Qwen/Qwen1.5-0.5B-Chat",`  `dataset="identity,alpaca_gpt4_en,alpaca_gpt4_zh",`  `template="qwen",`  `finetuning_type="lora",`  `lora_target="all",`  `output_dir="test_identity",`  `per_device_train_batch_size=4,`  `gradient_accumulation_steps=4,`  `lr_scheduler_type="cosine",`  `logging_steps=10,`  `save_steps=100,`  `learning_rate=1e-4,`  `num_train_epochs=5.0,`  `max_samples=500,`  `max_grad_norm=1.0,`  `fp16=True,``))

对于用户来讲,准备正确高质量的数据是用好该工具的关键。在使用自定义数据集时需要在 dataset_info.json 文件中按照以下格式提供数据集定义,数据集格式支持两种:alpaca 和 sharegpt,具体可参考其官方文档。

"数据集名称": {`  `"hf_hub_url": "Hugging Face 的数据集仓库地址(若指定,则忽略 script_url 和 file_name)",`  `"ms_hub_url": "ModelScope 的数据集仓库地址(若指定,则忽略 script_url 和 file_name)",`  `"script_url": "包含数据加载脚本的本地文件夹名称(若指定,则忽略 file_name)",`  `"file_name": "该目录下数据集文件的名称(若上述参数未指定,则此项必需)",`  `"file_sha1": "数据集文件的 SHA-1 哈希值(可选,留空不影响训练)",`  `"subset": "数据集子集的名称(可选,默认:None)",`  `"folder": "Hugging Face 仓库的文件夹名称(可选,默认:None)",`  `"ranking": "是否为偏好数据集(可选,默认:False)",`  `"formatting": "数据集格式(可选,默认:alpaca,可以为 alpaca 或 sharegpt)",`  `"columns(可选)": {`    `"prompt": "数据集代表提示词的表头名称(默认:instruction)",`    `"query": "数据集代表请求的表头名称(默认:input)",`    `"response": "数据集代表回答的表头名称(默认:output)",`    `"history": "数据集代表历史对话的表头名称(默认:None)",`    `"messages": "数据集代表消息列表的表头名称(默认:conversations)",`    `"system": "数据集代表系统提示的表头名称(默认:None)",`    `"tools": "数据集代表工具描述的表头名称(默认:None)"`  `},`  `"tags(可选,用于 sharegpt 格式)": {`    `"role_tag": "消息中代表发送者身份的键名(默认:from)",`    `"content_tag": "消息中代表文本内容的键名(默认:value)",`    `"user_tag": "消息中代表用户的 role_tag(默认:human)",`    `"assistant_tag": "消息中代表助手的 role_tag(默认:gpt)",`    `"observation_tag": "消息中代表工具返回结果的 role_tag(默认:observation)",`    `"function_tag": "消息中代表工具调用的 role_tag(默认:function_call)",`    `"system_tag": "消息中代表系统提示的 role_tag(默认:system,会覆盖 system 列)"`  `}``}

经过以上的步骤,剩下的就是需要耐心的调参和评估了。下面是一个利用webui进行微调操作示例。

小结

相较于其他方法,目前,LlamaFactory可以说是当下最简单快捷又功能强大的一种微调工具,值得大家学习使用。

大模型岗位需求

大模型时代,企业对人才的需求变了,AIGC相关岗位人才难求,薪资持续走高,AI运营薪资平均值约18457元,AI工程师薪资平均值约37336元,大模型算法薪资平均值约39607元。
在这里插入图片描述

掌握大模型技术你还能拥有更多可能性

• 成为一名全栈大模型工程师,包括Prompt,LangChain,LoRA等技术开发、运营、产品等方向全栈工程;

• 能够拥有模型二次训练和微调能力,带领大家完成智能对话、文生图等热门应用;

• 薪资上浮10%-20%,覆盖更多高薪岗位,这是一个高需求、高待遇的热门方向和领域;

• 更优质的项目可以为未来创新创业提供基石。

可能大家都想学习AI大模型技术,也想通过这项技能真正达到升职加薪,就业或是副业的目的,但是不知道该如何开始学习,因为网上的资料太多太杂乱了,如果不能系统的学习就相当于是白学。为了让大家少走弯路,少碰壁,这里我直接把全套AI技术和大模型入门资料、操作变现玩法都打包整理好,希望能够真正帮助到大家。

-END-


👉AI大模型学习路线汇总👈

大模型学习路线图,整体分为7个大的阶段:(全套教程文末领取哈)

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

👉大模型实战案例👈

光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

在这里插入图片描述

👉大模型视频和PDF合集👈

观看零基础学习书籍和视频,看书籍和视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
在这里插入图片描述
在这里插入图片描述

👉学会后的收获:👈

• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

👉获取方式:

😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值