手册下载
H3C傲飞算力平台
ChatGLM2-6B大模型最佳实践
Copyright © 2024 新华三技术有限公司 版权所有,保留一切权利。
非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传播。
除新华三技术有限公司的商标外,本手册中出现的其它公司的商标、产品标识及商品名称,由各自权利人拥有。
本文档中的信息可能变动,恕不另行通知。
大模型是指具有大规模参数和复杂计算结构的机器学习模型,它可以处理大规模的数据并进行复杂的推理和预测任务。大模型通常通过深度学习技术进行训练,利用大量的数据来学习并提取数据之间的复杂关系。相比于小模型,大模型通常参数较多、层数较深,具备更强的表达能力和更高的准确度,但也需要更多的计算资源和时间来训练和推理,适用于数据量较大、计算资源充足的场景,比如高性能计算、云端计算、人工智能等。此外,大模型需要充足的训练数据来实现有效的学习,因为更多的参数需要更多的训练样本进行训练。
大模型在自然语言处理、计算机视觉、语音识别等领域得到了广泛的应用,可以帮助我们更准确地理解和处理各种复杂的信息。然而,大模型也面临一些挑战,包括训练成本高昂、部署和推理的复杂,计算资源要求高等。
各种原始大模型、开源大模型,由于其自身的局限性,在使用的过程中,普遍会遇到效果不好、无法应对用户特定任务需求的困境。主要有以下原因:
· 数据适配问题:开源模型通常是在特定的数据集上进行训练和优化的。当用户的数据与这些模型被训练的数据有差异时,模型的性能可能会下降。用户可能需要对模型进行微调或迁移学习,以适应用户的数据。
· 超参数调整:原始模型中的超参数可能需要根据用户的任务和数据进行调整。这些超参数包括学习率、批大小、正则化参数等。通过尝试不同的超参数组合,用户可以改善模型的性能。
· 数据质量问题:如果用户的数据质量较差,包含噪声或标签不准确,即使使用了优秀的模型,效果也可能不理想。确保数据质量和标注的准确性非常重要。
· 模型的局限性:原始模型可能有其自身的局限性,无法应对用户特定任务中的挑战。在这种情况下,用户可能需要考虑使用其他模型或进行定制开发,以满足用户的需求。
· 模型的更新和改进:开源模型通常会不断更新和改进,因此,确保用户使用的是最新版本的模型非常重要。这些更新可能包括性能改进、bug修复等,有助于提高模型的质量。
根据用户特定的需求和数据进行模型调优和改进,可以解决上述的问题。
大模型调优是指对深度学习模型进行优化和调整,以达到更好的训练性能和预测结果的过程。由于大型模型具有庞大的参数数量,因此它们的训练和优化过程可能需要更多细致的调整和优化。
大模型调优的主要目标包括但不限于以下几个方面:
· 训练速度优化:调整模型结构、使用更高效的优化算法、分布式训练以及硬件加速等方法,以提高训练速度。
· 性能提升:通过调整超参数(如学习率、批大小、正则化等)、选择更合适的损失函数、改进数据预处理等手段,提高模型在验证集或测试集上的性能表现。
· 泛化能力提升:通过增加数据多样性、引入数据增强技术、改进模型结构等方式,提高模型在未见过的数据上的泛化能力,减少过拟合风险。
· 模型压缩:对大型模型进行压缩,以减少模型的参数量和计算量,以提高模型的部署效率和在边缘设备上的运行速度。
· 硬件优化:针对特定硬件设备(如GPU、TPU等)进行优化,利用硬件的特定功能和加速器来提高模型的计算效率。
· 解释性优化:对模型进行解释性模型的调整,以提高模型的可解释性和可理解性,适应特定的应用场景需求。
大模型调优需要深入理解深度学习模型的原理和优化方法,对模型训练过程中的各种超参数、损失函数等进行精细调整,以获得更优的性能和效果。这是深度学习工程师和研究人员在实际项目中必须面对的关键任务之一。
傲飞算力平台为用户提供了多种调优方式,包括微调、预训练、强化学习和直接偏好优化等。同时,平台内置了多款开源大模型,用户可以直接使用这些模型进行训练优化,并且结合自身行业内的数据集进行训练。
大模型评估是对大规模的深度学习模型进行性能评估和验证的过程。在大模型评估中,通常会针对模型的准确性、鲁棒性、泛化能力等方面进行深入的分析和测试。这包括在验证集或测试集上对模型进行评估,了解其在未见过的数据上的表现,以及对模型的训练效果进行全面评估。大模型评估是确保模型在实际应用中能够可靠运行和有效解决问题的重要环节。
傲飞算力平台为常见的通用开源大模型内置了大模型评估策略,用户可自定义评估数据集,对调优后的模型进行评估,选择最适合其需求的模型进行部署,确保模型在实际应用中能够可靠运行并有效解决问题。
大模型推理是指在深度学习中,将经过训练和优化的大型模型应用到实际数据上,利用模型对输入数据进行预测、分类或生成结果的过程。在推理阶段,模型不再进行参数的更新和优化,而是专注于使用已经训练好的参数来处理输入数据,以生成相应的输出。大模型推理通常会利用各种优化技术以及专门的硬件加速器(如GPU、TPU等)来提高推理效率,确保在实际应用中能够快速而准确地处理大规模的数据。
傲飞算力平台提供了fschat和RAG知识库推理框架,并能根据底层资源的使用情况及服务并发程度进行动态扩缩容。综上,傲飞算力平台是一款内置多款开源大模型,并提供给用户大模型调优、评估到提供推理服务的大模型全生命周期支撑平台。
傲飞算力平台(AMPHA,Advanced Management Platform for HPC and AI)是H3C自主研发的全方位的高性能计算与人工智能融合的交互开发平台,提供了如下功能:
· 平台为用户提供HPC作业的调度、AI传统模型和AIGC大模型全流程生命周期管理,包括模型开发、训练、评估、部署以及在线推理服务。
· 为了辅助用户管理开发资源,平台提供了文件存储、资源监控、资源申请、工单管理以及可视化等功能。
· 为解决部署难的问题,平台提供基础软硬件集群环境的快速部署的功能。通过傲飞算力平台,用户可以实现资源统一监管、作业调度与监控、训练数据可视化、工程化的模型开发管理,满足不同业务场景的开发需求。
傲飞算力平台的产品架构示意图,如图2-1所示。
本案例在AI大模型场景下,基于开源中文医疗数据集,使用傲飞算力平台预置ChatGLM2-6B模型进行预训练、微调、强化学习,在训练完的大模型上进行推理的全过程。傲飞LLMOps(Large Language Model Operations,大型语言模型运维)流程,如图3-1所示。
确保在普通用户使用傲飞预置模型ChatGLM2-6B进行模型调优和推理应用之前,基础环境和数据资产的完整性得到保证。
(1) 完成傲飞算力平台部署,详细的部署过程请参考《H3C傲飞算力平台 安装部署手册》。
(2) 如图4-1所示,系统管理员登录傲飞算力平台,在系统中创建租户用户组,租户用户组中包含租户管理员A和普通用户B。
(3) 如图4-2所示,系统管理员创建租户AI专属资源池,在资源池中添加一个GPU节点(A100*2 8核 16G),供本案例后续的训练推理使用。
(4) 如图4-3所示,租户管理员单击[集群配置/资源组管理]菜单,进入资源组管理页面。
(5) 如图4-4所示,单击<创建资源组>按钮,在弹出的“创建资源组”页面中,填写资源组信息。
(6) 如图4-5所示,创建成功后,租户管理员可在资源组管理页面,查看已创建的AI资源组,确保用户B所在的用户组可用。
傲飞算力平台为用户提供了一些通用大模型的调优、评估预置包。在开始使用这些预置包之前,用户需要将用于训练大模型的依赖镜像部署至傲飞资产中。而预置镜像需要系统管理员在傲飞的部署页面上提前安装。具体的配置流程如下:
(1) 登录Matrix页面
在浏览器中输入Matrix的登录地址,进入如图4-6所示登录页面。登录地址格式为:https://ip_address:8443/matrix/ui/。其中ip_address为管理集群北向虚IP地址,8443为缺省端口号。
图4-6 Matrix登录界面
(2) 输入用户名和密码
在Matrix登录页面,输入用户名和密码(默认用户名为admin,密码为Pwd@12345),按照页面提示输入验证码,单击<登录>按钮,默认进入Matrix的集群部署页面。
a. 单击<部署/应用>按钮,进入部署应用页面。单击<部署应用>按钮,进入如图4-7所示的页面。
b. 上传傲飞预置大模型调优镜像
单击<上传>按钮,在弹出的部署应用页面上,上传傲飞预置大模型调优镜像,如图4-8所示。
(4) 部署镜像包
在部署步骤页面,勾选(3)中上传成功的镜像包,根据配置指引,一直单击<下一步>,直至最后单击<部署>按钮,完成部署。
图4-9 部署镜像包
(5) 登录傲飞租户管理员账号,单击[资产管理/AI资产/镜像],进入镜像管理页面。如图4-10所示,预置大模型调优镜像已上传成功。
本案例使用的大模型为chatglm2-6b模型,需要先确认傲飞算力平台的AI资产中心是否已存在chatglm2-6b模型:
· 如已存在,可直接在后续配置步骤中使用。
· 如未存在,可参考“4.3.2 注册模型至AI资产”配置。
确认ChatGLM2-6B模型是否存在的方法如下:
使用普通用户角色登录傲飞算力平台,单击[资产管理/AI资产/模型],进入模型管理页面。单击“大模型”页签,查看是已存在ChatGLM2-6B模型,如图4-11所示。
图4-11 确认AI资产中是否存在ChatGLM2-6B模型
租户管理员可将模型注册到AI资产中,具体步骤如下:
(1) 下载模型
请从https://mirrors.h3c.com/h3c-os/ampha/ampha-largemodels,下载ChatGLM2-6B模型文件。
(2) 上传模型
a. 上传模式选择
租户管理员单击[文件管理/私有文件]菜单,进入私有文件管理页面。由于模型文件较大,在上传文件时,选择“SFTP上传”方式,如图4-12所示。
图4-12 上传模式选择
b. 查看SFTP信息
选择“SFTP上传”模式后,将弹出“SFTP大文件上传服务”页面。根据页面上显示的SFTP信息,如图4-13所示。通过SFTP客户端工具(如FileZilla)将下载的模型文件上传到普通用户私有文件下。
c. 模型文件上传成功
模型文件上传成功后,文件列表中将会出现已上传的模型文件,如图4-14所示。
(3) 扫描模型
a. 模型智能扫描
如图4-15所示,租户管理员单击[资产管理/AI资产/模型]菜单,进入模型管理页面。单击页面右上角的<智能扫描>按钮,进行模型智能扫描。
b. 查看导入记录
如图4-16所示,在模型管理页面,单击右上角<查看导入历史>按钮,可以检查模型是否导入成功。
图4-16 查看导入历史
如图4-17所示,可以在导入历史列表中,查看“状态”信息,判断模型是否导入成功。
本案例中,需要准备的算法包括ChatGLM2-6B预训练算法、ChatGLM2-6B微调算法和ChatGLM2-6B直接偏好算法。本节以准备ChatGLM2-6B预训练算法为例,其余的类似。
确认傲飞算力平台的AI资产中心是否已存在ChatGLM2-6B预训练算法:
· 如已存在,可直接在后续配置步骤中使用。
· 如未存在,可参考“4.4.2 算法注册至AI资产”配置。
确认ChatGLM2-6B预训练算法是否存在的方法如下:
使用普通用户角色登录傲飞算力平台,单击[资产管理/AI资产/算法],进入算法管理页面。单击“大模型”页签,查看是已存在ChatGLM2-6B预训练算法,如图4-18所示。
图4-18 确认AI资产中是否存在ChatGLM2-6B预训练算法
(1) 下载算法文件
请从https://mirrors.h3c.com/h3c-os/ampha/ampha-largemodels,下载所需的算法文件。
(2) 上传算法文件
a. 上传模式选择
使用租户管理员角色登录傲飞系统,单击[文件管理/私有文件]菜单,进入私有文件管理页面。此处以选择“SFTP上传”方式为例进行说明,如图4-19所示。
b. 查看SFTP信息
选择“SFTP上传”模式后,将弹出“SFTP大文件上传服务”页面。根据页面上显示的SFTP信息,如图4-20所示。通过SFTP客户端工具(如FileZilla)将下载的算法文件上传到普通用户私有文件下。
c. 算法文件上传成功
算法文件上传成功后,文件列表中将会出现已上传的算法文件,如图4-21所示。
(3) 扫描算法文件
a. 算法智能扫描
如图4-22所示,租户管理员单击[资产管理/AI资产/算法]菜单,进入算法管理页面。单击页面右上角<智能扫描>按钮,进行算法智能扫描。
b. 查看导入记录
如图4-23所示,在算法管理页面,单击右上角<查看导入历史>按钮,可以检查算法是否导入成功。
针对文本对话类数据,在进行预训练、微调以及强化学习时,需要采用不同的处理方法。
· 预训练阶段,可以利用无监督的数据集,在开源环境中进行大规模的数据收集,并按照预训练数据集的处理原则进行数据处理。
· 微调和强化学习阶段,同样需要遵循相关的数据处理原则来处理数据。
本案例中采用的中文医疗数据集中包含了预训练(pretrain)、微调(finetune)以及奖励模型(reward)的数据,如图4-24所示。
数据已切分为训练集(train)、验证集(validation)和测试集(test),如图4-25所示。
下载数据分别存放在pretraindata、finetunedata和rewarddata文件夹中,三个文件夹中分别独立创建train、validation和test文件夹,然后将https://huggingface.co/datasets/shibing624/medical数据集中的文件放到对应的文件夹下
本节以注册pretraindata为例进行说明,finetunedata和rewarddata操作类似。
将数据分别注册到AI资产中。注册步骤如下:
(1) 进入数据集页面
如图4-26所示,登录普通用户账户,单击[资产管理/AI资产/数据集],进入数据集页面。单击右上角<创建>按钮,进入创建数据集页面。
(2) 创建数据集
在创建数据集页面,填写数据集名称、任务标签等信息,如图4-27所示。
填写完成后,单击<创建>按钮,完成数据集创建。
(3) 导入数据文件
a. 单击中创建的数据集,进入数据集卡片,如图4-28所示。
b. 单击“数据文件”页签,进入数据文件管理页面,如图4-29所示。
(4) 上传本地pretrain_data文件夹
如图4-30所示,单击[上传文件/上传文件夹]按钮,在弹出的本地选择文件夹的对话框中,找到本地的pretrain_data的文件夹。
在上传文件夹前,请确保页面上的当前路径显示为data目录。
(5) 上传成功
上传成功后,单击<确定>按钮,即完成上传,如图4-31所示。
(6) 查看已上传的数据集
在数据集页面,可以看到已经上传的数据集,如图4-32所示。
图4-32 在AI资产中查看数据集
大模型训练分为预训练、微调、强化学习三个阶段,各阶段的详细说明如表5-1所示。
训练阶段(LX) |
阶段说明 |
训练方法 |
资源消耗 |
大模型预训练L0 |
包含大模型预训练和大模型增量预训练,产出Base模型,用于学习文本的表示 |
一般使用无监督的、大量的、通用的(非固定领域)的数据进行无监督训练 |
· 训练周期长(以月为单位) · 训练消耗资源大(几千张卡) |
大模型微调L1 |
包含大模型微调,通过微调,产出微调模型,模型中加入垂直领域的信息 |
一般使用有监督的、少量的、领域相关的数据进行有监督训练 |
· 训练周期短(以天为单位) · 训练消耗资源小(几张~几百张卡) |
强化学习L2 |
包含RLHF和DPO,对微调产出的模型进行进一步的使用人工反馈的数据进行优化 |
一般使用人类反馈过的、有人类偏好的数据进行训练 |
· 训练周期短(以天为单位) · 训练消耗资源小(几张~几百张卡) |
大模型训练的处理流程如图5-1所示,本案例会针对每个阶段如何在傲飞算力平台应用进行详细介绍。
可通过如下两种方式,进入大模型调优页面:
· 如图5-2所示,在首页直接单击“大模型调优”模块,进入大模型调优页面。
· 如图5-3所示,单击[AI空间/大模型/大模型调优],进入大模型调优页面。
如图5-4所示,在大模型调优界面,单击<创建预训练任务>按钮,创建预训练任务。
如图5-5所示,填写任务名称、任务描述基本信息。
· 任务名称:必填项,填写任务名称,输入小写字母或数字开头和结尾的,合法字符为小写字母、数字、中划线的字符串,且输入长度不超过32个字符。
· 任务描述:非必填项,任务描述,100字符以内。
(1) 训练模式选择
训练模式分为“预置模型训练”和“自定义模型训练”,此处选择预置模型训练方式。
(2) 选择算法
如图5-6所示,单击“选择算法”输入框,选择需要使用的算法。此处选择ChatGLM2-6B预训练算法。
· 算法的详情可以通过详情链接,跳转至资产页面查看。
· 预置模型训练选择的模型算法为傲飞预置的算法,不支持用户自定义的模型和算法。
(3) 选择训练策略
如图5-7所示,单击“训练策略”框,选择需要的训练策略,此处选择“LoRA增量预训练”进行ChatGLM2-6B的预训练。
(4) 选择输入数据
输入数据可从资产管理中选择已经创建或已经收藏的数据集资产,也可以从本地存储选择用户私有文件路径下的数据集文件夹目录。
¡ 资产管理选择输入数据
在“输入数据”第一个下拉框中,选择“AI资产”;单击“请选择输入数据”,在弹出的对话框中进行选择。
图5-8 从资产管理选择输入数据
¡ 本地存储选择输入数据
在“输入数据”第一个下拉框中,选择“本地存储”;单击“请选择输入数据”,在弹出的对话框中进行选择。
图5-9 本地存储选择输入数据
(5) 选择输出路径
输出路径可自行创建并选择,输出路径需为空文件夹。
缺省情况下,系统会自动创建并选择默认路径,此路径为普通用户私有文件路径/output/ Pretrain/{任务名称}/model。
(6) 超参配置
根据选择的算法和训练策略显示训练所需的超参数及默认值,可根据实际情况修改。
单击“超参配置”中的<添加>按钮,可查看并修改训练相关的参数值。
针对本案例所使用的数据集,将超参配置中的“text_column”值修改为“text”。
图5-10 超参配置
· 原始模型中的超参数可能需要根据用户的任务和数据进行调整。这些超参数包括学习率、批大小、正则化参数等。通过尝试不同的超参数组合,用户可以改善模型的性能。
· 若用户基于自定义模型训练,可在训练配置中选择自定义模型训练,本文档对自定义模型的训练过程配置不做详细说明。
在进行预置模型训练时,系统会提供资源需求的提示,建议按照所需资源进行配置。由于训练作业的资源消耗受多种因素影响,因此若提示显存不足,请在增加资源后重新提交作业。
用户可以根据实际可用的资源组及组网情况,选择是否开启高性能网络,填写完成后单击<提交>按钮,完成资源配置。
图5-11 资源配置
任务提交之后,大模型调优页面将会增加一条任务记录。
如图5-12所示,在大模型调优页面,可查看任务名称、任务描述、任务状态、模型名称、任务场景、创建方式、运行时间以及提交时间等任务信息。
单击任务[操作]菜单内的<详情>按钮,可跳转到任务详情页。
图5-13 查看任务详情
可查看该任务的基本信息、日志、可视化、资源监控、实例,如图5-14所示。
· 基本信息:包含作业提交时的基本信息、作业使用AI资产的配置信息以及作业提交时算法的超参等。
· 日志:算法脚本运行的日志信息,作业在运行过程中定时刷新。针对一些作业报错、运行失败可以在这里查看日志,日志可以下载。
· 可视化:运行过程的展示,体现作业训练过程的指标变化。在这里可以进行可视化组件的打开、停止、查看详情和销毁的操作。
· 资源监控:可以查看作业运行过程中资源使用情况。
· 实例:查看任务启动的实例信息,可以查看算法脚本在运行起来之前的作业状态。
图5-14 任务详情
如图5-15所示,单击任务[操作]菜单内的<日志>按钮,可直接跳转到详情中的日志页面查看日志。
日志支持动态刷新和实例切换(有多个实例情况下),如图5-16所示。
训练过程中,只有输出路径/metrics/tensorboard目录下生成了Tensorboard所需文件,才可单击操作栏<训练可视化>按钮,如图5-17所示。
如图5-18所示,在资源组选择弹窗内,选择资源组后单击<确认>按钮,即可创建训练可视化组件。
如图5-19所示,创建完成后,单击[详情/可视化]菜单,单击<打开>按钮,查看可视化组件。
如图5-20所示,可以查看可视化效果。
单击操作栏<停止>按钮,可手动停止训练任务,任务状态会变为“被终止”,如图5-21所示。
单击操作栏<恢复>按钮,可根据一个被终止或因某些原因失败的任务重新创建一个以”resume-“前缀开头的预训练任务并默认从最新的checkpoint进行恢复训练;需保证输出路径下存在有效的checkpoint文件,如图5-22所示。
该校验通过仅说明对应目录下存在checkpoint文件夹,不能确保checkpoint文件的完整性和合法性。如果发现恢复任务报错加载checkpoint失败,可以手动删除最近的checkpoint,尝试从次新的checkpoint恢复,如图5-23所示。
仅通过目录下存在checkpoint文件夹并不能保证其中的checkpoint文件完整且合法。如果发现恢复功能失效,无法正常恢复,可以手动删除最近的checkpoint,然后尝试从次新的checkpoint进行恢复。
训练任务成功后,单击操作栏中的<注册模型>按钮,如图5-24所示。
在弹出框中填写模型名称、模型描述、任务标签后即可将预训练完成的模型注册到AI资产中,如图5-25所示。
单击<确定>按钮后,页面右上角提示注册成功。可单击[资产管理/AI资产/模型/我创建的],进入大模型页面。选择“大模型”页签,单击[调优策略/预训练],即可查看到注册的模型。
图5-26 查看注册模型
大模型调优页面,单击<创建微调任务>按钮创建微调任务,如图5-27所示。
如图5-28所示,填写任务名称、任务描述基本信息。
· 任务名称:必填项,填写任务名称,输入小写字母或数字开头和结尾的,合法字符为小写字母、数字、中划线的字符串,且输入长度不超过32个字符。
· 任务描述:非必填项,任务描述,100字符以内。
(1) 训练模式选择
训练模式分为“预置模型训练”和“自定义模型训练”,此处选择预置模型训练方式。
(2) 选择算法
如图5-29所示,单击“选择算法”输入框,选择需要使用的算法。此处选择ChatGLM2-6B微调算法。
· 算法的详情可以通过详情链接,跳转至资产页面查看。
· 预置模型训练选择的模型算法为傲飞预置的算法,不支持用户自定义的模型和算法。
(3) 选择训练策略
如图5-30所示,单击“训练策略”框,选择需要的训练策略,此处选择“LoRA”进行ChatGLM2-6B的微调。
(4) 选择输入数据
输入数据可从资产管理中选择已经创建或已经收藏的数据集资产,也可以从本地存储选择用户私有文件路径下的数据集文件夹目录。
¡ 资产管理选择输入数据
在“输入数据”第一个下拉框中,选择“AI资产”;单击“请选择输入数据”,在弹出的对话框中进行选择。
图5-31 资产管理输入数据
¡ 本地存储选择输入数据
在“输入数据”第一个下拉框中,选择“本地存储”;单击“请选择输入数据”,在弹出的对话框中进行选择。
图5-32 本地存储选择输入数据
(5) 选择输出路径
输出路径可自行创建并选择,输出路径需为空文件夹。
缺省情况下,系统会自动创建并选择默认路径,此路径为普通用户私有文件路径/output/Tuning/{任务名称}/model。
(6) 超参配置
根据选择的算法和训练策略显示训练所需的超参数及默认值,可根据实际情况修改。
单击“超参配置”中的<添加>按钮,可查看并修改训练相关的参数值。
针对本案例所使用的数据集,“prompt_name_or_file”可使用默认值“alpaca”,“prompt_column1”值为“instruction”,“rompt_column2值为“input”,“response_column值为“output”。
图5-33 超参配置
· 请确保参数值的修改是正确合适的,否则可能训练失败。
· 若用户基于自定义模型训练,可在训练配置中选择自定义模型训练,本文档对自定义模型的训练过程配置不做详细说明。
在进行预置模型训练时,系统会提供资源需求的提示,建议按照所需资源进行配置。由于训练作业的资源消耗受多种因素影响,因此若提示显存不足,请在增加资源后重新提交作业。
如图5-34所示,用户可以根据实际可用的资源组及组网情况,选择是否开启“高性能网络”,填写完成后单击<提交>按钮,完成资源配置。
任务提交之后,大模型调优页面将会增加一条任务记录。
如图5-35所示,在大模型调优页面,可查看任务名称、任务描述、任务状态、模型名称、任务场景、创建方式、运行时间以及提交时间等任务信息。
如图5-36所示,单击任务[操作]菜单内的<详情>按钮,可跳转到任务详情页。
可查看该任务的基本信息、日志、可视化、资源监控、实例,如图5-37所示。
· 基本信息:包含作业提交时的基本信息、作业使用AI资产的配置信息以及作业提交时算法的超参等。
· 日志:算法脚本运行的日志信息,作业在运行过程中定时刷新。针对一些作业报错、运行失败可以在这里查看日志,日志可以下载。
· 可视化:运行过程的展示,体现作业训练过程的指标变化。在这里可以进行可视化组件的打开、停止、查看详情和销毁的操作。
· 资源监控:可以查看作业运行过程中资源使用情况。
· 实例:查看任务启动的实例信息,可以用查看算法脚本在运行起来之前的作业状态。
如图5-38所示,单击任务[操作]菜单内的<日志>按钮,可直接跳转到详情中的日志页面查看日志。
日志支持动态刷新和实例切换(有多个实例情况下),如图5-39所示。
训练过程中,若输出路径/metrics/tensorboard目录下生成Tensorboard所需文件,即可单击操作栏<训练可视化>按钮,如图5-40所示。
如图5-41所示,在资源组选择弹窗内,选择资源组后单击<确认>按钮,即可创建训练可视化组件。
创建完成后,单击[详情/可视化]下的<打开>按钮查看可视化组件,如图5-42所示。
单击操作栏<停止>按钮,可手动停止训练任务,任务状态会变为“被终止”,如图5-43所示。
单击操作栏<恢复>按钮,可根据一个被终止或因某些原因失败的任务重新创建一个以”resume-“前缀开头的预训练任务并默认从最新的checkpoint进行恢复训练;需保证输出路径下存在有效的checkpoint文件,如图5-44所示。
该校验通过仅说明对应目录下存在checkpoint文件夹,不能确保checkpoint文件的完整性和合法性。如果发现恢复任务报错加载checkpoint失败,可以手动删除最近的checkpoint,尝试从次新的checkpoint恢复,如图5-45所示。
仅通过目录下存在checkpoint文件夹并不能保证其中的checkpoint文件完整且合法。如果发现恢复功能失效,无法正常恢复,可以手动删除最近的checkpoint,然后尝试从次新的checkpoint进行恢复。
训练任务成功后,单击操作栏中的<注册模型>按钮,如图5-46所示。
在弹出框中填写模型名称、模型描述、任务标签后即可将训练最终保存的模型注册到AI资产中,如图5-47所示。单击<确定>按钮后,页面右上角提示注册成功。
如图5-48所示,单击[资产管理/AI资产/模型/我创建的],进入大模型页面。选择“大模型”页签,单击[SFT],即可查看到注册的模型。
傲飞提供两种强化学习的方式,RLHF(Reinforcement Learning based on Human Feedback,基于人类反馈的强化学习)和DPO(Direct Preference Optimization,直接偏好优化)。
· RLHF通过在有监督数据集上微调预训练模型得到SFT模型,然后在人类偏好数据集上训练奖励模型,最后最终结合SFT模型和奖励模型,利用PPO算法进行进一步训练。
· DPO直接优化LLM以对齐人类偏好,相比RLHF无需建模奖励模型。
本案例以DPO为例进行强化学习。
大模型调优页面,单击<创建直接偏好优化>按钮创建微调任务,如图5-49所示。
如图5-50所示,填写任务名称、任务描述基本信息。
· 任务名称:必填项,填写任务名称,输入小写字母或数字开头和结尾的,合法字符为小写字母、数字、中划线的字符串,且输入长度不超过32个字符。
· 任务描述:非必填项,任务描述,100字符以内。
(1) 训练模式选择
训练模式分为“预置模型训练”和“自定义模型训练”,此处选择预置模型训练方式。
(2) 选择算法
如图5-51所示,单击“选择算法”输入框,选择需要使用的算法。此处选择ChatGLM2-6B直接偏好优化算法。
(3) 选择训练策略
单击“训练策略”框,选择需要的训练策略,此处选择“LoRA”进行ChatGLM2-6B的训练。
(4) 选择SFT模型
SFT模型为针对某一特定任务或领域在相应的有监督数据集上进行微调后得到的模型,可在微调任务成功后将保存的模型注册到AI资产中以供此处选择。
SFT模型可以从<AI资产>中选择创建或收藏的模型资产,也可以从<本地存储>中选择私有文件下的模型文件夹目录。此处,以从<AI资产>中选择为例,进行说明,如图5-52所示。
(5) 选择输入数据
输入数据可从资产管理中选择已经创建或已经收藏的数据集资产,也可以从本地存储选择用户私有文件路径下的数据集文件夹目录。此处以从资产管理输入数据为例。
在“输入数据”第一个下拉框中,选择“AI资产”;单击“请选择输入数据”,在弹出的对话框中进行选择,如图5-53所示。
(6) 选择输出路径
输出路径可自行创建并选择,输出路径需为空文件夹。
缺省情况下,系统会自动创建并选择默认路径,此路径为普通用户私有文件路径/output/DPO_Train /{任务名称}/model。
(7) 超参配置
根据选择的算法和训练策略显示训练所需的超参数及默认值,可根据实际情况修改。
单击“超参配置”中的<添加>按钮,可查看并修改训练相关的参数值。
针对本案例所使用的数据集,“question_column”可使用默认值“question”,“chosen_column”值为“response_chosen”,“rejected_column值为“response_rejected”。
图5-54 超参配置
在进行预置模型训练时,系统会提供资源需求的提示,建议按照所需资源进行配置。由于训练作业的资源消耗受多种因素影响,因此若提示显存不足,请在增加资源后重新提交作业。
如图5-55所示,用户可以根据实际可用的资源组及组网情况,选择是否开启“高性能网络”,填写完成后单击<提交>按钮,完成资源配置。
任务提交之后,大模型调优页面将会增加一条任务记录。
如图5-56所示,在大模型调优页面,可查看任务名称、任务描述、任务状态、模型名称、任务场景、创建方式、运行时间以及提交时间等任务信息。
如图5-57所示,单击任务[操作]菜单内的<详情>按钮,可跳转到任务详情页。
可查看该任务的基本信息、日志、可视化、资源监控、实例,如图5-58所示。
· 基本信息:包含作业提交时的基本信息、作业使用AI资产的配置信息以及作业提交时算法的超参等。
· 日志:算法脚本运行的日志信息,作业在运行过程中定时刷新。针对一些作业报错、运行失败可以在这里查看日志,日志可以下载。
· 可视化:运行过程的展示,体现作业训练过程的指标变化。在这里可以进行可视化组件的打开、停止、查看详情和销毁的操作。
· 资源监控:可以查看作业运行过程中资源使用情况。
· 实例:查看任务启动的实例信息,可以用查看算法脚本在运行起来之前的作业状态。
如图5-15所示,单击任务[操作]菜单内的<日志>按钮,可直接跳转到详情中的日志页面查看日志。
图5-59 查看任务日志
日志支持动态刷新和实例切换(有多个实例情况下),如图5-60所示。
训练过程中,若输出路径/metrics/tensorboard目录下生成Tensorboard所需文件,即可单击操作栏<训练可视化>按钮,如图5-61所示。
如图5-62所示,在资源组选择弹窗内,选择资源组后单击<确认>按钮,即可创建训练可视化组件。
创建完成后,单击[详情/可视化]下的<打开>按钮查看可视化组件,如图5-63所示。
单击操作栏<停止>按钮,可手动停止训练任务,任务状态会变为“被终止”,如图5-64所示。
如图5-65所示,单击操作栏<恢复>按钮,可根据一个被终止或因某些原因失败的任务重新创建一个以”resume-“前缀开头的预训练任务并默认从最新的checkpoint进行恢复训练;需保证输出路径下存在有效的checkpoint文件,如所示。
该校验通过仅说明对应目录下存在checkpoint文件夹,不能确保checkpoint文件的完整性和合法性。如果发现恢复任务报错加载checkpoint失败,可以手动删除最近的checkpoint,尝试从次新的checkpoint恢复,如图5-66所示。
仅通过目录下存在checkpoint文件夹并不能保证其中的checkpoint文件完整且合法。如果发现恢复功能失效,无法正常恢复,可以手动删除最近的checkpoint,然后尝试从次新的checkpoint进行恢复。
训练任务成功后,单击操作栏中的<注册模型>按钮,如图5-67所示。
在弹出框中填写模型名称、模型描述、任务标签后即可将微调完成的模型注册到AI资产中,如图5-68所示。
单击<确定>按钮后,页面右上角提示注册成功。
如图5-69所示,单击[资产管理/AI资产/模型/我创建的],进入大模型页面。选择“大模型”页签,单击[SFT],即可查看到注册的模型。
大模型推理是指在大模型训练之后,将经过训练的大规模深度学习模型应用于实际数据以进行预测、分类或其他分析的过程。在这一阶段,模型通常会被部署到生产环境中,用于处理实时数据或批量数据,并生成相应的预测结果。
傲飞算力平台的大模型预置多款开源大模型,例如ChatGLM2-6B、Baichuan1-7b和llama2-7b-chat-hf等。同时,用户还可以在傲飞平台上基于这些开源模型进行预训练、微调和强化学习,以获得定制化的大模型。本案例主要介绍如何在傲飞算力平台上启动ChatGLM2-6B模型的推理服务,并且利用该推理服务提供的API构建定制化的大模型应用。
可通过如下两种方式,进入大模型推理界面:
· 如图6-1所示,在首页直接单击“大模型推理”模块,进入大模型推理页面。
· 如图6-2所示,单击[AI空间/大模型/大模型推理],进入大模型推理页面,单击<创建推理服务>按钮,创建推理服务。
如图6-3所示,在大模型推理界面,单击<创建推理服务>按钮,创建推理服务。
如图6-4所示,填写服务名称、描述、模型选择、请求方式、添加环境变量。
模型选择中,选择的模型必须为AI资产中已经收藏和已经创建的模型,此处选择微调后的模型。
打开该选项时,需要设置依据类型、监控阈值、最小实例数和最大实例数,如图6-5所示。
· 依据类型:有RPS和GPU使用率两种。RPS表示系统每秒可处理的请求数量,是衡量网站、应用或系统性能的重要指标。GPU使用率表示GPU内计算核心(如CUDA核心)的使用情况,数值越高意味着GPU在执行并行计算任务时利用率越高。
· 监控阈值:可根据[依据类型]设置,选择RPS时设置数值即为每秒最大请求数量,大于该数值即自动扩容。选择GPU使用率时,范围为1~100,大于该数值即自动扩容。
· 最小实例数:为推理服务启动时的实例数。
· 最大实例数:为推理服务扩容的上限值。
如图6-6所示,首先选择资源组,设置CPU核数、内存和GPU卡。需要注意的是,该处设置的是单个实例所需的资源,如实例数为2,则会占用双倍的资源。
如图6-6所示,单击<保存>按钮,即可创建推理服务。
对于创建完成的服务,可以在大模型推理页面可以查看到服务信息,服务信息包括的服务名称、状态(常见状态有启动中、运行中和停止)、服务地址以及创建时间等,单击<详情>可以查看服务详情、任务日志以及资源监控等,如图6-7所示。
图6-7 任务基本信息
对于长时间处于启动中状态的任务,可通过刷新网页查看状态,若仍处于启动中,可能是以下原因造成:AI资产中模型文件不完整;配置资源不足;模型不在推理服务支持的模型列表之中。
对于运行中的任务,可以单击下拉菜单查看实例信息,实例信息包括模型/版本、状态、资源组、资源规格、流量比例、实例数等,单击<详情>可以查看实例详情,如图6-8所示。
如图6-9所示,在运行的服务列表中,单击<对话>按钮,与大模型进行对话,开启大模型推理服务对话。
如图6-10所示,单击大模型推理服务列表操作栏的<测试>按钮,即可弹出测试页面。
大模型推理测试,请求体示例:
{"model": "model001", "messages": [{"role": "user", "content": "hello"}]}
model参数为推理服务id。
用户可基于推理服务提供的API,搭建属于自己的大模型应用。通过使用推理服务API,开发者可以轻松地将训练好的模型部署到应用中,并调用API来进行推理,而无需过多关注模型的细节实现。
· 请求地址:大模型推理页面上对应推理任务上显示的服务地址。
· 请求方式:POST
· 请求参数:
header:
Content-Type: application/json
Authorization: Bearer ****************
body:
{
"model": "xxx",
"stream": true,
"messages": [
{
"role": "user",
"content": "hello"
}
]
}
表6-1 参数含义
参数名称 |
类型 |
备注 |
header.Authorization |
string |
用户鉴权token,用于对API进行身份验证和授权,确保API请求的合法性,可在模型部署成功后单击测试页面获取用户权鉴token |
model |
string |
模型的唯一标识,用于在系统中区分和识别不同的模型服务,可在模型部署成功后查看测试页面来获取模型服务ID |
stream |
bool |
是否开启流式结果返回,流式结果返回意味着结果会作为流式数据被返回,而不是一次性返回所有结果。 若开启流式结果返回,客户端需要自行适配 |
message |
jsonarray |
推理请求体,请求推理的重要信息,若需要开启多轮对话,则需要传递历史推理结果,数组内部成员必须为奇数个,其中每组历史对话成员依次为user和assistant,用来记录用户和助手之间的对话历史 |
message[i] |
jsonobject |
用户的提问或者模型推理的回复 |
message[i].role |
string |
角色: · user代表用户 · assistant代表模型 |
message[i].content |
string |
用户的问题或者模型推理的回复结果 |
开启流式结果返回,客户端配置js demo示例:
func getContent(){
let params = {
model: "xxxxxxxx",
stream: true,
messages: [{role: 'user', content: 'hello'}]
}
const response = await sendMessage(params)
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
const reader = response.body.getReader();
let decoder = new TextDecoder();
let resultData = '';
let content = '';
while (true) {
const { done, value } = await reader.read();
if (done) break;
resultData += decoder.decode(value)
while (resultData.includes('\n')) {
const messageIndex = resultData.indexOf('\n');
const message = resultData.slice(0, messageIndex);
resultData = resultData.slice(messageIndex + 1);
if (message.startsWith('data: ')) {
const jsonMessage = JSON.parse(message.substring(5));
if (resultData.includes('[DONE]')) {
break;
}
content += jsonMessage.choices[0]?.delta?.content || '';
console.log(content);
}
}
}
}
function sendGptMessage(options) {
return fetch(
'/v1/chat/completions',
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer ****************'
},
body: JSON.stringify(options)
});
}