全部產品
Search
文件中心

Platform For AI:部署寫真相機線上推理服務

更新時間:Nov 19, 2025

本文將指導您如何在寫真相機方案中使用彈性Job服務實現推理功能,以解決資源利用不充分和縮容過程中請求中斷等問題。

前提條件

  • 已建立專用網路,並配置公網串連。

    1. 已建立Virtual Private Cloud、交換器和安全性群組。具體操作,請參見搭建IPv4專用網路建立安全性群組

    2. 已為該VPC建立了公網NAT Gateway,並為該網關綁定了Elastic IP Address、配置了SNAT條目。具體操作,請參見使用公網NAT GatewaySNAT功能訪問互連網

  • 已準備好5~20張訓練圖片和1張模板圖片,用於模型訓練和寫真製作。圖片格式支援.jpg.jpeg.png等,請確保圖片的尺寸大於512×512像素。

    • 單人寫真製作:模板圖片中包含單張人臉,多張訓練圖片中的人臉屬於同一個人。

    • 多人寫真製作:模板圖片中需包含多張人臉,且人臉數量與模型訓練的model_id數量一致。

  • 已建立OSS Bucket,詳情請參見建立儲存空間

使用限制

僅支援在華北2(北京)和新加坡地區使用該方案。

部署推理情境彈性Job服務

部署核驗服務

  1. 登入PAI控制台,在頁面上方選擇目標地區,並在右側選擇目標工作空間,然後單擊進入EAS

  2. 單擊部署服務,然後在自訂模型部署地區,單擊自訂部署

  3. 自訂部署頁面,配置以下關鍵參數,其他參數取預設配置即可,更多參數配置說明,請參見自訂部署

    • 基本資料地區,佈建服務名稱。例如photog_check。

    • 環境資訊地區中,配置以下參數:

      參數

      描述

      部署方式

      選擇鏡像部署,並選中非同步隊列

      鏡像配置

      選中鏡像地址,並在文字框中輸入鏡像地址,取值如下:

      1. 華北2(北京)的鏡像地址為:registry.cn-beijing.aliyuncs.com/mybigpai/photog_pub:check.1.0.0.pub

      2. 新加坡的鏡像地址為:registry.ap-southeast-1.aliyuncs.com/mybigpai/photog_pub:check.1.0.0.pub

      代碼配置

      選擇OSS類型的掛載方式,並配置以下參數:

      1. Uri:選擇您自己的OSS Bucket路徑。例如oss://examplebucket/

      2. 掛載路徑:配置為/photog_oss

      運行命令

      配置為python app.py

      連接埠號碼

      配置為7860。

    • 資源資訊地區中,配置以下參數:

      參數

      描述

      資源類型

      選擇公用資源

      部署資源

      資源規格選擇GPU類型的GU30系列機型,推薦使用ml.gu7i.c32m188.1-gu30

      配置系统盘

      配置為120 GiB。

    • 非同步隊列地區中,配置以下參數:

      參數

      描述

      資源類型

      選擇公用資源

      部署資源

      • 最小執行個體數:1。

      • CPU(核心數):8核。

      • 記憶體(GB):64 GB。

      單一輸入請求最巨量資料

      配置為20480 KB。避免隊列中每個請求的儲存空間不足。

      單一輸出返回最巨量資料

    • 服務接入地區中,選擇已建立的Virtual Private Cloud交換器安全性群組名稱

    • 服務配置地區中,添加以下配置,您可以參考下方的完整配置樣本,來添加新增的參數。

      欄位

      新增的參數

      metadata

      增加以下參數:

      "rpc": {
                  "keepalive": 3600000,
                  "worker_threads": 1
              }
      1. keepalive:單個請求的最長處理時間,單位為毫秒,配置為3600000。

      2. worker_threads:EAS每個執行個體中用於並發處理請求的線程數。

        預設為5,表示最先進入隊列的前五個任務會被分配到同一個執行個體上。建議將該參數設定為1,這樣可以確保請求按順序排隊處理。

      queue

      增加參數"max_delivery": 1,防止失敗後多次重複投遞。

      單擊查看完整的配置樣本

      {
          "metadata": {
              "name": "photog_check",
              "instance": 1,
              "rpc": {
                  "keepalive": 3600000,
                  "worker_threads": 1
              },
              "type": "Async"
          },
          "cloud": {
              "computing": {
                  "instance_type": "ml.gu7i.c32m188.1-gu30",
                  "instances": null
              },
              "networking": {
                  "vswitch_id": "vsw-2ze4o9kww55051tf2****",
                  "security_group_id": "sg-2ze0kgiee55d0fn4****",
                  "vpc_id": "vpc-2ze5hl4ozjl4fo7q3****"
              }
          },
          "features": {
              "eas.aliyun.com/extra-ephemeral-storage": "100Gi"
          },
          "queue": {
              "cpu": 8,
              "max_delivery": 1,
              "min_replica": 1,
              "memory": 64000,
              "resource": "",
              "source": {
                  "max_payload_size_kb": 20480
              },
              "sink": {
                  "max_payload_size_kb": 20480
              }
          },
          "storage": [
              {
                  "oss": {
                      "path": "oss://examplebucket/",
                      "readOnly": false
                  },
                  "properties": {
                      "resource_type": "code"
                  },
                  "mount_path": "/photog_oss"
              }
          ],
          "containers": [
              {
                  "image": "registry.cn-beijing.aliyuncs.com/mybigpai/photog_pub:check.1.0.0.pub",
                  "script": "python app.py",
                  "port": 7860
              }
          ]
      }
  4. 單擊部署

