带你读《阿里云产品五月刊》——一、PAI+Llama Factory低代码微调Llama3模型

简介: PAI+Llama Factory低代码微调Llama3模型


LLaMA Factory是一款开源低代码大模型微调框架,集成了业界广泛使用的微调技术,支持通过Web UI界面零代码微调大模型。本教程将基于Meta AI开源的LlaMA 3 8B模型,介绍如何使用PAI平台及LLaMA Factory训练框架完成模型的中文化与角色扮演微调和评估。

准备环境和资源

创建工作空间,具体操作,请参见创建工作空间

创建DSW实例,其中关键参数配置如下。具体操作,请参见创建DSW实例

实例规格选择:建议使用24 GB显存的A10(ecs.gn7i-c8g1.2xlarge)或更高配置。

镜像选择:建议使用Python3.9及以上版本。本方案在官方镜像中选择modelscope:1.14.0-pytorch2.1.2-gpu-py310-cu121-ubuntu22.04。

 

步骤一:安装LLaMA Factory

① 进入DSW开发环境。

a. 登录PAI控制台

b. 在页面左上方,选择DSW实例所在的地域。

c. 在左侧导航栏单击工作空间列表,在工作空间列表页面中单击默认工作空间名称,进入对应工作空间内。

 

 

d. 在左侧导航栏,选择模型开发与训练>交互式建模(DSW)。

e. 单击需要打开的实例操作列下的打开,进入DSW实例开发环境。

② 在Launcher页面中,单击快速开始区域Notebook下的Python3。

③ 在Notebook中执行以下代码,拉取LLaMA-Factory项目到DSW实例。

 

!git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git


④ 安装LLaMA-Factory依赖环境。

 

!pip uninstall -y vllm
!pip install llamafactory[metrics]==0.7.1


⑤ 运行如下命令,如果显示llamafactory-cli的版本,则表示安装成功。

 

!llamafactory-cli version
[2024-05-08 10:25:22,857] [INFO] [real_accelerator.py:161:get_accelerator] Setting ds_accelerator to cuda (auto detect)
Welcome to LLaMA Factory, version 0.7.1.dev0


步骤二:下载数据集

LLaMA-Factory项目内置了丰富的数据集,统一存储于data目录下。您可以跳过本步骤,直接使用内置数据集。您也可以准备自定义数据集,将数据处理为框架特定的格式,放在data下,并且修改dataset_info.json文件。

 

在本教程中,PAI提供了一份多轮对话数据集,执行以下命令下载数据。

 

%cd LLaMA-Factory
!wget https://atp-modelzoo-sh.oss-cn-shanghai.aliyuncs.com/release/tutorials/llama_factory/data.zip
!mv data rawdata && unzip data.zip -d data


数据集中的样本为多轮对话形式,每轮对话都由一条用户指令和一条模型回答组成,微调过程中模型不断学习样本中的回答风格,从而达到中文化与角色扮演的目的。该数据集分为训练集和验证集两个文件,其中训练集共包含320组多轮对话样本,验证集共包含30组多轮对话样本,数据样例如下所示:

 

[
{
    "conversations": [
      {
        "from": "human",
        "value": "模仿西游记的孙悟空的语气和我聊天。如果你把水冻住,你会得到什么?"
      },
      {
        "from": "gpt",
        "value": "哈哈,这问题还难倒俺老孙吗?把水冻住就是变成冰啦!不过若是在取经的路上用得着这冰来做啥,比如过火焰山时,那可就是解渴消暑的好东西了!你觉得呢?还有没有更有趣的问题让俺老孙来解答?"
      },
      {
        "from": "human",
        "value": "那怎么做才可以把水冻住"
      },
      {
        "from": "gpt",
        "value": "哈哈,对俺老孙来说,这可是轻而易举的事情!只需将水放在凉快的地方,或者使用法力,一吹仙气,水便能迅速结冰啦!当然,在你的世界里,把水放进冰箱的冷冻室里等一阵子,水就会变成冰块了。要是嫌慢,可以尝试用点干冰或液氮什么的,不过得小心使用哈!毕竟不像俺老孙有抗寒法力。"
      }
    ]
}
]


步骤三:模型微调

启动Web UI

① 运行如下命令启动Web UI。

 

其中,USE_MODELSCOPE_HUB设为1,表示模型来源是ModelScope。使用HuggingFace模型可能会有网络问题。

 

