密态计算云平台(MAPPIC)服务实例部署文档

本文介绍如何使用计算巢快速创建并使用MAPPIC服务的详细操作。

功能介绍

MAPPIC是蚂蚁数科面向海量数据和模型隐私保护的密态计算平台,MAPPIC在计算巢上提供了体验版本,您无需自行购置云主机,即可在计算巢上快速部署并体验MAPPIC服务、实现运维监控,从而搭建您自己的隐私保护应用。

基础能力包括:隐私保护AI/BI、TEE模式的大模型隐私保护推理、微调;同时我们兼容了多种数据和AI开源框架,如Spark、ipex-llm、PyTorch、DeepSpeed等。当然您也可以基于MAPPIC快速构建数据沙箱、可信数据空间等密态场景计算模式。

目前MAPPIC提供免费试用版本,欢迎大家申请试用,有任何问题欢迎进群交流。

实例规格(TB级数据规模推荐)

ACK集群规格

  1. 3台ECS,且每台ECS实例的规格为:4核32 G。

  2. EPC:48 G;明文:48 G。

  3. 操作系统为:Alibaba Cloud Linux 2.1903 LTS 64位 (Hunting Beagle)。

  4. 实例规格:ecs.r7t.xlarge

更多商业化规格配置参考,欢迎进钉钉群(69285014993)咨询!

MySQL规格

版本

存储容量

CPU规格

最大连接数

时区

8.0

100 GB

1核 2 GB

2000

0

Redis规格

版本

CPU规格

备注

5.0

1核 2 GB

最低标准,可升级

部署流程

准备工作

在申请试用之前,您需要准备一个阿里云账号,对ECS、VPC、ROS、ACK、REDIS、RDS等资源进行访问和创建操作。

  • 若您使用主账号,可以直接创建服务实例。

  • 若您使用RAM用户创建服务实例,且是第一次使用阿里云计算巢,需要在创建服务实例前,对使用的RAM用户的账号添加相应资源的权限。更多信息,请参见为RAM用户授权

步骤一:获取部署入口

您可以在阿里云的计算巢中通过MAPPIC关键字进行搜索,也可以单击部署链接快速体验。

步骤二:申请试用

在使用之前,请按照提示信息完成申请,在审核通过之后即可以创建服务。apply.png

步骤三:创建服务

  1. 进入服务实例创建界面,按照推荐的机器规格依次完成服务实例名地域付费类型数据库的账号密码集群的配置信息网络的配置信息的填写,并单击下一步:确认订单create.pngdbAndK8s.pngnet.png

  2. 确认订单页中,确认权限、基础配置和账单信息。确认无误后,单击立即创建

    说明

    若有缺少权限,建议申请完缺失的权限后,再进行服务的创建,否则可能造成资源创建失败。

    permissions.pngbilling.png

  3. 提交成功后,您可以单击去列表查看按钮,前往服务实例页查看服务实例的创建信息。

    服务实例的创建过程大约持续20分钟,请耐心等待。

    show_instance.png

管理资源

  1. 服务实例创建完成后,您可以在服务详情页或服务实例页单击服务实例名称进入服务实例详情页。watch_instance.pngservice_detail.png

  2. 在服务实例详情页,单击资源页签,您可以查看MySQL、Redis和ECS等实例信息,并进行维护。resourceList.png

