文档

Modelscope镜像部署

更新时间:

EAS提供了Modelscope预置镜像用于快速部署魔搭社区模型,并针对模型分发和镜像拉起做了加速机制。您只需配置几个参数,就可以将社区模型一键快捷的部署到EAS模型在线服务平台。本文为您介绍如何部署ModelScope的社区模型。

背景信息

ModelScope旨在打造下一代开源的模型即服务共享平台,为广泛AI开发者提供灵活、易用、低成本的一站式模型服务产品,使模型应用变的更简单。

对于部署到EAS的Modelscope社区中的模型,可以分为普通模型和大语言对话模型,由于加载和使用方式的不同,两种模型的部署和调用方式稍有区别,详情请参见:

普通模型

Modelscope社区中的大部分模型都可以通过Pipeline定义和调用,这些模型即为普通模型。使用普通模型的通用操作流程如下:

步骤一:选择模型

在官方库中选择要部署的模型,本文以机器翻译模型为例,进入damo/nlp_csanmt_translation_en2zh模型页面,分别获取MODEL_ID、TASK、REVISION的值并保存到本地。

  • MODEL_ID:模型ID。image.png

  • TASK:模型对应的TASK。image

  • REVISION:模型版本。

    说明

    需要配置为一个确定的模型版本,例如:v1.0.1或v1.0.0,不能配置为master。

    image.png

  • (可选)ACCESS_TOKEN:SDK访问令牌。

    当需要部署非公开模型时,需要填写SDK访问令牌以获取模型。请在ModelScope首页的左侧导航栏中,单击访问令牌,在该页面获取SDK令牌。在后续部署服务时,您需要将SDK令牌配置到环境变量中。image.png

步骤二:部署模型

在PAI-EAS模型在线服务页面,部署ModelScope模型。具体操作步骤如下:

  1. 进入部署服务页面,配置以下关键参数,其他参数配置详情,请参见服务部署:控制台image.png

    参数

    描述

    服务名称

    参照界面提示自定义配置服务名称。

    部署方式

    选择镜像部署AI-Web应用

    镜像选择

    PAI平台镜像列表中选择modelscope-inference;镜像版本选择最高版本。

    环境变量

    配置以下参数为步骤一中查询的结果:

    • MODEL_ID:damo/nlp_csanmt_translation_en2zh。

    • TASK:translation。

    • REVISION:v1.0.1。

    如果部署非公开模型,您需要新增一个环境变量配置访问令牌:

    • 变量名:配置为ACCESS_TOKEN

    • 变量值:配置为已获取的SDK访问令牌。

    运行命令

    配置镜像版本后,系统会自动配置运行命令,您无需修改配置。

  2. 单击部署。当服务状态变为运行中时,表明服务已部署成功。

步骤三:调用服务

启动WebUI调用模型服务

  1. 服务部署成功后,单击服务方式列下的查看Web应用

  2. 在WebUI页面左侧测试内容文本框中输入请求数据,单击执行测试,在测试结果文本框中返回结果。image.png

    WebUI页面右侧为输入数据的Schema,如果发送了请求之后,会显示输入输出的真实数据内容。您可以根据Schema和JSON内容,构造请求数据,来调用模型服务。

通过API接口调用模型服务

为了方便演示,以在线调式为例为您说明调用方式和返回结果:

  1. PAI-EAS模型在线服务页面,单击目标服务操作列下的在线调试。如果您不清楚该模型对应的数据格式,可以直接在在线调试页面单击发送请求,获得如下图所示的请求数据格式。image

  2. 您可以参考实际返回结果中Body后的请求数据格式自行构造请求数据。以上图为例,您可以在左侧Body下的文本框中输入{"input": {"text": "Deploying ModelScope models on PAI-EAS is simple and easy to use"}},单击发送请求,获得如下预测结果。image

