在ModelArts Studio基于Llama3-8B模型实现新闻自动分类
- 仅“华东二”区域支持使用ModelArts Studio大模型即服务平台(MaaS)。
- MaaS是白名单功能,如果有试用需求,请先申请权限。
应用场景
在数字化时代,新闻的生成与传播速度不断刷新记录。在ModelArts Studio大模型即服务平台(下面简称为MaaS),使用Llama3-8B模型框架可以实现新闻自动分类,能够高效处理和分类大量新闻内容。
该解决方案可以应用于如下场景:
- 新闻门户网站: 自动将新闻内容归类到相应板块,如科技、体育或国际新闻,以提升用户体验和内容检索效率。
- 社交媒体平台: 对用户分享的新闻链接进行智能分类,帮助用户迅速定位到感兴趣的话题。
- 内容推荐系统: 根据用户的阅读偏好和历史行为,智能推荐相关新闻,增强用户粘性和满意度。
- 新闻分析工具: 为分析师提供自动分类的新闻数据,便于进行市场趋势和热点分析。
方案流程
- 准备数据集:获取新闻数据集,并上传到OBS。
- 创建模型:选择Llama3-8B模型框架,使用推荐权重创建我的模型。
- 调优模型:使用不同的调优参数去训练模型。
- 部署模型服务:将调优后的模型部署成模型服务。
- 使用模型服务:在MaaS体验模型服务,测试推理结果。
- 结果分析:分析模型的调优结果和推理结果,对比新闻分类效果。
方案优势
- 高准确性:利用LLM的强大语义理解能力,系统能够准确识别新闻内容的主题和关键词,实现高准确率的自动分类。
- 快速响应:系统能够实时处理新闻内容,快速完成分类,满足新闻时效性的要求。
- 可扩展性:随着模型的不断训练和优化,系统能够适应不断变化的新闻内容和分类需求。
- 降低人力成本:减少人工分类的工作量,降低人力成本,提高工作效率。
操作步骤
- 准备数据集。获取新闻数据集,并上传到OBS。
- 下载新闻数据集。
本文原始数据集来源:https://github.com/aceimnorstuvwxz/toutiao-text-classfication-dataset
本文实验用数据集基于原始数据集处理而来,进行了简单的采样、清晰和prompt工程。
实验数据集获取地址:https://maas-operations.obs.myhuaweicloud.com/Sample-Dataset/maas_demo_news.jsonl
该实验数据集的总数据量5281条,随机分为训练集5120条和测试集161条。
实验数据集文件“maas_demo_news.jsonl”的内容格式如下。{"conversation_id": 1, "chat": {"turn_1": {"Human":"text","MOSS":"text"},"turn_2": {"Human":"text","MOSS":"text"}}}
“conversation_id”是样本编号,“chat”后面是多轮对话的内容,“turn_n”表示是第n次对话,每次对话都有输入(对应Human角色)和输出(对应MOSS角色)。其中Human和MOSS仅用于角色区分,模型训练的内容只有text指代的文本。
- 将jsonl格式的数据集文件上传到“华东二”区域的OBS桶中,创建OBS桶和上传文件的操作指导请参见OBS控制台快速入门。本文以“/maas-test/news/maas_demo_news.jsonl”OBS路径为例。
- 下载新闻数据集。
- 进入ModelArts Studio大模型即服务平台。
- 登录ModelArts管理控制台。
- 在左侧导航栏中,选择“ModelArts Studio”进入ModelArts Studio大模型即服务平台。
- 创建模型。选择Llama3-8B模型框架,使用推荐权重创建我的模型。
- 在ModelArts Studio左侧导航栏中,选择“模型广场”进入模型广场。
- 在模型广场搜索“Llama3-8B”,单击“立即使用”进入模型详情页。
- 在模型详情页,单击“创建模型”弹出创建模型页面。
- 在创建模型页面,配置参数。
图2 创建模型
表1 创建模型 参数
说明
取值样例
来源模型
当从“模型广场”进入创建模型页面时,此处默认呈现选择的模型。
Llama3-8B
模型名称
自定义模型名称。
Llama3-8B_template
描述
模型简介。
-
权重设置与词表
默认选择“使用推荐权重”,支持选择“自定义权重”。
使用平台推荐的权重文件,可提高模型的训练、压缩、部署和调优等服务的使用效率。
权重文件指的是模型的参数集合。
使用推荐权重
- 参数配置完成后,单击“创建”,创建自定义模型。
- 在模型列表,单击模型名称可以进入详情页查看模型详细信息和任务。
- 调优模型,使用6种不同的调优参数去训练模型。
- 模型创建成功后,在我的模型列表,单击操作列的“更多 > 调优”,进入创建调优作业页面。
- 在创建调优作业页面,配置参数。
由于需要分析模型调优效果,需要创建多个调优任务,不同调优任务的参数值配置请参见表2和表3。
表2 创建调优任务 参数
说明
取值样例
任务设置
任务名称
自定义调优任务名称。
参见表3
描述
调优任务简介。
-
模型设置
模型来源
当从“我的模型”列表进入创建调优作业页面时,此处默认呈现选择的模型。
Llama3-8B_template
选择调优类型
- 全参微调:直接在模型上训练,影响模型全量参数的微调训练,效果较好,收敛速度较慢,训练时间较长。
- LoRA微调:冻结原模型,通过往模型中加入额外的网络层,并只训练这些新增的网络层参数,效果接近或略差于全参训练,收敛速度快,训练时间短。
参见表3
调优后的模型名称
设置调优后产生的新模型的名称。
参见表3
数据设置
添加数据集
选择存放训练数据集的OBS路径,必须选择到1上传的jsonl文件。
/maas-test/news/maas_demo_news.jsonl
调优后模型权重保存路径
选择存放调优后的模型权重文件的OBS路径。
说明:权重文件要存放在空文件夹中,否则会覆盖原有文件。
/maas-test/news/out
超参设置
迭代步数/Iterations
设置模型参数/权重更新的次数。在调优过程中,每一个Iterations会消耗32条训练数据。
参见表3
学习率/learning_rate
设置每个迭代步数(iteration)模型参数/权重更新的速率。学习率设置得过高会导致模型难以收敛,过低则会导致模型收敛速度过慢。
参见表3
资源设置
资源池类型
资源池分为公共资源池与专属资源池。
- 公共资源池供所有租户共享使用。
- 专属资源池需单独创建,不与其他租户共享。
公共资源池
实例规格
选择实例规格,规格中描述了服务器类型、型号等信息,仅显示模型支持的资源
xxx
实例数
设置实例数。
1
更多选项
永久保存日志
选择是否打开“永久保存日志”开关。
关闭
事件通知
选择是否打开“事件通知”开关。
关闭
自动停止
当使用付费资源时,可以选择是否打开“自动停止”开关。
关闭
表3 多个调优任务的参数配置 序号
任务名称
选择调优类型
调优后的模型名称
迭代步数/Iterations
学习率/learning_rate
1
job-lora-01
LoRA微调
Llama3-8B_01-lora
160
3.00E-05
2
job-lora-02
LoRA微调
Llama3-8B_02-lora
480
3.00E-05
3
job-lora-03
LoRA微调
Llama3-8B_03-lora
800
3.00E-04
4
job-sft-01
全参微调
Llama3-8B_01-sft
160
3.00E-05
5
job-sft-02
全参微调
Llama3-8B_02-sft
800
3.00E-05
6
job-sft-03
全参微调
Llama3-8B_03-sft
160
3.00E-06
- 参数配置完成后,单击“提交”,创建调优任务。
在任务列表,当模型“状态”变成“已完成”时,表示模型调优完成。
- 部署模型服务。将原始模型“Llama3-8B_template”和调优后获得的6种模型都部署成模型服务。
- 在ModelArts Studio左侧导航栏中,选择“模型部署”进入服务列表。
- 单击“部署模型服务”进入部署页面,完成创建配置。
图4 资源设置
表4 部署模型服务 参数
说明
取值样例
服务设置
服务名称
自定义模型服务的名称。
参见表5
描述
部署模型服务的简介。
-
模型设置
部署模型
单击“选择模型”,从“我的模型”列表中选择需要部署的模型。
参见表5
资源设置
资源池类型
资源池分为公共资源池与专属资源池。
- 公共资源池供所有租户共享使用。
- 专属资源池需单独创建,不与其他租户共享。
公共资源池
实例规格
选择实例规格,规格中描述了服务器类型、型号等信息。
xxx
流量限制(QPS)
设置待部署模型的流量限制QPS。
3
实例数
设置服务器个数。
推荐实例数 = 流量限制 ÷ 推荐的单实例流量限制
1
更多选项
事件通知
选择是否打开“事件通知”开关。
关闭
自动停止
当使用付费资源时,可以选择是否打开“自动停止”开关。
关闭
- 参数配置完成后,单击“提交”,创建部署任务。
在任务列表,当模型“状态”变成“运行中”时,表示模型部署完成。
- 使用模型服务:在MaaS体验部署完成的7个模型服务,测试推理结果。
- 在ModelArts Studio左侧导航栏中,选择“模型体验”进入体验页面。
- 在模型体验页面,单击“请选择服务”或“立即选择”,在模型列表中选择模型服务,单击“确定”。
图5 选择模型服务
- 在参数设置页面,拖动或直接输入数值配置推理参数。单击“恢复默认”可以将参数值调回默认值。
图6 设置推理参数
表6 参数设置 参数
说明
取值样例
温度/Temperature
设置推理温度。
- 数值较高,输出结果更加随机。
- 数值较低,输出结果更加集中和确定。
1
核采样/top_p
设置推理核采样。调整输出文本的多样性,数值越大,生成文本的多样性就越高。
1
top_k
选择在模型的输出结果中选择概率最高的前K个结果。
20
- 在对话框中输入问题,查看返回结果。
输入的问题需要添加如下prompt,其中“{title}”要换成待判断的新闻标题,“{key_word}”要换成待判断的新闻关键词。
你是一位资深的新闻从业者,现在需要依据新闻标题和关键词对新闻进行分类。接下来你会收到<标题>和<关键词>,给出的分类结果需要严格按照以下要求: 1.使用json格式输出{"分类1":"中文标签","分类2":"英文标签"} 2.中文标签共15个,可选标签如下:民生、文化、娱乐、体育、财经、房产、汽车、教育、科技、旅游、国际、证券、农业、电竞等 3.英文标签共15个,可选标签如下:news_story、news_culture、news_entertainment、news_sports、news_finance、news_house、news_car、news_edu、news_tech、news_military、news_travel、news_world、stock、news_agriculture、news_game 示例: <标题>:布达拉宫夜景,有缘人才能看见!太美了! <关键词>:夜景,布达拉宫 <输出>:{"分类1":"旅游","分类2":"news_travel"} 现在请你判断以下新闻: <标题>:{title} <关键词>:{key_word} <输出>:
prompt需要满足如下要求:
- 设定合适的身份。
- 需求描述清晰:完整的上下文、任务内容要干什么和不要干什么、合理的符合标识。
- 指定输出结构。
- 给出一个示例。
返回结果如图7所示。
- 结果分析:分析模型的调优结果和推理结果。
推理结果的评分标准:
- 输出结构满足{"分类1":"xxx","分类2":"xxx"},则格式正确,得1分。
- "分类1"和"分类2"的内容与标签相同,得1分。
- 从模型调优任务的日志中获取最后一个迭代的loss值,作为终止loss。
通过计算测试集161条数据的平均得分,作为最终得分。
表7 模型服务的分析结果 序号
服务名称
选择调优类型
迭代步数/Iterations
学习率/learning_rate
格式正确得分
终止loss
最终得分
1
service--lora-01
LoRA微调
160
3.00E-05
161
0.0235
1.9005
2
service--lora-02
LoRA微调
480
3.00E-05
161
0.0338
1.907
3
service--lora-03
LoRA微调
800
3.00E-04
161
3.20E-05
1.9005
4
service--sft-01
全参微调
160
3.00E-05
0
0.0255
0
5
service--sft-02
全参微调
800
3.00E-05
1
1.70E-04
0.0124
6
service--sft-03
全参微调
160
3.00E-06
161
0.0235
1.8945
7
service-00
-
-
-
50
-
1.02
结果分析:
- 新闻自动分类是一个简单的分类任务,5281条数据的数据量也较小,因此LoRA微调和全参微调都能取得较好的调优结果。
- LoRA微调由于可调参数少,所以学习率设置比全参微调大。
- 全参微调用相同的“3.00E-05”学习率就出现了过拟合的现象。
由结果可知第1个和第3个模型服务的训推效果较好。