快速体验

  1. 确认服务部署结果。

    登录计算巢控制台后,在左侧导航栏中选择我的服务,单击服务名称进入服务详情页,然后单击服务实例页签即可查看当前所有的实例信息。watch_instance.png

  2. 查看对外服务IP。

    单击服务实例名称或ID,进入服务实例详情页,查看访问IP地址。service_ip.png

  3. 默认定义(试用版本不支持修改)。

    定义

    描述

    tenantId

    租户名称:mappic_confidential_cloud_computing

  4. 配置用户OSS地址(必须)。

    将默认OSS地址为用户自己的OSS地址。

    1. 修改属性spark_config中的如下属性。

      字段名称

      字段含义

      ossEndpoint

      用户自己的OSS地址。

      ossAccessKeyId

      用户自己OSS地址AK。

      ossAccessKeySecret

      用户自己OSS地址SK。

    2. 修改属性oss_config中的如下字段。

      字段名称

      字段含义

      mainDevOssEp

      用户自己的OSS地址。

      mainDevOssBucketName

      执行计划上传的bucketName

      mainDevOssFilePath

      执行计划上传的路径。

      mainDevOssAccessKeyId

      OSS的AK。

      mainDevOssAccessKeySecret

      OSS的SK。

      mappicOssBucketName

      日志上传的bucketName

      mainDevOssLogFilePath

      任务执行的日志存储路径。

      mappicOssAccessKeyId

      OSS的AK。

      mappicOssAccessKeySecret

      OSS的SK。

      可以通过如下接口更新租户OSS配置。

      curl -X POST -d  '{"tenantId": "mappic_confidential_cloud_computing","ossEndpoint": "xxxxxxxx","ossAccessKeyId": "xxxxxxx","ossAccessKeySecret": "xxxxxxx","mainDevOssEp": "xxxxxxx","mainDevOssBucketName": "xxxxxxx","mainDevOssFilePath": "xxxxxxx","mainDevOssAccessKeyId": "xxxxxxx","mainDevOssAccessKeySecret": "xxxxxxx","mappicOssBucketName": "xxxxxxx","mainDevOssLogFilePath": "xxxxxxx","mappicOssAccessKeyId": "xxxxxxx","mappicOssAccessKeySecret": "xxxxxxx"}' \
              --header 'Content-Type: application/json' \
              --header 'Accept: */*' \
              --header 'Connection: keep-alive' \
              'http://对外服务ip:8889/mappic/tenant/oss/update' 
  5. 接口接入。

    如下的tenantId入参皆为上述中的租户名称:mappic_confidential_cloud_computing。

    1. 可信应用初始化(必须执行)。

      curl --location '对外服务ip:8889/api/antchain/installApp' \
      --header 'Content-Type: application/json' \
      --data '{
          "tappId":"mappic-vic",
          "tappVersion":1
      }'
      
      // 返回结果
      {"filesName":null,"executeId":null,"executeMessage":"执行成功","failedReason":null,"successMessage":"app安装成功","object":null}
    2. 创建元数据。

      创建输出表

      curl --location --request POST '对外服务ip:8889/mappic/datameta' \
      --header 'Content-Type: application/json' \
      --header 'Accept: */*' \
      --header 'Connection: keep-alive' \
      --data '{
          "tenantId": "mappic_confidential_cloud_computing",
          "tableMetas": [
              {
                  "tableName": "fred_test_table22",
                  "instId": "bfaa0186c7914119bf23ed0f30b4d4b6",
                  "encryptKey": null,
                  "storageInfo": "oss://mappic-dev/endToEnd/fred_test_table22",
                  "isEncrypted": false,
                  "partitionPattern": null,
                  "isTemp": false,
                  "columnInfo": [{"columnName":"event_id","isEncrypted":false},{"columnName":"event_link_id","isEncrypted":false},{"columnName":"merchant_id","isEncrypted":false},{"columnName":"merchant_name","isEncrypted":false},{"columnName":"user_id","isEncrypted":false},{"columnName":"gmt_occur","isEncrypted":false},{"columnName":"acq_site_id","isEncrypted":false},{"columnName":"acq_site_name","isEncrypted":false},{"columnName":"acq_site_event_amount","isEncrypted":false},{"columnName":"acq_site_event_currency","isEncrypted":false},{"columnName":"pay_site_id","isEncrypted":false},{"columnName":"pay_site_name","isEncrypted":false},{"columnName":"pay_site_user_id","isEncrypted":false},{"columnName":"pay_site_event_amount","isEncrypted":false},{"columnName":"pay_site_event_currency","isEncrypted":false},{"columnName":"gn_payment_id","isEncrypted":false},{"columnName":"gn_event_amount","isEncrypted":false},{"columnName":"gn_site_user_id","isEncrypted":false},{"columnName":"payment_scenario","isEncrypted":false},{"columnName":"is_in_store_payment","isEncrypted":false},{"columnName":"campaign_id","isEncrypted":false},{"columnName":"campaign_type","isEncrypted":false},{"columnName":"campaign_name","isEncrypted":false},{"columnName":"campaign_status","isEncrypted":false},{"columnName":"begin_time","isEncrypted":false},{"columnName":"end_time","isEncrypted":false},{"columnName":"promo_amount","isEncrypted":false},{"columnName":"promo_currency","isEncrypted":false},{"columnName":"gn_promo_amount","isEncrypted":false},{"columnName":"promo_type","isEncrypted":false},{"columnName":"promo_source","isEncrypted":false},{"columnName":"promo_result","isEncrypted":false},{"columnName":"promo_stage","isEncrypted":false},{"columnName":"coupon_id","isEncrypted":false},{"columnName":"order_title","isEncrypted":false},{"columnName":"result_message","isEncrypted":false},{"columnName":"error_message","isEncrypted":false},{"columnName":"event_properties","isEncrypted":false},{"columnName":"refund_status","isEncrypted":false},{"columnName":"acq_payment_amt","isEncrypted":false},{"columnName":"pay_result","isEncrypted":false},{"columnName":"pay_result_message","isEncrypted":false},{"columnName":"refund_amt","isEncrypted":false},{"columnName":"order_succ","isEncrypted":false},{"columnName":"decision_rule_id","isEncrypted":false},{"columnName":"psp_decision","isEncrypted":false},{"columnName":"psp_riskinfo","isEncrypted":false},{"columnName":"play_id","isEncrypted":false},{"columnName":"apt_gn_site_user_id","isEncrypted":false},{"columnName":"dt","isEncrypted":false}]
              }
          ]
      }'

      创建输入表

      curl --location --request POST 'http://对外服务ip:8889/mappic/datameta' \
      --header 'Content-Type: application/json' \
      --header 'Accept: */*' \
      --header 'Connection: keep-alive' \
      --data-raw '{
          "tenantId": "mappic_confidential_cloud_computing",
          "tableMetas": [
              {
                  "tableName": "adm_ctu_app_gn_multi_data_collect_di", // 表名
                  "instId": "bfaa0186c7914119bf23ed0f30b4d4b6", // 机构id
                  "encryptKey": null, 
                  "storageInfo": "xxxxx",
                  "isEncrypted": false,
                  "partitionPattern": null,
                  "isTemp": false,
                  "columnInfo": [
                          {
                              "columnName":"event_id",
                              "isEncrypted":false
                          }
                          ]
              }
          ]
      }'
    3. 提交任务,获取任务实例。

      curl --location 'http://对外服务ip:8889/mappic/task/template' \
      --header 'Content-Type: application/json' \
      --header 'Accept: */*' \
      --header 'Connection: keep-alive' \
      --data '{
          "tenantId":"mappic_confidential_cloud_computing",
          "sql":"select * from adm_ctu_app_gn_multi_data_collect_di limit 1000",
          "config":{},
          "inputTables":["bfaa0186c7914119bf23ed0f30b4d4b6.adm_ctu_app_gn_multi_data_collect_di"],// 机构id·表名的结构
          "outputTable":"bfaa0186c7914119bf23ed0f30b4d4b6.fred_test_table22",
          "priorityLevel":1,
          "baseConfig":{
              "name":"xxx",
              "instId":"bfaa0186c7914119bf23ed0f30b4d4b6",
              "jobId":"xxxx",
              "timestamp":"2023-11-14 11:28:30",
              "env":"DEV"
          }
      }'
  6. 查看执行情况。

    • 方式一:通过接口查看。

      任务日志的taskInstanceId需要输入的是创建任务时返回的信息。

      curl --location 'localhost:8889/mappic/task/log?taskInstanceId=任务实例&tenantId=mappic_confidential_cloud_computing&logWindowSecs=1'
      
      // 查询日志返回结果
      { 
        "errorCode":null,
        "errorMessage":null,
        "status":null,
        "data":{
          "logPath":"xxxxxx"
        },
        "success":true
      }
      curl --location 'localhost:8889/mappic/task/detail?taskInstanceId=任务实例id&tenantId=mappic_confidential_cloud_computing&env=DEV'
      
      // 查询任务详情返回结果
      {
        "errorCode":null,
        "errorMessage":null,
        "status":null,
        "data":{
          "taskInstanceId":"你的实例id",
          "ossPath":"xxxx"
        },
        "success":true
      }
      curl --location 'localhost:8889/mappic/task/status/list' \
      --header 'Content-Type: application/json' \
      --data '{
          "tenantId": "mappic_confidential_cloud_computing",
          "taskInstanceIds": ["任务的实例"]
      }'
      
      // 查询任务状态返回结果
      {
        "errorCode":null,
        "errorMessage":null,
        "status":null,
        "data":{
          "statusDetail":[
            {
              "taskInstanceId":"xxxxxx",
              "status":"RUNNING",
              "startTime":"1715602501000",
              "currentTime":"1715603076530"
            }
          ]
        },
        "success":true
      }
    • 方式二:控制台查看执行状态。

      1. 根据任务实例ID查看任务容器标签ID,即:job_id

        SELECT a.id, a.`sql`,a.`status`,a.`request_id`,b.`status`,a.`input_tables`,a.`output_table`,
               b.`mytf_request_id`,a.`create_time`,b.`gmt_finish`,c.`job_id`,a.`spark_args` 
        FROM `task_table` AS a LEFT JOIN `async_tapp_request` AS b ON a.`request_id`= b.`request_id` 
        LEFT JOIN `request_task_relation_table` AS c
        ON b.`mytf_request_id`= c.`task_id` 
        WHERE a.`sql` NOT LIKE "LOAD%" 
        AND a.`instance_id` = "任务实例id"
        ORDER BY a.`id` DESC 
        LIMIT 200;
      2. 查看ACK集群->点击工作负载->容器组->切换命名空间为default->按标签查询。

        查询:mss_job_id= 查出来的job_id(去除最后一个字符)。watch_job_id.png

网页体验(仅用于体验非商业化版本)

  1. 登录页面。login.png

  2. 登录主页。home.png

  3. 密态数据分析场景。

    数据提供方:sale.png

    数据使用方:buyer.pngsubmit_task.png

更多平台体验链接进群(69285014993)联系管理员@霖珂和@冬雪。

联系我们

  1. 联系邮箱:antchainmappic@service.alipay.com。

  2. 快速问题排查:可通过技术交流群和我们进行联系。

  3. 钉钉群号:69285014993。