部署訓練服務

  1. 登入PAI控制台,在頁面上方選擇目標地區,並在右側選擇目標工作空間,然後單擊進入EAS

  2. 單擊部署服務,然後在自訂模型部署地區,單擊自訂部署

  3. 自訂部署頁面,配置以下關鍵參數,其他參數取預設配置即可,更多參數配置說明,請參見自訂部署

    • 基本資料地區,佈建服務名稱。例如photog_train_pmml。

    • 環境資訊地區中,配置以下參數:

      參數

      描述

      部署方式

      選擇鏡像部署,並選中非同步隊列

      鏡像配置

      選中鏡像地址,並在文字框中輸入鏡像地址,取值如下:

      1. 華北2(北京)的鏡像地址為:registry.cn-beijing.aliyuncs.com/mybigpai/photog_pub:train.1.0.0.pub

      2. 新加坡的鏡像地址為:registry.ap-southeast-1.aliyuncs.com/mybigpai/photog_pub:train.1.0.0.pub

      代碼配置

      選擇OSS類型的掛載方式,並配置以下參數:

      1. Uri:選擇您自己的OSS Bucket路徑,與核驗服務選擇的OSS路徑保持一致。例如oss://examplebucket/

      2. 掛載路徑:配置為/photog_oss

      運行命令

      配置為python app.py

      連接埠號碼

      配置為7860。

    • 資源資訊地區中,配置以下參數:

      參數

      描述

      資源類型

      選擇公用資源

      部署資源

      資源規格選擇GPU類型的GU30系列機型,推薦使用ml.gu7i.c32m188.1-gu30

      配置系统盘

      配置為120 GiB。

    • 非同步隊列地區中,配置以下參數:

      參數

      描述

      資源類型

      選擇公用資源

      部署資源

      • 最小執行個體數:1。

      • CPU(核心數):8核。

      • 記憶體(GB):64 GB。

      單一輸入請求最巨量資料

      配置為20480 KB。避免隊列中每個請求的儲存空間不足。

      單一輸出返回最巨量資料

    • 服務接入地區中,選擇已建立的Virtual Private Cloud交換器安全性群組名稱

    • 服務配置地區中,添加以下配置,您可以參考下方的完整配置樣本,來添加新增的參數。

      欄位

      新增的參數

      autoscaler

      (可選)水平自動擴縮容配置,詳情請參見水平自動擴縮容

      "behavior": {
        "scaleDown": {
          "stabilizationWindowSeconds": 60
        }
      },
      "max": 5,
      "min": 1,
      "strategies": {
                  "queue[backlog]": 1
      }

      metadata

      增加以下參數:

      "rpc": {
                  "keepalive": 3600000,
                  "worker_threads": 1
              }
      1. keepalive:單個請求的最長處理時間,單位為毫秒,配置為3600000。

      2. worker_threads:EAS每個執行個體中用於並發處理請求的線程數。

        預設為5,表示最先進入隊列的前五個任務會被分配到同一個執行個體上。建議將該參數設定為1,這樣可以確保請求按順序排隊處理。

      queue

      增加參數"max_delivery": 1,防止失敗後多次重複投遞。

      單擊查看完整的配置樣本

      {
          "autoscaler": {
              "behavior": {
                  "scaleDown": {
                      "stabilizationWindowSeconds": 60
                  }
              },
              "max": 5,
              "min": 1,
              "strategies": {
                  "queue[backlog]": 1
              }
          },
          "metadata": {
              "name": "photog_train_pmml",
              "instance": 1,
              "rpc": {
                  "keepalive": 3600000,
                  "worker_threads": 1
              },
              "type": "Async"
          },
          "cloud": {
              "computing": {
                  "instance_type": "ml.gu7i.c32m188.1-gu30",
                  "instances": null
              },
              "networking": {
                  "vswitch_id": "vsw-2ze4o9kww55051tf2****",
                  "security_group_id": "sg-2ze0kgiee55d0fn4****",
                  "vpc_id": "vpc-2ze5hl4ozjl4fo7q3****"
              }
          },
          "features": {
              "eas.aliyun.com/extra-ephemeral-storage": "120Gi"
          },
          "queue": {
              "cpu": 8,
              "max_delivery": 1,
              "min_replica": 1,
              "memory": 64000,
              "resource": "",
              "source": {
                  "max_payload_size_kb": 20480
              },
              "sink": {
                  "max_payload_size_kb": 20480
              }
          },
          "storage": [
              {
                  "oss": {
                      "path": "oss://examplebucket/",
                      "readOnly": false
                  },
                  "properties": {
                      "resource_type": "code"
                  },
                  "mount_path": "/photog_oss"
              }
          ],
          "containers": [
              {
                  "image": "registry.cn-beijing.aliyuncs.com/mybigpai/photog_pub:train.1.0.0.pub",
                  "script": "python app.py",
                  "port": 7860
              }
          ]
      }
  4. 單擊部署

