更新时间:2024-12-16 GMT+08:00
分享

调用MaaS部署的模型服务

在ModelArts Studio大模型即服务平台部署成功的模型服务支持在其他业务环境中调用。

约束限制

只有“状态”“运行中”的模型服务才支持被调用。

步骤1:获取API Key

在调用MaaS部署的模型服务时,需要填写API Key用于接口的鉴权认证。

  1. 登录ModelArts管理控制台。
  2. 在左侧导航栏中,选择“ModelArts Studio”进入ModelArts Studio大模型即服务平台。
  3. 在ModelArts Studio左侧导航栏中,选择“鉴权管理”
  4. 在“鉴权管理”页面,单击“创建API Key”,填写描述信息后,单击“确认”会返回“您的密钥”,请复制保存密钥,单击“关闭”后将无法再次查看密钥。
    • 最多支持创建5个密钥,密钥只会在新建后显示一次,请妥善保存。
    • 当密钥丢失将无法找回,请新建API Key获取新的访问密钥。

步骤2:调用MaaS模型服务进行预测

  1. 在ModelArts Studio左侧导航栏中,选择“模型部署”进入服务列表。
  2. 选择“我的服务”页签。
  3. 选择要调用的服务,单击操作列的“更多 > 调用”弹出调用页面。
  4. 选择是否启用内容审核,默认启用。
    • 是,内容审核可以阻止模型推理中的输入输出中出现不合规的内容,但可能会对接口性能产生较大影响
    • 否,停用内容审核服务,将不会审核模型推理中的输入输出,模型服务可能会有违规风险,请谨慎关闭。

      关闭“内容审核”开关,需要在弹窗中确认是否停用内容审核服务,勾选后,单击“确定”关闭。

  5. 复制调用示例,修改参数后用于业务环境调用模型服务API。

    示例代码如下所示:

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
        # coding=utf-8
    
        import requests
        import json
    
        if __name__ == '__main__':
            url = "xxxxxxxxxx/v1/chat/completions"
            
            # Send request.
            headers = {
                'Content-Type': 'application/json',
                'Authorization': 'Bearer yourApiKey'  # 把yourApiKey替换成已获取的API Key。例如,获取的API Key是“1234abcd...”时,此处填写“Bearer 1234abcd...”。
            }
            data = {
                "model": "Qwen2-7B",  # 调用时的模型名称
                "max_tokens": 20,
                "stream_options":{"include_usage":true},
                "messages": [
                    {"role": "system", "content": "You are a helpful assistant."},
                    {"role": "user", "content": "hello"}
                ]
            }
            resp = requests.post(url, headers=headers, data=json.dumps(data), verify=False)
    
            # Print result.
            print(resp.status_code)
            print(resp.text)
    

    模型服务的API与vLLM相同,表1仅介绍关键参数,详细参数解释请参见vLLM官网Sampling Parameters使用昇腾云909镜像的模型,开启流式输出时,需要新增stream_options参数,值为{"include_usage":true},才会打印token数。

    表1 请求参数说明

    参数

    是否必选

    默认值

    参数类型

    描述

    model

    Str

    调用时的模型名称。

    在ModelArts Studio大模型即服务平台的“模型部署”页面,选择调用的模型服务,单击操作列的“更多 > 调用”,在调用页面可以获取“模型名称”

    messages

    -

    Array

    请求输入的问题。

    max_tokens

    16

    Int

    每个输出序列要生成的最大Tokens数量。

    top_k

    -1

    Int

    控制要考虑的前几个Tokens的数量的整数。设置为“-1”表示考虑所有Tokens。

    适当降低该值可以减少采样时间。

    top_p

    1.0

    Float

    控制要考虑的前几个Tokens的累积概率的浮点数。

    取值范围:0~1

    设置为“1”表示考虑所有Tokens。

    temperature

    1.0

    Float

    控制采样的随机性的浮点数。较低的值使模型更加确定性,较高的值使模型更加随机。“0”表示贪婪采样。

    stop

    None

    None/Str/List

    用于停止生成的字符串列表。返回的输出将不包含停止字符串。

    例如,设置为["你","好"]时,在生成文本过程中,遇到“你”或者“好”将停止文本生成。

    stream

    False

    Bool

    是否开启流式推理。默认为“False”,表示不开启流式推理。

    n

    1

    Int

    返回多条正常结果。

    • 不使用beam_search场景下,n取值建议为1≤n≤10。如果n>1时,必须确保不使用greedy_sample采样,也就是top_k > 1,temperature > 0。
    • 使用beam_search场景下,n取值建议为1<n≤10。如果n=1,会导致推理请求失败。
    说明:

    n建议取值不超过10,n值过大会导致性能劣化,显存不足时,推理请求会失败。

    use_beam_search

    False

    Bool

    是否使用beam_search替换采样。

    使用该参数时,如下参数必须按要求设置。

    • n:大于1
    • top_p:1.0
    • top_k:-1
    • temperature:0.0

    presence_penalty

    0.0

    Float

    presence_penalty表示会根据当前生成的文本中新出现的词语进行奖惩。取值范围[-2.0,2.0]。

    frequency_penalty

    0.0

    Float

    frequency_penalty会根据当前生成的文本中各个词语的出现频率进行奖惩。取值范围[-2.0,2.0]。

    length_penalty

    1.0

    Float

    length_penalty表示在beam search过程中,对于较长的序列,模型会给予较大的惩罚。

    使用该参数时,必须添加如下三个参数,且必须按要求设置。

    • top_k:-1
    • use_beam_search:true
    • best_of:大于1

    ignore_eos

    False

    Bool

    ignore_eos表示是否忽略EOS并且继续生成Token。

    返回示例如下所示。

    {
        "id": "cmpl-29f7a172056541449eb1f9d31cfac162",
        "object": "chat.completion",
        "created": 1723190150,
        "model": "Qwen2-7B",
        "choices": [
            {
                "index": 0,
                "message": {
                    "role": "assistant",
                    "content": "你好!很高兴能为你提供帮助。有什么问题我可以回答或帮你解决吗?"
                },
                "logprobs": null,
                "finish_reason": "stop",
                "stop_reason": null
            }
        ],
        "usage": {
            "prompt_tokens": 20,
            "total_tokens": 38,
            "completion_tokens": 18
        }
    }
    表2 返回参数说明

    参数

    参数类型

    描述

    id

    Str

    请求ID。

    object

    Str

    请求任务。

    created

    Int

    请求生成的时间戳。

    model

    Str

    调用的模型名。

    choices

    Array

    模型生成内容。

    usage

    Object

    请求输入长度、输出长度和总长度。

    当调用失败时,可以根据错误码调整脚本或运行环境。
    表3 常见错误码

    错误码

    错误内容

    说明

    400

    Bad Request

    请求包含语法错误。

    403

    Forbidden

    服务器拒绝执行。

    404

    Not Found

    服务器找不到请求的网页。

    500

    Internal Server Error

    服务内部错误。

相关文档