!export USE_MODELSCOPE_HUB=1 && \
llamafactory-cli webui


 

② 单击返回的URL地址,进入Web UI界面。

 

由于http://0.0.0.0:7860为内网访问地址,仅支持在当前的DSW实例内部通过单击链接来访问WebUI页面,不支持通过外部浏览器直接访问。

 

/mnt/workspace/LLaMA-Factory
[2024-05-08 21:25:45,224] [INFO] [real_accelerator.py:161:get_accelerator] Setting ds_accelerator to cuda (auto detect)
Running on local URL:  http://0.0.0.0:7860
 
To create a public link, set `share=True` in `launch()`.


 

配置参数

进入Web UI后,关键参数配置如下,其他参数保持默认即可。

image.png

 

image.png

 

区域

参数

建议取值

说明

语言

zh

模型名称

LLaMA3-8B-Chat

微调方法

lora

使用LoRA轻量化微调方法能在很大程度上节约显存。

数据集

train

选择数据集后,可以单击预览数据集查看数据集详情。

学习率

1e-4

有利于模型拟合。

计算类型

bf16

如果显卡为V100,建议计算类型选择fp16;如果为A10,建议选择bf16。

梯度累计

2

有利于模型拟合。

LoRA+学习率比例

16

相比LoRA,LoRA+续写效果更好。

LoRA作用模块

all

all表示将LoRA层挂载到模型的所有线性层上,提高拟合效果。

启动微调

image.png


 

① 将输出目录修改为train_llama3,训练后的LoRA权重将会保存在此目录中。

 

② 单击预览命令,可展示所有已配置的参数。

 

③ 如果您希望通过代码进行微调,可以复制这段命令,在命令行运行。

 

④ 单击开始,启动模型微调。

 

启动微调后需要等待大约20分钟,待模型下载完毕后,可在界面观察到训练进度和损失曲线。当显示训练完毕时,代表模型微调成功。

image.png

 

步骤四:模型评估

image.png

 

① 模型微调完成后,单击页面顶部的刷新适配器,然后单击适配器路径,选择下拉列表中的train_llama3,在模型启动时即可加载微调结果。

 

② 在Evaluate&Predict页签中,数据集选择eval(验证集)评估模型,并将输出目录修改为eval_llama3,模型评估结果将会保存在该目录中。

 

③ 单击开始,启动模型评估。

 

模型评估大约需要5分钟,评估完成后会在界面上显示验证集的分数。其中,ROUGE分数衡量了模型输出答案(predict)和验证集中的标准答案(label)的相似度,ROUGE分数越高代表模型学习得越好。

image.png

 

步骤五:模型对话

 

① 在Chat页签中,确保适配器路径是train_llama3,单击加载模型,即可在Web UI中和微调模型进行对话。

image.png


 

② 在页面底部的对话框输入想要和模型对话的内容,单击提交,即可发送消息。

 

发送后模型会逐字生成回答,从回答中可以发现模型学习到了数据集中的内容,能够恰当地模仿目标角色的语气进行对话。

image.png

 

③ 单击卸载模型,单击 取消适配器路径,然后单击加载模型,即可与微调前的原始模型聊天。

 

image.png

 

重新向模型发送相同的内容,发现原始模型无法模仿目标角色的语气生成中文回答。

 

image.png

 

 

相关文档

 

更多有关LLaMA Factory的信息,请参见LLaMA Factory

 

您也可以直接打开Notebook案例快速体验本教程,具体操作,请参见LLaMA Factory:微调LLaMA3模型实现角色扮演

