PAI x ModelScope: 在PAI使用ModelScope模型

简介: 在当前的人工智能领域,特别是大语言模型、文生图等领域,基于预训练模型完成机器学习模型的开发部署已成为重要的应用范式,开发者们依赖于这些先进的开源预训练模型,以简化机器学习应用的开发并加速创新。

引言

在当前的人工智能领域,特别是大语言模型、文生图等领域,基于预训练模型完成机器学习模型的开发部署已成为重要的应用范式,开发者们依赖于这些先进的开源预训练模型,以简化机器学习应用的开发并加速创新。

PAI 是阿里云上端到端的机器学习平台,支持开发者完成机器学习模型的开发部署全生命周期流程。通过与魔搭 ModelScope 社区合作,开发者可以使用预置的 PAI Python SDK 代码模版,轻松地在 PAI 上使用 ModelScope 上丰富的预训练模型,完成模型的开发和部署。

通过 PAI SDK 使用 ModelScope 模型

通过 ModelScope 社区的模型搜索功能,我们可以通过“阿里云PAI SDK部署/训练”过滤选项,找到当前支持使用 SDK 部署/训练的模型。 image.png

通过模型卡片详情页的“部署”和“训练”入口,查看“阿里云PAI SDK部署/训练”,我们可以获取到相应模型的训练或是部署的示例代码。 image.png

开发者可以根据自己的需求,参考代码模版注释和 SDK 文档修改代码后提交执行。

image.png

Qwen1.5-7B-Chat训练和部署示例

Qwen1.5-7B-Chat 是阿里云通义千问系列开源模型的一员,模型性能在同尺寸的模型中属于头部梯队,对推理和微调硬件要求不高,可以直接部署,或是通过微调对模型进行定制优化。

Qwen1.5-7B-Chat模型卡片链接:https://modelscope.cn/models/qwen/Qwen1.5-7B-Chat/summary

以下我们将以Qwen1.5-7B-Chat模型的训练和部署为示例进行介绍。

前提准备

在运行以下示例代码之前,需要完成以下准备:

  • PAI 产品开通

具体请参考文档:

开通PAI并创建默认工作空间_人工智能平台 PAI(PAI)-阿里云帮助中心

注意:模型的训练任务将产生 PAI-DLC 账单费用,创建推理服务将产生 PAI-EAS 账单费用。

  • PAI Python SDK 安装和初始化

在命令行中执行以下命令,完成 SDK 的方案和配置

python -m pip install -U alipai
# 配置鉴权密钥,PAI工作空间等信息
python -m pai.toolkit.config

具体请参考文档:

如何安装和配置PAI Python SDK_人工智能平台 PAI(PAI)-阿里云帮助中心

模型部署

Qwen1.5-7B-Chat 部署的示例模版代码如下:

from pai.common.utils import random_str
from pai.session import get_default_session
from pai.modelscope import ModelScopeModel
sess = get_default_session()
# 创建 ModelScopeModel 对象。
model = ModelScopeModel(
    # 推理服务启动命令
    command=(
        "python webui/webui_server.py --model-path=Qwen/Qwen1.5-7B-Chat "
        "--model-type=qwen2 --backend=vllm "
        # vLLM engine arguments
        " --max-model-len=4096 --gpu-memory-utilization=0.95"
    ),
    # 推理服务镜像
    image_uri=f"eas-registry-vpc.{sess.region_id}.cr.aliyuncs.com/pai-eas/chat-llm-webui:3.0.3-vllm",
)
# 部署创建推理服务
predictor = model.deploy(
    # 服务名称
    service_name=f"ms_serving_{random_str(6)}",
    # 服务使用的机型规格
    instance_type="ecs.gn7i-c8g1.2xlarge",
    options={
        "metadata.enable_webservice": True,
        "metadata.rpc.keepalive": 300000,
        "features.eas.aliyun.com/extra-ephemeral-storage": "30Gi",
    }
)