您可以使用PAI提供的SDK或curl命令发送POST请求,详情请参见服务调用SDK。您也可以自行编写代码调用模型服务,具体操作步骤如下:

  1. 获取服务的访问地址和Token。

    1. PAI-EAS模型在线服务页面,单击服务名称,进入服务详情页面。

    2. 在服务详情页面,单击基本信息区域的查看调用信息

      公网地址调用页签,获取服务的访问地址和Token。

  2. 调用模型服务。

    您可以使用PAI提供的SDK或curl命令发送POST请求,详情请参见服务调用SDK。您也可以自行编写代码调用模型服务,示例代码如下:

    import requests
    import json
    
    service_url = 'YOUR_SERVICE_URL'
    token = 'YOUR_SERVICE_TOKEN'
    
    resp = requests.post(service_url,
                         headers={"Authorization": token},
                        data=json.dumps({"input": {"text": "Deploying ModelScope models on PAI-EAS is simple and easy to use"}}))
    
    print(resp.text) # 输出为模型的输出结果。
    
    

    其中:

    • service_url:配置为已获取的服务访问地址。

    • token:配置为已获取的服务Token。

更多参考案例

上述示例以文本模型为例,EAS同样支持语音或图像领域的模型。您可以参照上述步骤部署语音类和图像类模型,以及调用模型来验证模型效果。

  • 语音合成tts模型:damo/speech_sambert-hifigan_tts_zh-cn_16k。示例效果如下图所示:image.png

  • 图像相关的人像美肤模型:damo/cv_unet_skin-retouching。示例效果如下图所示:image.png

    对于图像类模型,输入需要传入图片的Base64编码或图片的URL地址。如果选择使用URL地址作为输入,需要确保部署的服务具有公网访问权限,详情请参见公网连接及白名单配置

    调用代码示例如下,该代码下载了一张公开的图像,将其转换为Base64编码,并将其作为请求的内容发送到已部署的服务接口,以获取模型输出的结果。

    import requests
    import json
    import base64
    
    service_url = 'YOUR_SERVICE_URL'
    token = 'YOUR_SERVICE_TOKEN'
    
    with requests.get('https://modelscope.oss-cn-beijing.aliyuncs.com/test/images/retina_face_detection.jpg') as img_url:
        img = img_url.content
        img_base64encoded = base64.b64encode(img)
        request = {"input": {"image": img_base64encoded.decode()}}
        request_data = json.dumps(request)
        resp = requests.post(service_url,
                             headers={"Authorization": token},
                             data=request_data)
                            # 传入图片URL需要服务开通公网访问权限。
                            # data=json.dumps({"input": {"image": 'https://modelscope.oss-cn-beijing.aliyuncs.com/test/images/retina_face_detection.jpg'}}))
    
    
        print(resp.text) # 输出为模型的输出结果。
    

    其中:

    • service_url:配置为已获取的服务访问地址。

    • token:配置为已获取的服务Token。

  • 图像人脸融合模型:damo/cv_unet-image-face-fusion_damo。示例效果如下图所示:image.png

大语言对话模型

目前支持一键部署的大语言对话模型列表,请参见附录:目前支持一键部署的大语言对话模型列表。使用大语言对话模型的通用流程如下:

步骤一:部署模型

  1. 进入部署服务页面,配置以下关键参数,其他参数配置详情,请参见服务部署:控制台

    参数

    描述

    服务名称

    参照界面提示自定义配置服务名称。

    部署方式

    选择镜像部署AI-Web应用

    镜像选择

    PAI平台镜像列表中选择modelscope-inference,版本选择1.9.1及其以上版本。

    环境变量

    MODEL_ID配置详情请参见附录:目前支持一键部署的大语言对话模型列表TASK均配置为chat。您需要参考步骤一:选择模型来查询REVISION的配置。以chatglm系列模型为例:

    • MODEL_ID:ZhipuAI/chatglm2-6b。

    • TASK:chat。

    • REVISION:v1.0.11。

    如果部署非公开模型,您需要新增两个环境变量用来配置访问令牌和MODEL_TYPE:

    运行命令

    配置镜像版本后,系统会自动配置运行命令,您无需修改配置。

    资源配置选择

    本方案选择ml.gu7i.c16m60.1-gu30

    由于大语言模型的体积通常较大,并且对于GPU的要求较高,建议根据实际模型需求选择合适的GPU资源。

    针对7B模型,建议选择GU30系列机型。对于更大的模型,可能需要考虑双卡机型或拥有更大显存的机型,请按实际需求选择。

  2. 单击部署。当服务状态变为运行中时,表明服务已部署成功。

步骤二:调用服务

大语言对话模型同样支持WebUI和API接口两种调用方式。

启动WebUI调用模型服务

服务部署成功后,单击服务方式列下的查看Web应用,即可打开一个类似下图页面的对话窗口,在该页面可以直接开始对话。image.png

通过API接口调用模型服务

  1. 获取服务的访问地址和Token。

    1. PAI-EAS模型在线服务页面,单击服务名称,进入服务详情页面。

    2. 在服务详情页面,单击基本信息区域的查看调用信息

      公网地址调用页签,获取服务的访问地址和Token。

  2. 调用模型服务。

    您可以使用PAI提供的SDK或curl命令发送POST请求,详情请参见服务调用SDK。您也可以自行编写代码调用模型服务,示例代码如下:

    import requests
    import json
    
    service_url = 'YOUR_SERVICE_URL'
    token = 'YOUR_SERVICE_TOKEN'
    
    request = {"prompt": "浙江的省会是哪里?", "history": []}
    
    resp = requests.post(service_url,
                         headers={"Authorization": token},
                        data=json.dumps(request))
    
    result = json.loads(resp.text)
    response = result['response']
    print(json.loads(resp.text)['response']) # 浙江的省会是杭州。
    
    request = {"prompt": "江苏呢?", "history": result['history']}
    
    
    resp = requests.post(service_url,
                         headers={"Authorization": token},
                        data=json.dumps(request))
    
    
    result = json.loads(resp.text)
    response = result['response']
    print(response) # 江苏的省会是南京。

    其中:

    • service_url:配置为已获取的服务访问地址。

    • token:配置为已获取的服务Token。

    • request:对话模型的输入,格式为JSON。

      {"prompt":"福建呢?","history":[["浙江的省会是哪里?","杭州"],["江苏呢?","南京"]]}
      • prompt:对话模型的输入语句。

      • history:对话历史,格式为一个二维列表。第一维列表中每个元素为一个长度为2的列表,表示每一轮对话的问题和回答,可以直接从上次对话中获取,以实现连续对话。您也可以截取该列表的长度以限制上下文对话轮数。

    输出结果为JSON格式,示例如下:

    {"response":"福州","history":[["浙江的省会是哪里?","杭州"],["江苏呢?","南京"],["福建呢?","福州"]]}

    其中:

    • response:为对话模式的回答。

    • history:含义与request请求字段中的history描述相同,可以直接带入下一轮对话。

为了方便演示,以在线调式为例为您说明调用方式和返回结果:

  1. PAI-EAS模型在线服务页面,单击目标服务操作列下的在线调试

  2. 在调试页面的在线调试请求参数区域的Body处填写{"prompt":"福建呢?","history":[["浙江的省会是哪里?","杭州"],["江苏呢?","南京"]]},然后单击发送请求,即可在调式信息区域查看预测结果。image.png

附录:目前支持一键部署的大语言对话模型列表

类型

MODEL_TYPE

MODEL_ID

llama系列

llama

  • modelscope/Llama-2-13b-chat-ms

  • modelscope/Llama-2-7b-chat-ms

  • modelscope/Llama2-Chinese-7b-Chat-ms

baichuan系列

baichuan

  • baichuan-inc/Baichuan2-13B-Chat

  • baichuan-inc/Baichuan2-7B-Chat

  • baichuan-inc/Baichuan2-7B-Chat-4bits

  • baichuan-inc/Baichuan2-13B-Chat-4bits

浦语系列

internlm

  • Shanghai_AI_Laboratory/internlm-chat-7b-v1_1

  • Shanghai_AI_Laboratory/internlm-chat-20b

  • Shanghai_AI_Laboratory/internlm-chat-7b

  • Shanghai_AI_Laboratory/internlm-chat-7b-8k

chatglm系列

glm

  • ZhipuAI/ChatGLM-6B

  • ZhipuAI/ChatGLM-6B-Int4

  • ZhipuAI/chatglm2-6b

  • ZhipuAI/chatglm2-6b-32k

  • ZhipuAI/chatglm2-6b-int4

qwen系列

qwen

  • qwen/Qwen-7B-Chat

  • qwen/Qwen-14B-Chat

相关文档

  • 本页导读 (1)
文档反馈