写点什么

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

作者:York
  • 2023-06-25
    北京
  • 本文字数:2760 字

    阅读完需:约 9 分钟

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

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



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


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


1687662746705735.png


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


1687662773231459.png


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,以及足够的显存大小):


1687662930324307.png


然后,我们需要从 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 内直接从网络下载。


1687662989783181.png


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


1687663029556147.png


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


1687663047238074.png


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


1687663073281786.png


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


1687663091336953.png


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


1687663117434479.png


1687663125488880.png


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


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


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


1687663153854842.png


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


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


1687663184749899.png


1687663191300609.png


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


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


https://huggingface.co/tiiuae/falcon-40b

https://huggingface.co/lmsys/vicuna-13b-delta-v1.1

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

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

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


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


1687663246521496.png


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


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

发布于: 刚刚阅读数: 3
用户头像

York

关注

云原生的美男子YORK 2021-01-07 加入

云原生技术社区为云原生技术实践联盟(CNBPA)旗下技术社区,专注泛云原生全栈云前沿技术和落地实践的布道。分享容器、Kubernetes、DevOps、Service Mesh、Serverless、数据库、中间件等技术干货。

评论

发布
暂无评论
AIGC时代,基于云原生 MLOps 构建属于你的大模型(下)_机器学习_York_InfoQ写作社区