EAS开启链路追踪(Tracing)

本文为您介绍如何在部署服务时增加链路追踪功能。

使用限制

  • 本方案仅支持基于LangChain、Llama-indexDashscope开发的LLM应用类型。

  • 仅支持在华东1(杭州)、华东2(上海)、华北2(北京)、华北6(乌兰察布)和华南1(深圳)地域使用链路追踪功能。

前提条件

  • 已开通ARMS应用监控。具体操作,请参见开通ARMS

  • 已开通大模型应用开发(LangStudio)。具体操作,请参见PAI服务账号授权

准备工作

示例代码

您可以选择使用预先构建好的自定义镜像,或根据服务需求自行创建新的镜像,具体操作,请参见服务部署:自定义镜像

示例一个简单的预测服务,该代码是基于Dashscope API开发的一个简单预测服务。它使用了Flask框架来构建一个Web服务,并通过DashscopeGeneration.call方法调用模型来进行文本生成。在首次使用Dashscope前,请先完成开通流程并获取API-KEY,详情请参见首次调用通义千问API。随后,在部署服务时,将DASHSCOPE_API_KEY设置为环境变量,以便正确访问API服务。其代码文件为app.py:

import os
import json
import flask
import dashscope

app = flask.Flask(__name__)

def run_query(query):
    """run a query."""

    response = dashscope.Generation.call(
        api_key=os.getenv('DASHSCOPE_API_KEY'),
        model="qwen-plus",
        messages=[
            {'role': 'system', 'content': 'You are a helpful assistant.'},
            {'role': 'user', 'content': query}
        ],
        result_format='message'
    )
    return response


@app.route('/api/trace_demo', methods=['POST'])
def query():
    """
    post data example:
    {
        "query": "capital of china"
    }
    """
    data = flask.request.get_data("utf-8")
    query = json.loads(data).get('query', '')
    response = run_query(query)
    return response.output.choices[0].message.content
 
if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8000)  

安装Python探针

使用链路追踪功能,您需要安装Python探针,ARMS即可开始监控Python应用。支持以下两种安装探针的方法,如需了解更多配置详情,请参见手动安装Python探针

  • 方法一:准备自定义镜像时,在Dockerfile中添加安装探针和使用ARMS Python探针启动应用的相关命令,如下所示。

    RUN pip3 install aliyun-bootstrap && aliyun-bootstrap -a install
    CMD ["aliyun-instrument","python","app.py"]
  • 方法二:在部署服务时,配置安装探针和使用ARMS Python探针启动应用的相关命令。其中关键配置说明如下,更多配置详情,请参见部署EAS服务

    参数

    描述

    运行命令

    aliyun-bootstrap -a install && aliyun-instrument python app.py

    三方库配置

    在文本框中输入aliyun-bootstrap

本方案以在部署服务过程中安装Python探针为例,进行说明。

部署EAS服务

  1. 登录PAI控制台,在页面上方选择目标地域,并在右侧选择目标工作空间,然后单击进入EAS

  2. 单击部署服务,然后在自定义模型部署区域,单击自定义部署

  3. 自定义部署页面,配置以下关键参数,其他参数配置详情,请参见服务部署:控制台

    参数

    描述

    基本信息

    标签

    单击image,添加以下标签。该标签用于指示前端是否需要展示链路追踪页签。

    • 标签键:EnableTrace

    • 标签值:true

    环境信息

    部署方式

    选择镜像部署

    镜像配置

    镜像地址页签,输入已准备的自定义镜像。

    运行命令

    配置为aliyun-bootstrap -a install && aliyun-instrument python app.py。该命令用于安装探针和使用ARMS Python探针启动应用,其中app.py是您自定义镜像里配置的用于提供预测服务的主文件。

    三方库配置

    配置为aliyun-bootstrap,用于从PyPI仓库下载探针安装器。

    环境变量

    单击添加按钮,配置环境变量。链路追踪功能所需的环境变量如下:

    • ARMS_APP_NAME:ARMS接入应用名称,需要与EAS服务名称保持一致。

    • ARMS_REGION_ID:ARMS应用所在地域ID。例如华东1(杭州)为cn-hangzhou。更多地域ID配置说明,请参见公共云

    • ARMS_LICENSE_KEY:通过调用DescribeTraceLicenseKey接口获取。

    • ENABLE_FASTAPI:输入false。

    • ENABLE_FLASK:输入false。

    • ENABLE_DJANGO:输入false。

    • ENABLE_REQUESTS:输入false。

    • ENABLE_AIOHTTPCLIENT:输入false。

    • ENABLE_HTTPX:输入false。

    根据您的镜像需求,您也可以自行添加额外的环境变量。例如,本方案示例镜像需要添加DASHSCOPE_API_KEY环境变量。

    专有网络

    专有网络(VPC)

    使用链路追踪功能必须配置专有网络。请选择该地域下的VPC、交换机和安全组。

    说明

    EAS服务内部默认与公网不通,如果您有EAS服务访问公网的需求,请参照配置公网连接进行配置。

    交换机

    安全组名称

  4. 参数配置完成后,单击部署

查看链路追踪

调用EAS服务后,系统将在链路追踪页签自动生成一条Trace记录,您可以通过Trace来评估模型效果。

调用EAS服务

以在线调试为例,您也可以通过API调用EAS服务,详情请参见如何使用API进行模型推理

  1. 模型在线服务(EAS)页面,单击目标服务操作列下的image>在线调试

  2. Body页签中,根据您定义的预测服务,向指定地址发送请求数据。

    本方案使用上文app.py文件中定义的服务接口,示例结果如下:

    image

查看链路信息

  1. 切换到链路追踪页签,查看Trace链路信息。image

  2. 单击目标Trace操作列下的查看链路,进入Trace详情页面。

    该页面提供的Trace数据支持您查看服务的输入和输出信息,以及相关日志信息。image