目录
相关文章
|
6天前
|
机器学习/深度学习 算法 前端开发
R语言基础机器学习模型:深入探索决策树与随机森林
【9月更文挑战第2天】决策树和随机森林作为R语言中基础且强大的机器学习模型,各有其独特的优势和适用范围。了解并熟练掌握这两种模型,对于数据科学家和机器学习爱好者来说,无疑是一个重要的里程碑。希望本文能够帮助您更好地理解这两种模型,并在实际项目中灵活应用。
|
5天前
|
机器学习/深度学习 数据采集 存储
一文读懂蒙特卡洛算法:从概率模拟到机器学习模型优化的全方位解析
蒙特卡洛方法起源于1945年科学家斯坦尼斯劳·乌拉姆对纸牌游戏中概率问题的思考,与约翰·冯·诺依曼共同奠定了该方法的理论基础。该方法通过模拟大量随机场景来近似复杂问题的解,因命名灵感源自蒙特卡洛赌场。如今,蒙特卡洛方法广泛应用于机器学习领域,尤其在超参数调优、贝叶斯滤波等方面表现出色。通过随机采样超参数空间,蒙特卡洛方法能够高效地找到优质组合,适用于处理高维度、非线性问题。本文通过实例展示了蒙特卡洛方法在估算圆周率π和优化机器学习模型中的应用,并对比了其与网格搜索方法的性能。
64 1
|
7天前
|
API UED 开发者
如何在Uno Platform中轻松实现流畅动画效果——从基础到优化,全方位打造用户友好的动态交互体验!
【8月更文挑战第31天】在开发跨平台应用时,确保用户界面流畅且具吸引力至关重要。Uno Platform 作为多端统一的开发框架,不仅支持跨系统应用开发,还能通过优化实现流畅动画,增强用户体验。本文探讨了Uno Platform中实现流畅动画的多个方面,包括动画基础、性能优化、实践技巧及问题排查,帮助开发者掌握具体优化策略,提升应用质量与用户满意度。通过合理利用故事板、减少布局复杂性、使用硬件加速等技术,结合异步方法与预设缓存技巧,开发者能够创建美观且流畅的动画效果。
26 0
|
7天前
|
开发者 算法 虚拟化
惊爆!Uno Platform 调试与性能分析终极攻略,从工具运用到代码优化,带你攻克开发难题成就完美应用
【8月更文挑战第31天】在 Uno Platform 中,调试可通过 Visual Studio 设置断点和逐步执行代码实现,同时浏览器开发者工具有助于 Web 版本调试。性能分析则利用 Visual Studio 的性能分析器检查 CPU 和内存使用情况,还可通过记录时间戳进行简单分析。优化性能涉及代码逻辑优化、资源管理和用户界面简化,综合利用平台提供的工具和技术,确保应用高效稳定运行。
17 0
|
7天前
|
前端开发 开发者 设计模式
揭秘Uno Platform状态管理之道:INotifyPropertyChanged、依赖注入、MVVM大对决,帮你找到最佳策略!
【8月更文挑战第31天】本文对比分析了 Uno Platform 中的关键状态管理策略,包括内置的 INotifyPropertyChanged、依赖注入及 MVVM 框架。INotifyPropertyChanged 方案简单易用,适合小型项目;依赖注入则更灵活,支持状态共享与持久化,适用于复杂场景;MVVM 框架通过分离视图、视图模型和模型,使状态管理更清晰,适合大型项目。开发者可根据项目需求和技术栈选择合适的状态管理方案,以实现高效管理。
16 0
|
10天前
|
机器学习/深度学习 算法 数据挖掘
8个常见的机器学习算法的计算复杂度总结
8个常见的机器学习算法的计算复杂度总结
8个常见的机器学习算法的计算复杂度总结
|
2天前
|
机器学习/深度学习 数据采集 算法
数据挖掘和机器学习算法
数据挖掘和机器学习算法
|
1月前
|
机器学习/深度学习 存储 人工智能
【数据挖掘】2022年2023届秋招知能科技公司机器学习算法工程师 笔试题
本文是关于2022-2023年知能科技公司机器学习算法工程师岗位的秋招笔试题,包括简答题和编程题,简答题涉及神经网络防止过拟合的方法、ReLU激活函数的使用原因以及条件概率计算,编程题包括路径行走时间计算和两车相向而行相遇时间问题。
57 2
【数据挖掘】2022年2023届秋招知能科技公司机器学习算法工程师 笔试题
|
10天前
|
机器学习/深度学习 算法 数据挖掘
机器学习必知必会10大算法
机器学习必知必会10大算法
|
1月前
|
机器学习/深度学习 数据采集 数据可视化
基于python 机器学习算法的二手房房价可视化和预测系统
文章介绍了一个基于Python机器学习算法的二手房房价可视化和预测系统,涵盖了爬虫数据采集、数据处理分析、机器学习预测以及Flask Web部署等模块。
基于python 机器学习算法的二手房房价可视化和预测系统

热门文章

最新文章

下一篇
DDNS