以上的代码将使用 PAI 提供的大语言模型推理镜像,使用 vLLM 作为推理引擎在 PAI-EAS 上创建一个推理服务实例。

deploy 方法返回的 Predictor 对象指向创建的推理服务,它提供了 predict 方法支持调用推理服务。代码模版中也提供了调用示例,供开发者参考。基于大语言模型部署的推理服务,支持通过OpenAI SDK调用。

# 大语言模型推理服务支持OpenAI API风格
openai_api = predictor.openai()
# 通过OpenAI SDK调用推理服务
resp = openai_api.chat.completions.create(
    model="default",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "What is the meaning of life?"},
    ],
    max_tokens=1024,
)
print(resp.choices[0].message.content)
# 注意测试完成后删除部署的服务,避免产生额外费用
# predictor.delete_service()

模型微调训练

Qwen1.5-7B-Chat 模型的训练代码基于ModelScope Swift,它是 ModelScope 社区提供的轻量级模型训练框架,开发者可以通过一行命令即可完成大语言模型的微调和部署,具体可以参考 ModelScope Swift框架介绍:

https://github.com/modelscope/swift

Qwen1.5-7B-Chat 的训练模版示例代码如下,它将使用指定的机器规格,在 PAI 上执行一个训练任务。训练任务将使用 PAI 上预置的镜像 ModelScope 训练镜像,使用 Swift 框架完成模型的微调训练。

from pai.modelscope.estimator import ModelScopeEstimator
 
# 模型训练超参
hyperparameters = {
    "model_type": "qwen1half-0_5b-chat",
    "sft_type": "lora",
    "tuner_backend": "swift",
    # 模型输出地址,请勿修改,只有该地址下的输出文件才会被保存
    "output_dir": "/ml/output/model/",
    "dtype": "AUTO",
    "dataset": "ms-bench",
    "train_dataset_sample": "5000",
    "num_train_epochs": "2",
    "max_length": "1024",
    "check_dataset_strategy": "warning",
    "lora_rank": "8",
    "lora_alpha": "32",
    "lora_dropout_p": "0.05",
    "lora_target_modules": "ALL",
    "gradient_checkpointing": "True",
    "batch_size": "1",
    "weight_decay": "0.01",
    "learning_rate": "1e-4",
    "gradient_accumulation_steps": "16",
    "max_grad_norm": "0.5",
    "warmup_ratio": "0.03"
}
# 创建 ModelScopeEstimator 对象
est = ModelScopeEstimator(
    # 指定训练脚本的启动命令,通过 $PAI_USER_ARGS 传入所有超参信息,请参考:
    # https://help.aliyun.com/zh/pai/user-guide/submit-a-training-job
    command="swift sft $PAI_USER_ARGS",
    # 任务使用的机型规格
    instance_type="ecs.gn6e-c12g1.3xlarge",
    # 使用相应 modelscope_version 的训练镜像
    modelscope_version="1.13.3",
    hyperparameters=hyperparameters,
    base_job_name="modelscope-sdk-train",
    # 第三方依赖包
    requirements=["ms_swift==2.0.3.post1"],
)
# 提交创建一个训练任务(产生PAI-DLC账单费用)
est.fit(wait=False)
# 创建并打开一个TensorBoard实例
tb = est.tensorboard()
print(tb.app_uri)
# 等待训练作业执行完成
est.wait()
# 查看训练任务所产出的模型地址
print(est.model_data())

以上的代码同时也会在 PAI 上创建一个与作业关联的 TensorBoard 实例,可以通过TensorBoard监控模型的训练进度和性能。

训练任务产出的模型,默认保存到用户的 OSS Bucket,可以通过 ossutils 等工具下载到本地。开发者也可以直接将模型部署到 PAI-EAS 创建一个推理服务,具体可以参考以下的“使用 ModelScope Swift 框架完成大语言模型的微调训练和部署” Notebook 示例。

Notebook示例

开发者可以通过以下Notebook了解更多如何基于 PAI Python SDK 在 PAI 使用 ModelScope 模型的示例。

