0 / 0
영어 버전 문서로 돌아가기
배치 가능한 Python 함수 작성
마지막 업데이트 날짜: 2024년 12월 04일
배치 가능한 Python 함수 작성

Python 함수를 작성한 다음 모델을 배포하는 데 사용할 수 있는 에셋으로 저장하는 방법을 알아보세요.

배치 가능 함수의 일반 요구사항 목록은 배치 가능한 기능에 대한 일반 요구사항을 참조하십시오. 함수 배치 중 발생하는 사항에 대한 정보는 함수 배치 프로세스 참조

배치 가능한 기능에 대한 일반 요구사항

성공적으로 배치하려면 함수가 다음 요구사항을 충족해야 합니다.

  • 가져올 Python 함수 파일의 범위에 score 함수 오브젝트가 있어야 합니다. 점수 기능 요구사항 참조
  • 스코어링 입력 페이로드는 스코어링 입력 요구사항 에 나열된 요구사항을 충족해야 합니다.
  • score의 출력으로 예상되는 출력 페이로드에는 상태 코드 200에 대한 score_response 변수의 스키마가 포함되어야 합니다. JSON 오브젝트의 배열을 값으로 사용하는 prediction 매개변수는 score 출력에서 필수입니다.
  • Python 클라이언트를 사용하여 외부 함수에 대한 참조를 포함하는 Python 함수를 저장하면 외부 함수(중첩 함수 포함)의 범위에 있는 코드만 저장됩니다. 따라서 외부 함수의 범위 밖의 코드는 저장되지 않으므로 함수를 배치할 때 사용할 수 없게 됩니다.

점수 기능 요구사항

  • score 함수 오브젝트를 추가하는 두 가지 방법이 있습니다.
    • 사용자가 명시적으로
    • 암시적으로, Python 함수를 watsonx.ai 런타임 저장소에 에셋으로 저장하는 데 사용되는 방법을 통해
  • ' score ' 함수는 단일 JSON 입력 매개변수 또는 페이로드와 무기명 토큰의 두 가지 매개변수를 사용할 수 있습니다.
  • score 함수는 JSON-직렬화 가능 오브젝트(예: 사전 또는 목록)를 리턴해야 합니다.

스코어링 입력 요구사항

  • 스코어링 입력 페이로드에는 이 예제 스키마에 표시된 대로 이름이 values인 배열이 포함되어야 합니다. input_data 매개변수는 페이로드에서 필수입니다. input_data 매개변수에는 추가 이름-값 쌍도 포함될 수 있습니다.

    {"input_data": [{
       "values": [["Hello world!"]]
                   }]
    }
    
  • 채점 입력 페이로드는 ' score'의 입력 파라미터 값으로 전달되어야 합니다. 이러한 방식으로 score 입력 매개변수의 값이 score내에서 적절하게 처리되는지 확인할 수 있습니다.

  • 스코어링 입력 페이로드는 관련 Python 함수의 입력 요구사항과 일치해야 합니다.

  • 스코어링 입력 페이로드에는 예 입력 데이터 스키마와 일치하는 배열이 포함되어야 합니다.

예제 입력 데이터 스키마

 {"input_data": [{
    "values": [["Hello, world!"]]
                }]
 }

Python 코드 예시(페이로드 및 토큰)

#wml_python_function
def my_deployable_function():

    def score(payload, token):

        message_from_input_payload = payload.get("input_data")[0].get("values")[0][0]
        response_message = "Received message - {0}".format(message_from_input_payload)

        # Score using the pre-defined model
        score_response = {
            'predictions': [{'fields': ['Response_message_field'],
                             'values': [[response_message]]
                            }]
        }
        return score_response

    return score

score = my_deployable_function()

Python 함수 테스트

Python 함수를 테스트하는 방법은 다음과 같습니다:

input_data = { "input_data": [{ "fields": [ "message" ],
                                "values": [[ "Hello, world!" ]]
                               }
                              ]
             }
function_result = score( input_data )
print( function_result )

"안녕하세요, 세상!"이라는 메시지를 반환합니다.

함수 배치 프로세스

함수 에셋의 Python 코드는 ' import 문을 사용하여 watsonx.ai 런타임 엔진에 의해 Python 모듈로 로드됩니다. 이는 코드가 정확히 한 번 실행됨을 의미합니다(기능이 배치될 때 또는 해당 팟이 다시 시작될 때마다). 함수 자산에 의해 정의되는 score 함수는 모든 예측 요청에서 호출됩니다.

