文档首页/ AI开发平台ModelArts/ 最佳实践/ LLM大语言模型训练推理/ 在ModelArts Studio基于Llama3-8B模型实现新闻自动分类
更新时间:2024-09-12 GMT+08:00
分享

在ModelArts Studio基于Llama3-8B模型实现新闻自动分类

应用场景

在数字化时代,新闻的生成与传播速度不断刷新记录。在ModelArts Studio大模型即服务平台(下面简称为MaaS),使用

Llama3-8B模型框架可以实现新闻自动分类,能够高效处理和分类大量新闻内容。

该解决方案可以应用于如下场景:

  • 新闻门户网站: 自动将新闻内容归类到相应板块,如科技、体育或国际新闻,以提升用户体验和内容检索效率。
  • 社交媒体平台: 对用户分享的新闻链接进行智能分类,帮助用户迅速定位到感兴趣的话题。
  • 内容推荐系统: 根据用户的阅读偏好和历史行为,智能推荐相关新闻,增强用户粘性和满意度。
  • 新闻分析工具: 为分析师提供自动分类的新闻数据,便于进行市场趋势分析和热点追踪。

方案流程

图1 方案实现流程
  1. 准备数据集:获取新闻数据集,并上传到OBS。
  2. 创建模型:选择Llama3-8B模型框架,使用推荐权重创建我的模型。
  3. 调优模型:使用不同的调优参数去训练模型。
  4. 部署模型服务:将调优后的模型部署成模型服务。
  5. 使用模型服务:在MaaS体验模型服务,测试推理结果。
  6. 结果分析:分析模型的调优结果和推理结果,对比新闻分类效果。

方案优势

  • 高准确性:利用LLM的强大语义理解能力,系统能够准确识别新闻内容的主题和关键词,实现高准确率的自动分类。
  • 快速响应:系统能够实时处理新闻内容,快速完成分类,满足新闻时效性的要求。
  • 可扩展性:随着模型的不断训练和优化,系统能够适应不断变化的新闻内容和分类需求。
  • 降低人力成本:减少人工分类的工作量,降低人力成本,提高工作效率。

约束限制

仅“华东二”区域支持使用ModelArts Studio大模型即服务平台(MaaS)。

操作步骤

  1. 准备数据集。获取新闻数据集,并上传到OBS。

    1. 下载新闻数据集。

      本文原始数据集来源: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指代的文本。

    2. 将jsonl格式的数据集文件上传到“华东二”区域的OBS桶中,创建OBS桶和上传文件的操作指导请参见OBS控制台快速入门。本文以“/maas-test/news/maas_demo_news.jsonl”OBS路径为例。

  2. 进入ModelArts Studio大模型即服务平台。

    1. 登录ModelArts管理控制台。
    2. 在左侧导航栏中,选择“ModelArts Studio”进入ModelArts Studio大模型即服务平台。

  3. 创建模型。选择Llama3-8B模型框架,使用推荐权重创建我的模型。

    1. 在ModelArts Studio左侧导航栏中,选择“模型广场”进入模型广场。
    2. 在模型广场搜索“Llama3-8B”,单击“立即使用”进入模型详情页。
    3. 在模型详情页,单击“创建模型”弹出创建模型页面。
    4. 在创建模型页面,配置参数。
      图2 创建模型
      表1 创建模型

      参数

      说明

      取值样例

      来源模型

      当从“模型广场”进入创建模型页面时,此处默认呈现选择的模型。

      Llama3-8B

      模型名称

      自定义模型名称。

      Llama3-8B_template

      描述

      模型简介。

      -

      权重设置与词表

      默认选择“使用推荐权重”,支持选择“自定义权重”

      使用平台推荐的权重文件,可提高模型的训练、压缩、部署和调优等服务的使用效率。

      权重文件指的是模型的参数集合。

      使用推荐权重

    5. 参数配置完成后,单击“创建”,创建自定义模型。
    6. 在模型列表,单击模型名称可以进入详情页查看模型详细信息和任务。
      当模型“状态”变成“创建成功”时,表示模型创建完成。
      图3 查看我的模型状态

  4. 调优模型,使用6种不同的调优参数去训练模型。

    1. 模型创建成功后,在我的模型列表,单击操作列的“更多 > 调优”,进入创建调优作业页面。
    2. 在创建调优作业页面,配置参数。

      由于需要分析模型调优效果,需要创建多个调优任务,不同调优任务的参数值配置请参见表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

    3. 参数配置完成后,单击“提交”,创建调优任务。

      在任务列表,当模型“状态”变成“已完成”时,表示模型调优完成。

  5. 部署模型服务。将原始模型“Llama3-8B_template”和调优后获得的6种模型都部署成模型服务。

    1. 在ModelArts Studio左侧导航栏中,选择“模型部署”进入服务列表。
    2. 单击“部署模型服务”进入部署页面,完成创建配置。
      图4 资源设置
      表4 部署模型服务

      参数

      说明

      取值样例

      服务设置

      服务名称

      自定义模型服务的名称。

      参见表5

      描述

      部署模型服务的简介。

      -

      模型设置

      部署模型

      单击“选择模型”,从“我的模型”列表中选择需要部署的模型。

      参见表5

      资源设置

      资源池类型

      资源池分为公共资源池与专属资源池。

      • 公共资源池供所有租户共享使用。
      • 专属资源池需单独创建,不与其他租户共享。

      公共资源池

      实例规格

      选择实例规格,规格中描述了服务器类型、型号等信息。

      xxx

      单实例流量限制(QPS)

      设置待部署模型的单实例流量限制QPS。

      3

      实例数

      设置服务器个数。增加实例个数可提高总QPS,“总QPS = 单实例QPS x 实例数”

      1

      更多选项

      事件通知

      选择是否打开“事件通知”开关。

      关闭

      自动停止

      当使用付费资源时,可以选择是否打开“自动停止”开关。

      关闭

      表5 多个部署服务的参数配置

      序号

      服务名称

      部署模型

      1

      service--lora-01

      Llama3-8B_01-lora

      2

      service--lora-02

      Llama3-8B_02-lora

      3

      service--lora-03

      Llama3-8B_03-lora

      4

      service--sft-01

      Llama3-8B_01-sft

      5

      service--sft-02

      Llama3-8B_02-sft

      6

      service--sft-03

      Llama3-8B_03-sft

      7

      service-00

      Llama3-8B_template

    3. 参数配置完成后,单击“提交”,创建部署任务。

      在任务列表,当模型“状态”变成“运行中”时,表示模型部署完成。

  6. 使用模型服务:在MaaS体验部署完成的7个模型服务,测试推理结果。

    1. 在ModelArts Studio左侧导航栏中,选择“模型体验”进入体验页面。
    2. 在模型体验页面,单击“请选择服务”“立即选择”,在模型列表中选择模型服务,单击“确定”
      图5 选择模型服务
    3. 在参数设置页面,拖动或直接输入数值配置推理参数。单击“恢复默认”可以将参数值调回默认值。
      图6 设置推理参数
      表6 参数设置

      参数

      说明

      取值样例

      温度/Temperature

      设置推理温度。

      • 数值较高,输出结果更加随机。
      • 数值较低,输出结果更加集中和确定。

      1

      核采样/top_p

      设置推理核采样。调整输出文本的多样性,数值越大,生成文本的多样性就越高。

      1

      top_k

      选择在模型的输出结果中选择概率最高的前K个结果。

      20

    4. 在对话框中输入问题,查看返回结果。

      输入的问题需要添加如下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所示。

      图7 推理结果

  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个模型服务的训推效果最好。

相关文档