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

相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1天前
|
机器学习/深度学习 数据挖掘 定位技术
多元线性回归:机器学习中的经典模型探讨
多元线性回归是统计学和机器学习中广泛应用的回归分析方法,通过分析多个自变量与因变量之间的关系,帮助理解和预测数据行为。本文深入探讨其理论背景、数学原理、模型构建及实际应用,涵盖房价预测、销售预测和医疗研究等领域。文章还讨论了多重共线性、过拟合等挑战,并展望了未来发展方向,如模型压缩与高效推理、跨模态学习和自监督学习。通过理解这些内容,读者可以更好地运用多元线性回归解决实际问题。
|
13天前
|
机器学习/深度学习 人工智能 自然语言处理
PAI Model Gallery 支持云上一键部署 DeepSeek-V3、DeepSeek-R1 系列模型
DeepSeek 系列模型以其卓越性能在全球范围内备受瞩目,多次评测中表现优异,性能接近甚至超越国际顶尖闭源模型(如OpenAI的GPT-4、Claude-3.5-Sonnet等)。企业用户和开发者可使用 PAI 平台一键部署 DeepSeek 系列模型,实现 DeepSeek 系列模型与现有业务的高效融合。
|
1月前
如何看PAI产品下训练(train)模型任务的费用细节
PAI产品下训练(train)模型任务的费用细节
85 6
|
1月前
|
机器学习/深度学习 安全 PyTorch
FastAPI + ONNX 部署机器学习模型最佳实践
本文介绍了如何结合FastAPI和ONNX实现机器学习模型的高效部署。面对模型兼容性、性能瓶颈、服务稳定性和安全性等挑战,FastAPI与ONNX提供了高性能、易于开发维护、跨框架支持和活跃社区的优势。通过将模型转换为ONNX格式、构建FastAPI应用、进行性能优化及考虑安全性,可以简化部署流程,提升推理性能,确保服务的可靠性与安全性。最后,以手写数字识别模型为例,展示了完整的部署过程,帮助读者更好地理解和应用这些技术。
97 20
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
云上一键部署 DeepSeek-V3 模型,阿里云 PAI-Model Gallery 最佳实践
本文介绍了如何在阿里云 PAI 平台上一键部署 DeepSeek-V3 模型,通过这一过程,用户能够轻松地利用 DeepSeek-V3 模型进行实时交互和 API 推理,从而加速 AI 应用的开发和部署。
|
1月前
|
人工智能 物联网
如何将Together AI上基于Qwen2-7B训练的模型部署到ModelScope平台
如何将Together AI上基于Qwen2-7B训练的模型部署到ModelScope平台
82 10
|
1月前
|
机器学习/深度学习 存储 设计模式
特征时序化建模:基于特征缓慢变化维度历史追踪的机器学习模型性能优化方法
本文探讨了数据基础设施设计中常见的一个问题:数据仓库或数据湖仓中的表格缺乏构建高性能机器学习模型所需的历史记录,导致模型性能受限。为解决这一问题,文章介绍了缓慢变化维度(SCD)技术,特别是Type II类型的应用。通过SCD,可以有效追踪维度表的历史变更,确保模型训练数据包含完整的时序信息,从而提升预测准确性。文章还从数据工程师、数据科学家和产品经理的不同视角提供了实施建议,强调历史数据追踪对提升模型性能和业务洞察的重要性,并建议采用渐进式策略逐步引入SCD设计模式。
103 8
特征时序化建模:基于特征缓慢变化维度历史追踪的机器学习模型性能优化方法
|
1月前
|
机器学习/深度学习 人工智能 算法
机器学习算法的优化与改进:提升模型性能的策略与方法
机器学习算法的优化与改进:提升模型性能的策略与方法
276 13
机器学习算法的优化与改进:提升模型性能的策略与方法
|
2月前
|
编解码 机器人 测试技术
技术实践 | 使用 PAI+LLaMA Factory 微调 Qwen2-VL 模型快速搭建专业领域知识问答机器人
Qwen2-VL是一款具备高级图像和视频理解能力的多模态模型,支持多种语言,适用于多模态应用开发。通过PAI和LLaMA Factory框架,用户可以轻松微调Qwen2-VL模型,快速构建文旅领域的知识问答机器人。本教程详细介绍了从模型部署、微调到对话测试的全过程,帮助开发者高效实现定制化多模态应用。
|
2月前
|
机器学习/深度学习 人工智能 算法
人工智能浪潮下的编程实践:构建你的第一个机器学习模型
在人工智能的巨浪中,每个人都有机会成为弄潮儿。本文将带你一探究竟,从零基础开始,用最易懂的语言和步骤,教你如何构建属于自己的第一个机器学习模型。不需要复杂的数学公式,也不必担心编程难题,只需跟随我们的步伐,一起探索这个充满魔力的AI世界。
74 12