배치 가능한 함수 처리

다음 방법 중 하나를 사용하여 배치 가능한 Python 함수를 작성하십시오.

시작하기 전에

API 키를 생성하여 작업 자격 증명을 설정해야 합니다. 자세한 내용은 작업 자격 증명 관리하기를 참조하세요.

REST API를 통해 배치 가능한 함수 작성

REST API의 경우 Python 함수가 파일을 통해 직접 업로드되므로 파일에는 이미 score 함수가 포함되어 있어야 합니다. score 함수에서 나중에 사용하기 위해 수행해야 하는 일회성 가져오기는 파일의 글로벌 범위 내에서 수행할 수 있습니다. 이 파일이 Python 함수로 배치되면 글로벌 범위에서 사용 가능한 일회성 가져오기가 배치 중에 실행되고 나중에 모든 예측 요청에 단순히 재사용됩니다.

중요:

기능 아카이브는 .gz 파일이어야 합니다.

샘플 score 함수 파일:

Score function.py
---------------------
def score(input_data):
    return {'predictions': [{'values': [['Just a test']]}]}

한 번의 가져오기를 사용하는 샘플 score 함수:

import subprocess
subprocess.check_output('pip install gensim --user', shell=True)
import gensim

def score(input_data):
    return {'predictions': [{'fields': ['gensim_version'], 'values': [[gensim.__version__]]}]}

Python 클라이언트를 통해 배치 가능한 기능 작성

Python 기능을 자산으로 지속하기 위해 Python 클라이언트는 wml_client.repository.store_function 메소드를 사용합니다. 두 가지 방법으로 Python 함수를 지속할 수 있습니다:

Python 함수를 포함하는 파일을 통해 함수 지속

이 메소드는 REST API를 통해 Python 함수 파일을 유지하는 것과 동일합니다(score은(는) Python 소스 파일의 범위에서 정의해야 함). 자세한 내용은 REST API를 통해 배치 가능한 함수 작성을 참조하십시오.

중요:

wml_client.repository.store_function 메소드를 호출할 때 파일 이름을 첫 번째 인수로 전달하십시오.

함수 오브젝트를 통해 함수 지속

score(이)라는 중첩된 함수로 Python 닫기를 작성하여 Python 함수 오브젝트를 지속할 수 있습니다. score 함수는 호출 시 함수 오브젝트로 저장되는 외부 함수에 의해 리턴됩니다. 이 score 함수는 배치 가능한 함수에 대한 일반 요구사항에 나열된 요구사항을 충족해야 합니다. 이 경우, 배치 중에 실행되고 score 함수 내에서 사용되도록 한 번의 가져오기 및 초기 설정 로직을 외부 중첩 함수에 추가해야 합니다. prediction 요청 중에 필요한 반복 로직은 중첩된 score 함수 내에 추가되어야 합니다.

샘플 Python 함수는 Python 클라이언트를 사용하여 저장됩니다.

def my_deployable_function():

    import subprocess
    subprocess.check_output('pip install gensim', shell=True)
    import gensim

    def score(input_data):
        import
        message_from_input_payload = payload.get("input_data")[0].get("values")[0][0]
        response_message = "Received message - {0}".format(message_from_input_payload)

        # Score using the pre-defined model
        score_response = {
            'predictions': [{'fields': ['Response_message_field', 'installed_lib_version'],
                             'values': [[response_message, gensim.__version__]]
                            }]
        }
        return score_response

    return score

function_meta = {
    client.repository.FunctionMetaNames.NAME:"test_function",
    client.repository.FunctionMetaNames.SOFTWARE_SPEC_ID: sw_spec_id
}
func_details = client.repository.store_function(my_deployable_function, function_meta)

이 시나리오에서 Python 함수는 ' score 함수가 포함된 Python 파일을 생성하고 해당 함수 파일을 watsonx.ai 런타임 리포지토리에 자산으로 유지하는 작업을 수행합니다:

score = my_deployable_function()

자세히 알아보기

상위 주제: Python 함수 배치

일반적인 AI 검색 및 응답
이러한 응답은 제품 문서의 컨텐츠를 기반으로 하는 watsonx.ai 의 대형 언어 모델에 의해 생성됩니다. 자세히 알아보기