实战:体验LLamaFactory微调Qwen构建文旅大模型的过程

 

本文基于LLamaFactory、Qwen2-VL多模态大模进行微调,形成垂直领域大模型(如果您对大模型微调感兴趣,不限于Qwen2-VL都可以通过本文进行学习了解)。

一、应用概述

LLaMA Factory(https://github.com/hiyouga/LLaMA-Factory) 是一款开源低代码大模型微调框架,集成了业界最广泛使用的微调技术,支持通过 Web UI 界面零代码微调大模型,目前已经成为开源社区内最受欢迎的微调框架之一,GitHub 星标超过 3 万。

二、使用场景

LLama Factory 由于其低代码特性,可以快速部署模型微调环境并进行测试,适用于各种场景,包括但不限于:

  1. LLaMA-Factory 微调基础 LLaMA 模型,提升模型在特定任务上的表现。

三、操作步骤

(一)部署前准备工作

本次部署使用到Docker和Kubernetes,请准备好Docker环境,并确保本地有可用的Kubernestes客户端工具kubectl。         
Docker环境安装请参考: 安装Docker(https://docs.alayanew.com/docs/documents/tool/docker)          
kubectl安装请参考:快速开始(https://docs.alayanew.com/docs/documents/useGuide/Vcluster/start)

(二)开通集群

(1)资源最低要求    

图片

点击图片可查看完整电子表格

(2)申请开通

开通集群请参考:开通弹性容器集群(https://docs.alayanew.com/docs/documents/quickStart/OpenElasticContainerCluster)

(三)镜像准备

包括以下步骤:

用户名密码:查看开通镜像仓库时的通知短信          

镜像仓库地:参考镜像仓库的使用(https://docs.alayanew.com/docs/documents/storage/mirrorRepository/useMirrorRepository#use_image_repo)          
镜像仓库地址 :由 镜像仓库域名/项目 组成

  1. LLaMA Factory(https://github.com/hiyouga/LLaMA-Factory.git)项目源码,我们将使用0.9.1版本。

Shell                  
git clone -b v0.9.1 --depth=1 https://github.com/hiyouga/LLaMA-Factory.git

Shell                  
docker build -t 镜像仓库地址/llama-factory:0.9.1 -f docker/docker-cuda/Dockerfile --build-arg PIP_INDEX=https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple .        

命令说明:

  1. docker build

这是 Docker 的一个命令,用于从 Dockerfile 构建一个新的镜像。

  1. -t 镜像仓库地址/llama-factory:0.9.1

-t 参数用于指定构建的镜像的名称和标签。

镜像仓库地址 是可选的,通常用于指定镜像将被推送到的远程仓库地址(例如 Docker Hub 或私有仓库)。

llama-factory:0.9.1 是镜像的名称和版本标签,表示构建的镜像名为 llama-factory,版本为 0.9.1。

  1. -f docker/docker-cuda/Dockerfile

-f 参数用于指定 Dockerfile 的路径。

在这个命令中,Dockerfile 位于当前目录下的 docker/docker-cuda 文件夹中。

  1. --build-arg PIP_INDEX=https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple

--build-arg 用于在构建过程中传递构建参数。

PIP_INDEX 是一个自定义参数,通常在 Dockerfile 中通过 ARG 指令接收。

在这里,PIP_INDEX 被设置为清华大学的 PyPI 镜像源地址(https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple),这可能是为了在构建过程中加速 Python 包的安装。

  1. .(当前目录)

docker build 命令的最后一个参数是上下文路径(. 表示当前目录)。Docker 会将当前目录及其子目录中的文件作为构建上下文发送到 Docker 守护进程,用于构建镜像。

执行结果如下(一共22G,时间有点长,提前预留足够的本地磁盘):    

图片

图片

图片

  1. 登录镜像仓库,推送镜像

Shell                  
docker login 镜像仓库域名 -u 用户名 -p 密码                  
docker push 镜像仓库地址/llama-factory:0.9.1

示例如下:    

Bash                  
docker login registry.hd-02.alayanew.com:8443 -u zhangfeng -p b8Ya69ZF66                  
Docker push registry.hd-02.alayanew.com:8443/alayanew-cb704eeb-78c9-4c91-af5b-2df031933b17/llama-factory:0.9.1

注意:

请将 镜像仓库地址, 域名, 用户名, 密码 替换为自己的,镜像仓库用户名及密码系统会以短信形式发送到注册账号的手机。

当执行完毕后,请检查镜像仓库中是有镜像文件llama-factory:0.9.1存在。         
关于如何查看镜像仓库,请参考:使用Harbor管理镜像资源(https://docs.alayanew.com/docs/documents/storage/mirrorRepository/image)

(四)脚本准备

请下载脚本文件压缩包(https://docs.alayanew.com/assets/files/llama_factory-06f4a54c3240341bdb8098929eaf2be7.zip),并解压到本地目录。在前面下载并解压的模板脚本文件中,对所有文件进行变量替换。

需要替换的变量有:

图片

点击图片可查看完整电子表格    

(五)secret准备

secret文件是用于保存敏感信息的,如对象存储的密钥等。本次部署中需要对harbor registry的用户名和密码进行加密,并保存到secret文件中。

  • 当执行过前面的步骤后,请将harbor-config.json中的内容做base64编码。linux中可以使用base64命令进行编码。或者在线网站也可以进行编码。可以参考:https://tool.lu/encdec/
  • 将编码后的内容保存到harbor-secret.yaml的.dockerconfigjson字段。例如:

harbor-secret.yaml

YAML                  
apiVersion: v1                  
kind: Secret                  
metadata:                  
  name: alaya-harbor-secret                  
type: kubernetes.io/dockerconfigjson                  
data:                  
  .dockerconfigjson:

(六)部署应用

包含以下步骤:

1.执行部署脚本

请在脚本目录下执行以下命令:

Shell                  
kubectl apply -k .        

确保执行过程中没有错误。请注意:其中ServiceExporter的输出需要记录,后面将以这个url访问LLaMA Factory的Web UI。

2.检查部署结果

请执行以下命令:

Shell                  
kubectl get pods -n ns-lf

如果出现以下输出,说明部署成功:

Plain Text                  
NAME  READY   STATUS    RESTARTS   AGE                  
llamafactory-6f45d5c9d6-hvq59   1/1     Running   0          5h10m

其中llamafactory-6f45d5c9d6-hvq59是pod的名字,每次部署都会产生一个新的pod名字,后面的命令都需要使用这个名字。

3.进入pod,并进行初始化

请执行以下命令:

Shell                  
kubectl exec -it llamafactory-6f45d5c9d6-hvq59 -n ns-lf -- /bin/bash

注意

请使用实际的pod名字替换上面的llamafactory-6f45d5c9d6-hvq59。进入后,执行以下命令以确认llamafactory安装成功:

llamafactory-cli version          
         
结果示例:          
----------------------------------------------------------          
| Welcome to LLaMA Factory, version 0.9.1                |          
|                                                        |          
| Project page: https://github.com/hiyouga/LLaMA-Factory |          
----------------------------------------------------------    

安装modelscope包,本教程中使用的模型从modelscope下载,请确保正确安装了modelscope:

Shell                  
pip install modelscope

(七)数据准备

使用以下命令准备数据:

Shell                  
cd /app   #确保在/app目录下                  
wget https://atp-modelzoo-sh.oss-cn-shanghai.aliyuncs.com/release/llama_factory/Qwen2-VL-History.zip                  
unzip Qwen2-VL-History.zip -d data

(八)开始使用

进入/app/目录,执行以下命令:

Shell                  
USE_MODELSCOPE_HUB=1 llamafactory-cli webui

命令运行成功后,就可以以前文提到的ServiceExporter的url访问LLaMA Factory的Web UI。

微调过程:

1.加载微调数据并设置参数    

① 打开UI,看到以下页面并按照下图设置参数:

图片

②选择"Train"标签页, 选择数据集"train" 具体请参照下图:

图片

 当点击"预览数据集"按钮后,可以看到数据集的预览。

图片

 ③ 如下图设置参数:    

图片

2.开始微调

按下图设置输出目录,点击"预览命令"按钮,可以看到微调命令。如果想要在命令行下运行,可以复制命令到终端运行。

图片

Plain Text                  
llamafactory-cli train \                  
    --stage sft \                  
    --do_train True \                  
    --model_name_or_path qwen/Qwen2-VL-2B-Instruct \                  
    --preprocessing_num_workers 16 \                  
    --finetuning_type full \                  
    --template qwen2_vl \                  
    --flash_attn auto \                  
    --dataset_dir data \                  
    --dataset train \                  
    --cutoff_len 1024 \                  
    --learning_rate 0.0001 \                  
    --num_train_epochs 10.0 \                  
    --max_samples 100000 \                  
    --per_device_train_batch_size 2 \                  
    --gradient_accumulation_steps 2 \                  
    --lr_scheduler_type cosine \                  
    --max_grad_norm 1.0 \                  
    --logging_steps 5 \                  
    --save_steps 1000 \                  
    --warmup_steps 0 \                  
    --packing False \                  
    --report_to none \                  
    --output_dir saves/Qwen2-VL-2B-Instruct/full/qwen2vl_ft \                  
    --pure_bf16 True \                  
    --plot_loss True \                  
    --ddp_timeout 180000000 \                  
    --optim adamw_torch        

点击“开始”按钮,开始微调。页面最下方会显示微调过程的日志。同时,也将呈现微调的进度以及loss曲线。

微调需要一定时间,请耐心等待。微调完成后,输出框显示“训练完毕”。

图片

3.加载微调模型及对话

①在对话框的顶部,在检查点路径中选择微调模型的路径。

 ②在"chat"标签页中,点击加载模型按钮,加载微调模型。

图片

 如下图,输入系统角色,上传图片,然后给出问题,系统将给出答案。    

 ③使用测试图片测试图片1或者测试图片2进行测试。         
作为对比,我们使用原生的Qwen2-VL-2B-Instruct模型进行对话。首先卸载模型:

图片

 然后使用原生模型进行对话:

图片

四、总结

本教程介绍了如何在Alaya NeW平台上,使用LLaMA Factory微调Qwen2-VL构建文旅大模型,并使用测试图片进行了测试。用户可以根据自己的需求,选择不同的基模型,以及不同的数据集进行微调,并结合实际业务集成使用。

五、关于license

请按照LLamaFactory的版权要求使用,请参考:https://github.com/hiyouga/LLaMA-Factory/tree/main?tab=Apache-2.0-1-ov-file    

 如何系统的去学习大模型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大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值