部署預測服務

本方案將預測服務部署為彈性Job服務,具體操作步驟如下:

  1. 單擊部署服務,然後在自訂模型部署地區,單擊JSON獨立部署

  2. 在JSON編輯框中填入配置資訊。

    {
        "metadata": {
            "name": "photog_pre_pmml",
            "instance": 1,
            "rpc": {
                "keepalive": 3600000,
                "worker_threads": 1
            },
            "type": "ScalableJob"
        },
        "cloud": {
            "computing": {
                "instance_type": "ecs.gn6v-c8g1.2xlarge",
                "instances": null
            },
            "networking": {
                "vswitch_id": "vsw-2ze4o9kww55051tf2****",
                "security_group_id": "sg-2ze0kgiee55d0fn4****",
                "vpc_id": "vpc-2ze5hl4ozjl4fo7q3****"
            }
        },
        "features": {
            "eas.aliyun.com/extra-ephemeral-storage": "120Gi"
        },
        "queue": {
            "cpu": 8,
            "max_delivery": 1,
            "min_replica": 1,
            "memory": 64000,
            "resource": "",
            "source": {
                "max_payload_size_kb": 20480
            },
            "sink": {
                "max_payload_size_kb": 20480
            }
        },
        "storage": [
            {
                "oss": {
                    "path": "oss://examplebucket/",
                    "readOnly": false
                },
                "properties": {
                    "resource_type": "code"
                },
                "mount_path": "/photog_oss"
            }
        ],
        "containers": [
            {
                "image": "registry.cn-beijing.aliyuncs.com/mybigpai/photog_pub:infer.1.0.0.pub",
                "env": [
                    {
                        "name": "URL",
                        "value": "http://127.0.0.1:8000"
                    },
                    {
                        "name": "AUTHORIZATION",
                        "value": "="
                    }
                ],
                "script": "python app.py",
                "port": 7861
            },
            {
                "image": "eas-registry-vpc.cn-beijing.cr.aliyuncs.com/pai-eas/stable-diffusion-webui:3.2",
                "port": 8000,
                "script": "./webui.sh --listen --port 8000 --skip-version-check --no-hashing --no-download-sd-model --skip-install --api --filebrowser --sd-dynamic-cache --data-dir /photog_oss/webui/"
            }
        ]
    }

    其中關鍵參數說明如下,其他參數配置詳情,請參見JSON部署

    參數

    描述

    metadata

    name

    自訂服務名稱,在同地區內唯一。

    type

    配置為ScalableJob,非同步推理服務會以彈性Job的形式進行部署。

    containers

    image

    需要同時配置AI寫真預測服務和WebUI預測服務鏡像地址。支援配置的鏡像列表如下,本方案選擇華北2(北京)地區的鏡像地址。

    1. 華北2(北京)鏡像地址:

      1. AI寫真預測服務:registry.cn-beijing.aliyuncs.com/mybigpai/photog_pub:infer.1.0.0.pub

      2. WebUI預測服務:eas-registry-vpc.cn-beijing.cr.aliyuncs.com/pai-eas/stable-diffusion-webui:3.2

    2. 新加坡鏡像地址:

      1. AI寫真預測服務:registry.ap-southeast-1.aliyuncs.com/mybigpai/photog_pub:infer.1.0.0.pub

      2. WebUI預測服務:eas-registry-vpc.ap-southeast-1.cr.aliyuncs.com/pai-eas/stable-diffusion-webui:3.2

    storage

    path

    本方案以OSS掛載為例,配置為您自己的OSS Bucket路徑,與核驗服務選擇的OSS路徑保持一致,例如oss://examplebucket/

    您需要下載並解壓WebUI所需的模型檔案,並將其按照下圖布局方式存放到您的OSS Bucket路徑oss://examplebucket/photog_oss/webui中。關於如何將檔案上傳到OSS Bucket路徑,詳情請參見命令列工具ossutil 1.0。關於如何將檔案上傳到NAS路徑,詳情請參見快速入門(Linux)檔案管理image.png

    mount_path

    配置為/photog_oss

  3. 單擊部署

    彈性Job服務部署成功後,會自動建立佇列服務,同時預設啟動Autoscaler(水平自動擴縮容)功能。

調用服務

服務部署成功後,調用服務實現AI寫真。

調用服務時,參考服務調用指定taskType為query,來標識發送的是推理請求。範例程式碼如下:

import json
from eas_prediction import QueueClient

# 建立輸入隊列對象,用於寫入輸入資料。
input_queue = QueueClient('182848887922****.cn-shanghai.pai-eas.aliyuncs.com', 'photog_check')
input_queue.set_token('<token>')
input_queue.init()

datas = json.dumps(
    {
       'request_id'    : 12345,
       'images'        : ["xx.jpg", "xx.jpg"], # urls, a list
       'configure'     : {
            'face_reconize' : True, # Judge whether all pictures are of a person
        }
    }
)
# 指定taskType為query。
tags = {"taskType": "query"}
index, request_id = input_queue.put(f'{datas}', tags)
print(index, request_id)

# 查看輸入隊列的詳情。
attrs = input_queue.attributes()
print(attrs)

相關文檔