我正在部署由兩個 PyTorch 模型(model_1和model_2)組成的 SageMaker 推理管道,我想知道是否可以將相同的輸入傳遞給構成管道的兩個模型。
我的想法或多或少如下
呼叫端點發送二進制編碼的有效負載(即
payload_ser),例如:client.invoke_endpoint(EndpointName=ENDPOINT, ContentType='application/x-npy', Body=payload_ser)第一個模型使用
inut_fn函式決議有效負載,在其上運行預測器,并回傳預測器的輸出。作為一個簡化的例子:def input_fn(request_body, request_content_type): if request_content_type == "application/x-npy": input = some_function_to_parse_input(request_body) return input def predict_fn(input_object, predictor): outputs = predictor(input_object) return outputs def output_fn(predictions, response_content_type): return json.dumps(predictions)第二個模型將原始有效載荷 (
payload_ser) 和前一個模型的輸出(預測)作為有效載荷。可能,該input_fn函式將用于決議 model_1 的輸出(如在“標準情況”中),但我需要某種方法來使原始有效負載也可用于 model_2。這樣,model_2 將同時使用原始有效載荷和 model_1 的輸出來進行最終預測,并將其回傳給呼叫端點的任何人。
知道這是否可以實作嗎?
uj5u.com熱心網友回復:
聽起來您需要一個推理 DAG。Amazon SageMaker 推理管道目前僅支持處理程式鏈,其中處理程式 N 的輸出是處理程式 N 1 的輸入。
您可以更改模型 1 的 predict_fn() 以同時回傳 (input_object,outputs) 和 output_fn()。output_fn() 將接收這兩個物件作為預測,并將它們作為 json 序列化處理。model2 的 input_fn() 需要知道如何決議這對輸入。
考慮將其實作為將輸入添加到模型輸出的通用管道處理機制。通過這種方式,您可以將其重用于所有模型和管道。
您可以允許將模型部署為獨立模型和管道的一部分,并應用相關的輸入/輸出處理行為,該行為將由環境變數 ( Environmentdict)的存在觸發,您可以指定何時創建推理管道模型。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/375522.html