打开Notebook

示例描述

Github

DSW Gallery

在PAI快速部署ModelScope模型。

Github

DSW Gallery

使用ModelScope Swift框架完成大语言模型的微调训练和部署。

Github

DSW Gallery

基于ModelScope library自定义代码完成ViT图片分类模型的微调训练和部署。

Github

DSW Gallery

在训练作业中使用 TensorBoard

Github

DSW Gallery

提交 PyTorch 分布式作业

参与PAI免费使用

通过参与阿里云免费试用,首次开通PAI的用户可以获得 PAI-DLC(训练服务)和 PAI-EAS(推理服务)免费试用资源包。用户可以在提交训练作业,或是部署推理服务选择免费试用的规格实例,使用免费资源包,具体可以参考阿里云PAI免费试用:https://help.aliyun.com/zh/pai/product-overview/free-quota-for-new-users

PAI-DLC 训练服务支持的免费使用实例类型:

实例规格

CPU

内存

GPU

GPU显存

ecs.g6.xlarge

4

16 GB

-

-

ecs.gn6v-c8g1.2xlarge

8

32 GB

1 * NVIDIA V100

1 * 16 GB

ecs.gn7i-c8g1.2xlarge

8

30 GB

1 * NVIDIA A10

1 * 24 GB

PAI-EAS 推理服务支持的免费试用实例类型:

实例规格

CPU

内存

GPU

GPU显存

ecs.g6.xlarge.limit

4

16 GB

-

-

ecs.gn6i-c8g1.2xlarge.limit

8

31 GB

1 * NVIDIA T4

1 * 8 GB

ecs.gn7i-c8g1.2xlarge.limit

8

30 GB

1 * NVIDIA A10

1 * 24 GB

相关资源链接

  • ModelScope 社区:

https://modelscope.cn/

  • 阿里云免费试用:

https://help.aliyun.com/zh/pai/product-overview/free-quota-for-new-users

  • PAI Python SDK Github:

https://github.com/aliyun/pai-python-sdk

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2天前
|
机器学习/深度学习 算法 数据可视化
机器学习模型中特征贡献度分析:预测贡献与错误贡献
本文将探讨特征重要性与特征有效性之间的关系,并引入两个关键概念:预测贡献度和错误贡献度。
20 3
|
11天前
|
机器学习/深度学习 Python
验证集的划分方法:确保机器学习模型泛化能力的关键
本文详细介绍了机器学习中验证集的作用及其划分方法。验证集主要用于评估模型性能和调整超参数,不同于仅用于最终评估的测试集。文中描述了几种常见的划分方法,包括简单划分、交叉验证、时间序列数据划分及分层抽样划分,并提供了Python示例代码。此外,还强调了在划分数据集时应注意随机性、数据分布和多次实验的重要性。合理划分验证集有助于更准确地评估模型性能并进行有效调优。
|
11天前
|
机器学习/深度学习 人工智能 自然语言处理
机器学习模型之深度神经网络的特点
深度神经网络(Deep Neural Networks, DNNs)是一类机器学习模型,通过多个层级(层)的神经元来模拟人脑的工作方式,从而实现复杂的数据处理和模式识别任务。
14 1
|
19天前
|
机器学习/深度学习 算法 前端开发
R语言基础机器学习模型:深入探索决策树与随机森林
【9月更文挑战第2天】决策树和随机森林作为R语言中基础且强大的机器学习模型,各有其独特的优势和适用范围。了解并熟练掌握这两种模型,对于数据科学家和机器学习爱好者来说,无疑是一个重要的里程碑。希望本文能够帮助您更好地理解这两种模型,并在实际项目中灵活应用。
|
18天前
|
机器学习/深度学习 数据采集 存储
一文读懂蒙特卡洛算法:从概率模拟到机器学习模型优化的全方位解析
蒙特卡洛方法起源于1945年科学家斯坦尼斯劳·乌拉姆对纸牌游戏中概率问题的思考,与约翰·冯·诺依曼共同奠定了该方法的理论基础。该方法通过模拟大量随机场景来近似复杂问题的解,因命名灵感源自蒙特卡洛赌场。如今,蒙特卡洛方法广泛应用于机器学习领域,尤其在超参数调优、贝叶斯滤波等方面表现出色。通过随机采样超参数空间,蒙特卡洛方法能够高效地找到优质组合,适用于处理高维度、非线性问题。本文通过实例展示了蒙特卡洛方法在估算圆周率π和优化机器学习模型中的应用,并对比了其与网格搜索方法的性能。
121 1
|
22天前
|
机器学习/深度学习 PHP 开发者
探索PHP中的面向对象编程构建你的首个机器学习模型:以Python和scikit-learn为例
【8月更文挑战第30天】在PHP的世界中,面向对象编程(OOP)是一块基石,它让代码更加模块化、易于管理和维护。本文将深入探讨PHP中面向对象的魔法,从类和对象的定义开始,到继承、多态性、封装等核心概念,再到实战中如何应用这些理念来构建更健壮的应用。我们将通过示例代码,一起见证PHP中OOP的魔力,并理解其背后的设计哲学。
|
21天前
|
机器学习/深度学习 存储 前端开发
实战揭秘:如何借助TensorFlow.js的强大力量,轻松将高效能的机器学习模型无缝集成到Web浏览器中,从而打造智能化的前端应用并优化用户体验
【8月更文挑战第31天】将机器学习模型集成到Web应用中,可让用户在浏览器内体验智能化功能。TensorFlow.js作为在客户端浏览器中运行的库,提供了强大支持。本文通过问答形式详细介绍如何使用TensorFlow.js将机器学习模型带入Web浏览器,并通过具体示例代码展示最佳实践。首先,需在HTML文件中引入TensorFlow.js库;接着,可通过加载预训练模型如MobileNet实现图像分类;然后,编写代码处理图像识别并显示结果;此外,还介绍了如何训练自定义模型及优化模型性能的方法,包括模型量化、剪枝和压缩等。
27 1
|
24天前
|
机器学习/深度学习
机器学习回归模型相关重要知识点总结
机器学习回归模型相关重要知识点总结
|
23天前
|
机器学习/深度学习 人工智能 Android开发
揭秘AI编程:从零开始构建你的第一个机器学习模型移动应用开发之旅:从新手到专家
【8月更文挑战第29天】本文将带你走进人工智能的奇妙世界,一起探索如何从零开始构建一个机器学习模型。我们将一步步解析整个过程,包括数据收集、预处理、模型选择、训练和测试等步骤,让你对AI编程有一个全面而深入的理解。无论你是AI初学者,还是有一定基础的开发者,都能在这篇文章中找到你需要的信息和启示。让我们一起开启这段激动人心的AI编程之旅吧! 【8月更文挑战第29天】在这篇文章中,我们将探索移动应用开发的奇妙世界。无论你是刚刚踏入这个领域的新手,还是已经有一定经验的开发者,这篇文章都将为你提供有价值的信息和指导。我们将从基础开始,逐步深入到更复杂的主题,包括移动操作系统的选择、开发工具的使用、
|
3天前
|
机器学习/深度学习 数据采集 算法
机器学习新纪元:用Scikit-learn驾驭Python,精准模型选择全攻略!
在数据爆炸时代,机器学习成为挖掘数据价值的关键技术,而Scikit-learn作为Python中最受欢迎的机器学习库之一,凭借其丰富的算法集、简洁的API和高效性能,引领着机器学习的新纪元。本文通过一个实际案例——识别垃圾邮件,展示了如何使用Scikit-learn进行精准模型选择。从数据预处理、模型训练到交叉验证和性能比较,最后选择最优模型进行部署,详细介绍了每一步的操作方法。通过这个过程,我们不仅可以看到如何利用Scikit-learn的强大功能,还能了解到模型选择与优化的重要性。希望本文能为你的机器学习之旅提供有价值的参考。
8 0

热门文章

最新文章