6

从模型到服务:阿里云机器学习PAI一站式模型开发和部署实

 1 year ago
source link: https://www.6aiq.com/article/1687667121613
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

从模型到服务:阿里云机器学习PAI一站式模型开发和部署实

导读 本次分享题目为从模型到服务:阿里云机器学习 PAI 一站式模型开发和部署实战。

全文目录:

  1. 影响模型开发效率的问题

  2. 预训练模型与开源模型社区

  3. Demo:PAI一站式模型开发实战

  4. 总结与展望


分享嘉宾|罗义云,阿里巴巴 资深技术专家

编辑整理|river

出品社区|DataFun


01/影响模型开发效率的问题

image-baf53a440e93449187efa182e22abb66.png-imageStyle

1.机器学习流程

整个机器学习流程可以分为三个阶段:数据准备、模型开发和模型部署。接下来,我们从更细颗粒度对这三个阶段进行拆解与分析,从每个阶段的主要工作内容与主要参与者进行介绍。

  • 数据准备:数据准备是机器学习的第一步。该阶段主要有数据采集、数据标注和数据预处理,为模型开发做好准备工作。主要参与者是数据科学家。
  • 模型开发:建模(模型、算法实验)、模型训练、模型评估。主要参与者是算法科学家。
  • 模型部署:模型在离线部署、监控算法效果与性能等。主要参与者是开发和运维工程师。

接下来,我们将重点聚焦在模型开发阶段。

2.模型开发阶段面临的问题

模型开发阶段主要面临三大问题:难上手、效果差、不经济。

image-3b377c9a55af4a39b5c8731cf3f65105.png-imageStyle

其具体表现在:

  • 难上手:深度学习网络门槛较高,开发环境搭建比较困难,训练任务容易出错,而且出错问题难以排查
  • 效果差和不经济:如果需要追求算法效果,则需要更大数据集,更深网络结构,更多的迭代次数,势必会增加计算资源,训练时间更长。考虑到实际成本,不得不牺牲算法质量。

上述问题会导致模型开发效率的低下,会影响算法上线的时效性,最终会导致用户的业务问题迟迟无法得到很好解决。

3.用户痛点

2020年algorithmia公司开展的一项调研发现约70%的用户需要耗时超过一个星期才能将一个模型部署到生产环境中,其中40%的用户需要花费一个月甚至更长。那么该问题是否有解决方案呢,其实是有的,接下来我们看下解决方案------预训练模型与开源模型社区。

image-4cd234afaedf4a9faf952601f1005b2d.png-imageStyle

02/预训练模型与开源模型社区

1.预训练模型与开源模型简介

如果问现在AI领域最火的是什么,首先想到就是chatGPT。时间往前推一两年,比较火的应该是HuggingFace。HuggingFace的价值在于提供大量开源预训练模型,以及配套的transformers库,使得AI开发进入平民化时代。在2022年11月的云栖大会上,阿里巴巴达摩院也重磅推出了中文开源模型社区ModelScope。

预训练模型和开源模型社区深刻的改变了用户模型开发的范式。在预训练模型出现之前,算法科学家训练一个模型,需要从构造深度神经网络开始,一步步进行搭建。预训练模型出现之后,用户只需要提供数据集进行微调训练,即fine-tune就可以了。其结果是,用户可以以较低成本得到比较理想的模型。

开源模型社区将SOTA模型聚集在一起,方便用户查找,同时提供了友好的编程接口,进一步提高了模型开发效率。

image-549221ebb9744fc784f817d9c23f746d.png-imageStyle

同时,我们注意到,以预训练模型作为模型开发的起点,不仅仅是开源模型社区在推动,一些云厂商也早已入局,比如AWS、Azure等。AWS SageMaker的Jumpstart就为HuggingFace、Pytorch Hub等开源模型社区的模型提供了一站式开发和部署的功能,而AzureML近期也与HuggingFace合作,提供了将其中的模型一键部署成Azure Endpoints在线服务的功能。

阿里云敏锐的意识到大模型时代的到来,在整体上做了布局,我们来看下阿里云是如何进行大模型开发和应用的。

2.阿里灵杰

阿里灵杰大图如下图所示,阿里灵杰是构建于阿里云基础设施之上的大数据+AI一体化平台,大模型从开发到应用的全流程,都可以在阿里灵杰上得到相应的支持。阿里灵杰不仅支持大模型的模型和部署,也通过对外开放服务、行业模版和解决方案等多种透出方式来赋能不同行业的客户:

image-b84db7e1f84a4f5794876c071309bfb0.png-imageStyle

阿里灵杰有4大特点:Scale、Simplicity、Speed、Scenario,具体如下:

  • Scale:大数据、大规模、大应用
  • Simplicity:标准,像调用函数般易用
  • Speed:极致的运行、开发和运维效率
  • Scenario:向场景而生,支持不同场景的需求

作为阿里灵杰的智能化底座,机器学习平台PAI很好支持了大模型的训练和部署。接下来,我们具体看PAI是如何做到这一点的。

3.PAI预训练模型开发架构

阿里云机器学习平台PAI的整体架构如下图:

image-4c0b58e8930642479a9256dd08d06e79.png-imageStyle

