日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

彈性Job服務功能介紹

EAS彈性Job服務支持訓練和推理場景,相較于異步推理服務提供了可復用且能夠彈性伸縮的Job服務。在訓練場景中,有效解決多個實例(Job)并發執行時,實例(Job)頻繁創建和釋放導致的資源浪費問題。同時在推理場景能感知每個請求的執行進度,做到更公平的任務調度。本文為您介紹如何使用彈性Job服務。

使用場景

訓練場景

彈性Job服務用于訓練場景:

  • 功能實現

    實現了前后端分離架構,支持部署常駐的前端服務與彈性Job服務。

  • 架構優勢

    前端服務通常只需較低的資源配置,價格低廉。前端服務常駐可以避免頻繁創建前端服務,減少等待時間。后端彈性Job服務支持在一個實例(Job)內循環多次執行訓練任務,避免任務在多次執行過程中實例(Job)被反復拉起和釋放,提升服務吞吐效率。同時,后端彈性Job服務會在隊列長度過長或過短時自動進行擴縮容,保證資源的高效利用。

推理場景

彈性Job服務用于模型推理場景,能夠感知每個請求的執行進度,做到更公平的任務調度。

對于響應時間較長的推理服務,一般建議使用EAS異步推理服務的形式來部署,但異步服務存在以下兩個問題:

  • 隊列服務推送請求時不能保證優先推送給空閑的實例,導致資源不能被充分利用。

  • 服務實例縮容時不能保證當前實例退出時內部請求已處理結束,會導致正在處理的請求被中斷,然后被調度到其他實例重新執行。

針對以上問題,彈性Job服務進行了以下處理:

  • 優化了訂閱邏輯,保證將請求優先推送到空閑實例。在彈性Job實例退出前會阻塞等待保證當前處理的請求執行結束。

  • 在擴縮容上更加高效,不同于普通監控服務的定期上報機制,彈性Job服務在隊列服務內部內置了監控服務,實現了Job場景下專用的監控服務采集鏈路,保證隊列長度超過閾值時能快速觸發擴容,將擴縮容的響應時間從分鐘級降低到10秒左右。

基本架構

整體框架由隊列服務、HPA控制器和彈性Job服務三部分組成,如下圖所示。image.png

實現邏輯如下:

  • 通過隊列服務將請求或任務的下發和執行進行解耦,從而實現同一個彈性Job服務可以執行多個不同請求或任務。

  • 通過HPA控制器來持續監聽隊列服務中待執行的訓練任務和請求的數量,實現對彈性Job服務實例個數的彈性伸縮。其中彈性Job服務自動擴縮容的默認配置如下,更多參數說明,請參見水平自動擴縮容功能。

    {
        "behavior":{
            "onZero":{
                "scaleDownGracePeriodSeconds":60    # 縮容到0的生效時間(秒)。
            },
            "scaleDown":{
                "stabilizationWindowSeconds":1    # 縮容的生效時間(秒)。
            }
        },
        "max":10,    # 實例(Job)的最大個數。
        "min":1,     # 實例(Job)的最小個數。
        "strategies":{
            "avg_waiting_length":2    # 每個實例(Job)的平均負載閾值。
        }
    }

服務部署

部署推理服務

類似于創建異步推理服務,參照以下示例內容準備服務配置文件:

{ 
  "containers": [
    {
      "image": "registry-vpc.cn-shanghai.aliyuncs.com/eas/eas-container-deploy-test:202010091755",
      "command": "/data/eas/ENV/bin/python /data/eas/app.py"
      "port": 8000,
    }
  ],
  "metadata": {
    "name": "scalablejob",
    "type": "ScalableJob",
    "rpc.worker_threads": 4,
    "instance": 1,
  }
}

其中:將type配置為ScalableJob,推理服務就會以彈性Job服務的形式部署。其他參數配置詳情,請參見服務模型所有相關參數說明。關于如何部署推理服務,請參見部署寫真相機在線推理服務

服務部署成功后,會自動創建隊列服務和彈性Job服務,同時默認啟用Autoscaler(水平自動擴縮容)的功能。

部署訓練服務

支持集成部署獨立部署兩種方式。具體的實現邏輯和配置詳情說明如下,具體部署方法,請參見部署彈性伸縮的Kohya訓練服務

  • 實現邏輯

    image.png

    • 集成部署:EAS除了創建隊列服務和彈性Job服務外,還會創建一個前端服務。前端服務主要負責接收用戶請求,并將用戶請求轉發到隊列服務中。您可以將前端服務理解成彈性Job服務的客戶端。在此模式下,彈性Job服務會被綁定到唯一的前端服務上,此時彈性Job服務只能執行當前前端服務下發的訓練任務。

    • 獨立部署:獨立部署適用于多用戶場景,在此模式下彈性Job服務作為公共的后端服務,可以和多個前端服務綁定,每個用戶都可以在自己的前端服務下發訓練任務,后端Job服務會創建對應的Job實例來執行訓練任務,并且每個Job實例可以依次執行不同的訓練任務,實現多個用戶共享訓練資源。不用多次創建訓練任務,有效降低使用成本。

  • 配置說明

    在部署彈性Job服務時,您需要提供一個自定義鏡像環境(kohya場景可以直接使用EAS預置的kohya_ss鏡像)。該鏡像需包含執行訓練任務的所有依賴,只是作為訓練任務的執行環境,因此不需要配置啟動命令和端口號。如果您需要在訓練任務開始前執行一些初始化任務,可以配置初始化命令,EAS會在實例(Job)內部單獨創建一個進程來執行初始化任務。如何準備自定義鏡像,請參見服務部署:自定義鏡像。EAS的預置鏡像如下所示:

     "containers": [
        {
          "image": "eas-registry-vpc.cn-shanghai.cr.aliyuncs.com/pai-eas/kohya_ss:2.2"
        }
      ]

    集成部署

    參照下方示例內容準備服務配置文件,以EAS提供的預置鏡像(kohya_ss)為例:

    {
      "containers": [
        {
          "image": "eas-registry-vpc.cn-shanghai.cr.aliyuncs.com/pai-eas/kohya_ss:2.2"
        }
      ],
      "metadata": {
        "cpu": 4,
        "enable_webservice": true,
        "gpu": 1,
        "instance": 1,
        "memory": 15000,
        "name": "kohya_job",
        "type": "ScalableJobService"
      },
      "front_end": {
        "image": "eas-registry-vpc.cn-shanghai.cr.aliyuncs.com/pai-eas/kohya_ss:2.2",
        "port": 8001,
        "script": "python -u kohya_gui.py --listen 0.0.0.0 --server_port 8001 --data-dir /workspace --headless --just-ui --job-service"
      }
    }

    其中關鍵配置說明如下,其他參數配置說明,請參見服務模型所有相關參數說明

    • type配置為ScalableJobService。

    • 前端服務使用的資源組默認和彈性Job服務相同,系統默認分配的資源為2核CPU和8 GB內存。

      • 參考以下示例自定義配置資源組或資源:

        {
            "front_end": {
              "resource": "",   # 修改前端服務使用專屬資源組。
              "cpu": 4,
              "memory": 8000
            }
        }
      • 參考以下示例自定義配置部署的機型:

        {
            "front_end": {
              "instance_type": "ecs.c6.large"
            }
        }

    獨立部署

    參照以下示例準備服務配置文件,以EAS提供的預置鏡像(kohya_ss)為例:

    {
      "containers": [
        {
          "image": "eas-registry-vpc.cn-shanghai.cr.aliyuncs.com/pai-eas/kohya_ss:2.2"
        }
      ],
      "metadata": {
        "cpu": 4,
        "enable_webservice": true,
        "gpu": 1,
        "instance": 1,
        "memory": 15000,
        "name": "kohya_job",
        "type": "ScalableJob"
      }
    }

    其中type需要配置為ScalableJob,其他參數配置說明,請參見服務模型所有相關參數說明

    在此模式下,需要用戶手動部署前端服務,并且在前端服務內部實現請求的代理,將接收到的請求轉發到彈性Job服務的隊列內部,完成前端服務和后端Job服務的綁定,詳情請參見向隊列服務發送數據。

服務調用

為了區分訓練場景和推理場景,在調用彈性Job服務時,需要通過設置taskType:command/query來標識。其中:

  • command:用來標識訓練服務。

  • query:用來標識推理服務。

通過HTTP或SDK調用服務時,需要顯式指定taskType,示例如下:

  • HTTP調用時需要將taskType指定為query。

    curl http://166233998075****.cn-shanghai.pai-eas.aliyuncs.com/api/predict/scalablejob?taskType={Wanted_TaskType} -H 'Authorization: xxx' -D 'xxx'
  • SDK調用時需要指定tags,通過該參數來配置taskType。

    # 創建輸入隊列,用于發送任務或請求。
    queue_client = QueueClient('166233998075****.cn-shanghai.pai-eas.aliyuncs.com', 'scalabejob')
    queue_client.set_token('xxx')
    queue_client.init()
    
    tags = {"taskType": "wanted_task_type"}
    # 向輸入隊列發送任務或請求。
    index, request_id = inputQueue.put(cmd, tags)

獲取調用結果:

配置日志收集

EAS彈性Job服務提供了enable_write_log_to_queue配置,通過該配置獲取實時日志。

{
  "scalable_job": {
    "enable_write_log_to_queue": true
  }
}
  • 在訓練場景中,該配置默認開啟,系統會將實時日志回寫到輸出隊列,您可以通過EAS隊列服務的SDK實時獲取訓練日志。詳情請參見自定義前端服務鏡像調用彈性Job服務

  • 在推理場景中,該配置默認關閉,日志只能通過stdout輸出。

相關文檔

關于EAS彈性Job服務更詳細的使用場景介紹,請參見: