AIGC时代,基于云原生 MLOps 构建属于你的大模型(下)

news2024/11/17 1:53:15

为了满足企业在数字化转型过程中对更新迭代生产力工具的需求,灵雀云近日推出了Alauda MLOps 解决方案,帮助企业快速落地AI技术、实现智能化应用和服务。


AIGC大模型已成为企业创新引擎

随着ChatGPT的爆火,越来越多的人考虑使用AI来提升我们日常工作的效率和质量,通过对话协助生成需要的文本数据。无论是将数据汇总成表格,还是根据提示编写文章,或者进行专业知识问答,都可以通过合适的prompt工程,让ChatGPT给出最佳的回答,甚至可以取代一部分人类的工作。

此外,AI 生成的内容不仅限于文本数据,还包括 AI 绘画(stable diffusion),乐曲创作(Amper Music),电影生成(Runway)等工具,这些都是 AIGC( AI Generated Content) 的范畴,它们也在不断刷新许多行业的生产力。

Alauda MLOps助力企业快速构建属于自己的大模型


然而,企业需要一个自己拥有并管控的本地部署的模型来完成上述工作,因为这样可以保证:


· 安全因素:在进行对话时,企业不希望把企业内部数据发送到互联网上的 AI 模型;

· 功能定制:希望使用自己的数据,增强模型在特定场景的能力(fine tunning);

· 内容审查:根据法律法规要求,对输入、输出内容进行二次过滤。


那么,在这样的场景下,企业如何快速搭建、定制这样的模型呢?答案是使用云原生 MLOps + 公开模型!


根据OpenAI公司的介绍,其在训练ChatGPT / GPT-4等超大规模模型时,使用了Azure + MPI的大规模 GPU 计算集群。在私有云原生环境,使用MLOps工具链,企业同样可以拥有可以横向扩展的大规模机器学习算力。在使用MLOps平台时,可以获得如下的提升:


· 更适合大规模预训练模型的训练和预测流程;

· 降低对大模型的应用门槛:内置使用预训练大模型教程流程,一步上手;

· 完善的常规机器学习,深度学习平台;

· 使用流水线+调度器统一编排大规模分布式训练任务,支持自定义各种分布式训练方法和框架,包括 DDP、Pipeline、ZERo、FSDP;

· 流程自定义:根据实际业务,选择 MLOps 工具链条中的子集,构建合适的业务流程;

· 完善的MLOps平台:提供顺畅、完整的MLOps工具链。


接下来,我们以Alauda MLOps平台为例,介绍如何在此之上基于LLaMa预训练模型的chat模型(lora)来构建属于你的“ChatGPT”,定制并启动一个LLM对话模型。


此外,使用其他HuggingFace预训练模型,也可以快速构建自己的模型,如Vicuna、 MPT等模型,请感兴趣的读者自行尝试。


· 获取方式 ·

企业版MLOps:

https://www.alauda.cn/open/detail/id/740.html

开源版MLOps:

https://github.com/alauda/kubeflow-chart

如何在云原生MLOps下完成大规模预chat模型的定制和部署?

首先,我们需要启动一个Notebook环境,并为其分配必要的GPU资源(实测中,训练 alpaca 7b 半精度模型需要4块 K80,或一块 4090,以及足够的显存大小):


 


 

然后,我们需要从github和hugging face准备对应的代码和模型文件。


· 下载项目:https://github.com/tloen/alpaca-lora,然后拖拽上传到Notebook文件导航栏。也可以在Notebook内使用命令行执行git clone下载;

· 下载语言模型预训练 weights:https://huggingface.co/decapoda-research/llama-7b-hf,并拖拽上传到Notebook中。也可以在Notebook中使用 git lfs clone下载模型;

· 下载lora模型预训练 weights: https://huggingface.co/tloen/alpaca-lora-7b,并拖拽上传到Notebook中。也可以在Notebook中使用git lfs clone下载模型。


这里上传较大的模型会有较长的等待时间,如果和huggingface网络连接良好,可以选择在Notebook内直接从网络下载。


接着,我们先使用刚才下载的预训练模型,启动一个AI对话web应用验证效果,挂载Notebook使用的磁盘以读取这些模型文件:

然后我们就可以使用以上yaml配置或者原生应用创建表单方式创建预测服务。注意推理服务只需要使用1块 K80 GPU 即可启动。


这里我们使用的镜像使用如下Dockerfile构建:


等待推理服务启动完成,我们就可以在浏览器中访问,并和这个模型开始做各种对话的尝试。由于alpaca-lora模型对中文支持的不够完善,尽管可以输入中文,但输出大多仍为英文。然而,该模型在一定程度上已经展现出了较好的能力。


最后,我们可以使用自己标注的数据,对模型进行优化和定制(finetunning)。根据alpaca-lora项目的说明,参考如下训练数据的格式,增加finetune的训练数据,然后开始训练。此时模型训练只会更新模型中的少量参数,基础的预训练语言模型(LLM)参数不会被更新,以保留LLM强大的底座能力。


以上为在Notebook中直接训练,如果训练任务有逐步复杂的流水线,可以将训练python程序定制成如下流水线并提交集群运行。如果任务是多机多卡+模型并行训练框架,也可以通过配置训练节点的个数,并在python代码中根据框架实现对应分布式计算代码即可,不需要根据 MLOps流水线调度做任何代码改造。


以上为在Notebook中直接训练,最多只能使用一台物理节点上的所有GPU卡。如果训练任务有跨物理节点分布式训练的需求,可以将训练的Python程序构建成如下流水线并提交集群运行。


注意MLOps支持直接在任务流水线中构建分布式训练步骤,不同于Kubeflow Training Operator的模式需要用户定义在Kubernetes上训练的TFJob, PytorchJob的YAML配置文件,拖拽之后的Python程序作为一个工作流的步骤,可以单独设置这个节点的并行度,即流水线的ParallelFor元语。这样不论是数据并行(DDP),流水线并行(PipelineParallel),FSDP,还是其他分布式训练方法,以及使用任意框架如 transformers, accelerate 完成的训练,都可以在流水线内定制。

此外,在MLOps平台构建的分布式训练流水线,可以选择使用Volcano调度器完成GPU和Pod的调度,防止多个任务相互占用资源导致的资源浪费。

这样,我们在拖拽Python代码之后,需要配置这个任务的并行度,每个节点需要的CPU,内存,显卡的资源,运行时的镜像,然后点击界面上的 “提交运行” 按钮,就可以启动这个任务,并检查任务的运行状态。


在执行完成finetunning训练,就可以参照上面的步骤使用新的模型启动推理服务开始验证了。这时您已经拥有了一个属于自己的“ChatGPT”!!!


当然,如果您觉得当前的 7b (70亿参数规模的模型) 能力有限,也可以尝试更大的模型,如13B、30B、65B等,也可以使用alpaca-lora以外的模型结构实现,比如:


tiiuae/falcon-40b · Hugging Face

lmsys/vicuna-13b-delta-v1.1 · Hugging Face

https://huggingface.co/mosaicml/mpt-7b-chat

https://github.com/ymcui/Chinese-LLaMA-Alpaca

https://huggingface.co/THUDM/chatglm-6b


此外,值得一提的是,我们会在未来的版本中支持更加流畅的大模型的训练和预测方式(如下图),请及时关注我们的更新。


如果希望验证这些公开模型的能力,或者创造自己的ChatGPT,这些就交由云原生MLOps平台来帮助您完成吧~

上一篇:AIGC时代,基于云原生 MLOps 构建属于你的大模型(上)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/682527.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python机器学习——回归模型评估方法 回归算法(线性回归、L2岭回归)

目录 回归模型评价方法【回归】线性回归模型1.线性模型2.线性回归3.损失函数(误差大小)4.解决方法1) 最小二乘法之正规方程2) 最小二乘法之梯度下降 5.代码实现5.模型保存与加载6.特点 实例:波士顿房价【回归】带有L2正则化的岭回归 回归模型…

C++初阶之类和对象(上)

类和对象(上) 1、面向过程和面向对象初步认识2、类的引入3、类的定义4、类的访问限定符及封装4.1 访问限定符4.2 封装 5、类的作用域6、类的实例化7、类对象模型7.1 如何计算类对象的大小 8.this指针8.1 this指针的引出8.2 this指针的特性8.3. C语言和C实…

Python开发工具PyCharm 2023.1发布,这些新功能都值得期待!

PyCharm 2023.1 现已正式发布!今年的第一个主要版本带来了对远程Jupyter Notebook的支持、对新UI的增强、改进的泛型类型推断等。 JetBrains PyCharm是一种Python IDE,其带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具。此外&#xff0…

SpringBoot 使用 Testcontainers 进行容器化集成测试

SpringBoot 使用 Testcontainers 进行容器化集成测试 容器化集成测试是测试应用程序与其依赖项之间的集成,其中依赖项以容器的形式运行。SpringBoot提供了Testcontainers来测试应用程序与依赖项之间的集成,本文将介绍如何使用Testcontainers进行容器化集…

详细解说一次性低代码和持续化低代码的关键区别在哪里

为什么很多开发团队吐槽低代码开发平台,其中大致归结了几个方面的原因: 1、使用过后会降低对技术的依赖度,工具人的倾向更加严重 2、目前大部分的低代码都是一次性的低代码,仅仅是在第一次构建模型的时候,可以生成一…

CDC介绍

CDC介绍 1 CDC Change Data Capture:定义了一种场景,即识别并捕获数据库表中数据的变更,并交付给下游进一步处理。CDC是对针对行级数据记录的。其中数据的变更信息,即 CDC 的数据结构,包括变更是什么样的操作&#x…

《JDK8特性深入讲解》学习笔记

Lambda表达式 如果不适用lambda表达式的话,可以使用匿名内部类,但是代码会显得有点多 lambda表达式其实就是匿名内部类 Lambda表达式简化了匿名内部类的使用,语法更加简单。 语法规则 (参数类型 参数名称) -> {代码体; } Lambda表达…

Unreal 5 实现Data Table 数据表格的使用

数据是一个游戏重要的组成部分,按分工,数据会交由策划去配置,所以,你的数据不可能直接写到蓝图里面,而是有一个专门的数据表格去配置。 大家通用的方式是策划在Excel内编辑完成,然后通过工具生成游戏需要使…

RabbitMQ安装以及SpringBoot整合RabbitMQ

SpringBootMQ整合Rabbit RabbitMQ安装以及SpringBoot整合 1、Docker安装RabbitMQ #拉取rabbitmq镜像 docker pull rabbitmq#启动RabbitMQ docker run -d --hostname my-rabbit --name rabbit -p 15672:15672 -p 5672:5672 rabbitmq#安装图形化插件 #进入容器 docker exec -i…

ubantu16.04搭建Qt环境

目录 ubantu16.04搭建Qt环境 下载opensource 安装qmake 安装g以及依赖库 配置环境 编译原码 安装make 查看qmake是否安装 配置环境变量 qmake编译c/c代码 安装qtcreator Linux编译Qt代码 ubantu16.04搭建Qt环境 下载opensource 「下载 qt-everywhere-opensource-s…

用于配电室的内部环境监控系统设计与产品选型

摘要:配电室是配电系统的重要组成部分,影响着电力用户的用电需求,需要保障其安全、可靠运行。针对配电室内部环境进行了深入分析,设计了一种内部环境监控系统。通过该系统可以采集配电室内部的温度、湿度、液位、SF6气体和烟雾&am…

伪随机码详解

本专栏包含信息论与编码的核心知识,按知识点组织,可作为教学或学习的参考。markdown版本已归档至【Github仓库:https://github.com/timerring/information-theory 】或者公众号【AIShareLab】回复 信息论 获取。 文章目录 伪随机码伪随机序列…

期末复习【网络安全】

期末复习【网络安全】 前言推荐期末复习第1章 引言1.1 计算机安全概念1.2 OSI安全体系结构 61.3 安全攻击 71.3.1 被动攻击1.3.2 主动攻击 第2章 对称加密和消息机密性2.1 对称加密原理 232.1.3 Feistel密码结构 25 2.2 对称分组加密算法 272.2.1 数据加密标准2.2.2 三重DES2.2…

【C#】并行编程实战:任务并行性(下)

本章继续介绍任务并行性,因篇幅所限,本章为下篇。 6、处理任务异常 所有优秀的程序员都擅长高效地处理异常,这也是并行编程最重要的方面之一。任务并行库(TPL)提供了一种高效的设计来处理异常:任务中发生的…

山西电力市场日前价格预测【2023-06-26】

日前价格预测 预测明日(2023-06-26)山西电力市场全天平均日前电价为395.92元/MWh。其中,最高日前价格为477.34元/MWh,预计出现在19: 00。最低日前电价为309.90元/MWh,预计出现在13: 00。以上预测仅供学习参考&#xff…

Android中的EventBus变迁史

Android中的EventBus变迁史 什么是EventBus? EventBus是软件架构中使用的一种通信机制,用于促进系统内不同组件或服务之间的事件交换。它为组件提供了一种发布和订阅事件的方法,从而实现松散耦合和异步通信。 EventBus充当中央集线器或消息…

SpringBoot 性能优化的主要组件及特点

SpringBoot 性能优化的主要组件及特点 简介 在开发应用程序时,性能是一个非常重要的因素。如果应用程序的性能不佳,那么它可能会影响用户的体验,甚至会导致系统崩溃。而在 SpringBoot 应用程序中,我们可以通过一些组件来优化应用…

PCB板为什么要做表面处理?你知道吗

PCB板为什么要做表面处理? 由于PCB上的铜层很容易被氧化,因此生成的铜氧化层会严重降低焊接质量,从而降低最终产品的可靠性和有效性,为了避免这种情况的发生,需要对PCB进行表面处理。 常见的表面处理方式包括OSP、喷…

Java虚拟机(JVM)面试题

JVM 说一下 JVM 的主要组成部分及其作用? 总体来说,方法区和堆是所有线程共享的内存区域;而虚拟机栈、本地方法栈和程序计数器的运行是线程私有的内存区域,运行时数据区域就是我们常说的JVM的内存 类加载子系统:根据…

SpringBoot 使用 MockMvc 进行 Web 集成测试

SpringBoot 使用 MockMvc 进行 Web 集成测试 在 SpringBoot 应用程序中,我们可以使用 MockMvc 进行 Web 集成测试。MockMvc 是一个测试框架,可以模拟 HTTP 请求和响应,并且可以使用 Spring MVC 的控制器进行测试。MockMvc 可以让我们测试 Sp…