从PAI架构图中我们可以看到PAI由4个模块组成:机器学习框架与云计算基础设施、PAI核心引擎、PAI预训练模型开发和AI应用层。

  • 机器学习框架与云计算基础设施:该部分主要是PAI依赖的云计算基础设施和机器学习框架。首先是基础硬件(CPU/GPU)、容器服务(ACK)和计算资源(ECS)部分,往上是云原生AI基础平台(DLC),再之上是机器学习框架。PAI支持目前的主流机器框架,如Tensorflow、Pytorch、EasyTransfer、Transformers等。
  • PAI核心引擎:PAI大规模并行分布式训练引擎(PAI-Whale/EPL)和PAI推理加速(PAI-Blade)与在线预测服务(PAI-EAS)
  • PAI预训练模型开发:基于上述核心能力,PAI支持大模型的训练和部署。首先,从公共模型仓库找到预训练大模型,提供数据集进行fine-tune,训练得到的模型可以通过对应接口注册到PAI模型库中,然后将其部署到EAS上,提供离线推理或者在线服务功能。
  • AI应用层:最后,通过AI开发和AI应用对客户提供相应的支持。

如果引入大模型开发流程会更完整一些,接下来我们看下引入了大模型开发流程之后的详细开发架构。

4.PAI预训练模型开发架构详解

PAI预训练模型开发架构如下图:

image-f42536a9b41c45968757d328ed93dc64.png-imageStyle

该图中,最上面一条链路就是大模型开发的流程。

首先,我们通过灵杰的大数据引擎,高效地读取超大规模的训练数据集,接下来用PAI大规模分布式训练引擎PAI-Whale进行高效、低成本的训练,得到预训练大模型,然后该模型就可以供下游fine-tune任务使用。预训练模型的fine-tune和部署之前已经介绍过了,这里就略过了。

需要指出的是,在预训练模型的训练和fine-tune支持上,PAI采用的是完全相同的架构,提供了相同的编程接口和用户体验,并且提供了业界领先的规模和效率。

5.PAI控制台详解

之前提到,大模型的训练和部署主要是靠PAI的三驾马车来实现的:交互式建模DSW、容器训练DLC和模型在线服务EAS。PAI的控制台截图如下:

image-abd868073d4146b689d2e2fe375447dc.png-imageStyle
  • DSW:提供小数据量、较少迭代次数的快速实验能力,可以让用户在较短时间内看到效果,以此可以判断代码或者逻辑的正确性。
  • DLC:支持用户进行全量数据、更多迭代次数的分布式训练,高效低成本得到最终模型。
  • EAS:提供模型部署和在线服务的能力。

接下来,我们用一个实际案例来演示PAI如何做到预训练模型的训练与部署的全流程支持的。

03/Demo:PAI一站式模型开发实战

我们回到之前介绍的ModelScope,在ModelScope上找到PALM2.0中文文本生成预训练模型,通过fine-tune获得对联生成模型,并通过EAS进行部署。

首先我们在ModelScope上获取到预训练模型,并且下载好对联数据集。接下来,我们进入到PAI控制台,整个流程涉及到PAI的三个子模块:

  • 首先,在小数据量下用交互式建模DSW编写代码
  • 其次,用容器训练DLC运行全量数据的分布式训练任务
  • 最后通过模型在线服务EAS进行部署。

1.测试预训练模型对联生成的效果

在fine-tune之前,我们先在交互式建模DSW中编写代码,测试预训练模型的效果。

预训练模型对联生成的结果如下,我们可以看到结果是比较差的:
image-3aaf20b325e8428bb4ba1819d9a143c7.png-imageStyle

接下来,我们用对联数据集对其进行fine-tune训练。测试结果如下,可以发现fine-tune之后的效果大大提升了:

image-193e72dfb6e5446297b1278932e21401.png-imageStyle

2.用容器训练运行全量数据的训练任务

该部分我们将数据集改成全量数据,在容器训练(DLC)中配置好参数,然后点击提交。

image-e00878d209654cddbc80b21925360447.jpeg-imageStyle

3.模型部署

该部分我们采用模型在线服务(EAS)对训练好的模型进行部署,并提供在线服务。之后用户可以调用该服务,比如,通过钉钉机器人以对话方式体验模型在线服务。在ModelScope上,除了文本生成预训练模型外,还有文生图等预训练模型。

image-abd39476002841cfbadcb7bd5060c1d1.jpeg-imageStyle

4.MLOPS:以模型为中心的机器学习中心管理

我们回到第一部分的机器学习流程,来看看要提升机器学习端到端的效率,还有哪些需要解决的问题:

image-707f31989aa646f8bf117e951b7df372.png-imageStyle
  • 数据准备:数据集管理、数据质量分析、数据集加速
  • 模型开发:依赖管理,实验管理、Debugging、模型评估
  • 模型部署:模型打包、A/B Testing、模型监控

上述问题可以通过提供一系列开发流程的最佳实践来解决,也需要配套一些效率工具,最终目标让机器学习流程更加顺畅,更加丝滑,更加自动化。让数据科学家专注数据准备,算法科学家专注模型开发,工程的问题交给平台就好了。这些最佳实践和效率工具的组合就是Machine Learning Ops(MLOps)。用一句话来概括,MLOps就是以模型为中心的机器学习生命周期管理。

image-ce0aea2a6ed84701a1df864d0463b7b5.png-imageStyle
image-25098ce3f3954da9bc7372cadba80a4b.png-imageStyle

总结与展望

PAI作为AI工程平台,是联通算法创造力和业务生产力之间的桥梁。我们愿意将该桥梁搭建好,一方面支持算法快速创新,另一方面也支持应用快速落地。

今天的分享就到这里,谢谢大家。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK