0 / 0
영어 버전 문서로 돌아가기
사용자 정의 기계 학습 프레임워크
마지막 업데이트 날짜: 2024년 11월 21일
사용자 정의 기계 학습 프레임워크

사용자 지정 머신 러닝 프레임워크를 사용하여 페이로드 로깅, 피드백 로깅을 완료하고 성능 정확도, 런타임 편향 탐지, 설명 가능성, 드리프트 탐지 및 모델 평가를 위한 자동 편향 제거 기능을 측정할 수 있습니다. 사용자 지정 머신 러닝 프레임워크는 IBM watsonx.ai Runtime과 동등해야 합니다.

다음 사용자 지정 머신 러닝 프레임워크는 모델 평가를 지원합니다:

프레임워크 지원 세부사항
프레임워크 문제점 유형 데이터 유형
IBM watsonx.ai 런타임과 동등함 분류 구조화됨
IBM watsonx.ai 런타임과 동등함 회귀분석 구조화됨

IBM watsonx.ai 런타임과 동등하지 않은 모델의 경우, 필요한 REST API 엔드포인트를 노출하는 사용자 지정 모델용 래퍼를 만들어야 합니다. 또한 Watson OpenScale과 실제 사용자 정의 머신 러닝 엔진 사이의 입/출력을 브릿지해야 합니다.

사용자 정의 기계 학습 엔진이 가장 적합한 경우

사용자 정의 기계 학습 엔진이 가장 적합한 상황은 다음과 같습니다.

  • 머신 러닝 모델에 서비스를 제공하기 위해 즉시 사용 가능한 제품을 사용하지 않습니다. 모델에 서비스를 제공하는 시스템이 있지만 모델 평가를 위한 해당 기능에 대한 직접적인 지원은 존재하지 않습니다.
  • 3rd-party 공급업체에서 사용 중인 서빙 엔진은 아직 모델 평가에 지원되지 않습니다. 이 경우에는 원본 또는 기본 배치에 대한 랩퍼로서 사용자 정의 기계 학습 엔진을 개발하는 것을 고려하십시오.

작업 방식

다음 이미지는 사용자 정의 환경 지원을 보여줍니다.

사용자 정의 작업 차트가 표시되는 방식입니다. 클라이언트 API및 Watson OpenScale API를 사용하는 사용자 정의 환경에 대한 상자를 표시합니다.

또한 다음 링크를 참조할 수 있습니다.

Watson OpenScale 페이로드 로깅 API

Python 클라이언트 SDK

Python SDK

  • 모니터를 지원하기 위한 모델의 입력 기준

    다음 예제에서 모델은 기본적으로 이름 지정된 필드의 콜렉션과 해당 값을 입력으로 사용하는 기능 벡터를 사용합니다.

    {
    "fields": [
        "name",
        "age",
        "position"
    ],
    "values": [
        [
            "john",
            33,
            "engineer"
        ],
        [
            "mike",
            23,
            "student"
        ]
    ]
    
    

    “age” 필드는 공정성에 대해 평가될 수 있습니다.

    입력이 입력 특징 공간에서 변환된 텐서 또는 행렬인 경우 해당 모델을 평가할 수 없습니다. 확장하면 텍스트 또는 이미지 입력이 있는 심층 학습 모델은 편향성 발견 및 완화를 위해 처리될 수 없습니다.

    또한 훈련 데이터를 로드하여 설명 가능성을 지원해야 합니다.

    텍스트에 대한 설명 가능성의 경우, 전체 텍스트가 다음 특성 중 하나여야 합니다. 사용자 정의 모델의 이미지에 대한 설명 가능성은 현재 릴리스에서 지원되지 않습니다.

  • 모니터를 지원하기 위한 모델의 출력 기준

    모델은 해당 모델에 있는 다양한 클래스의 예측 확률과 함께 입력 기능 벡터를 출력합니다.

    {
    "fields": [
        "name",
        "age",
        "position",
        "prediction",
        "probability"
    ],
    "labels": [
        "personal",
        "camping"
    ],
    "values": [
        [
            "john",
            33,
            "engineer",
            "personal",
            [
                0.6744664422398081,
                0.3255335577601919
            ]
        ],
        [
            "mike",
            23,
            "student"
            "camping",
            [
                0.2794765664946941,
                0.7205234335053059
            ]
        ]
    ]
    }
    

    이 예에서 "personal”“camping” 는 가능한 클래스이며 각 스코어링 출력의 점수는 두 클래스 모두에 지정됩니다. 예측 확률이 누락되면, 편향성 감지는 작동하지만, 자동-편향성은 그렇지 않습니다.

    모델 평가를 위해 REST API로 호출할 수 있는 라이브 채점 엔드포인트에서 채점 출력에 액세스할 수 있습니다. CUSTOMML, Amazon SageMaker, 및 IBM watsonx.ai Runtime의 경우, Watson OpenScale 기본 채점 엔드포인트에 직접 연결합니다.

사용자 정의 기계 학습 엔진

사용자 정의 기계 학습 엔진은 기계 학습 모델 및 웹 애플리케이션에 인프라 및 호스팅 기능을 제공합니다. 모델 평가에 지원되는 사용자 지정 머신 러닝 엔진은 다음 요구 사항을 준수해야 합니다:

  • 두 가지 유형의 REST API 엔드포인트를 노출시킵니다.

    • 검색 엔드포인트(배치의 목록 및 세부사항 가져오기)
    • 스코어링 엔드포인트(온라인 및 실시간 스코어링)
  • 모든 엔드포인트는 swagger 스펙과 호환 가능해야 지원됩니다.

  • 배치와의 사이에 발생하는 입력 페이로드 및 출력은 스펙에 설명되어 있는 JSON 파일 형식을 준수해야 합니다.

REST API 엔드포인트 사양을 보려면 REST API를 참조하세요.

사용자 지정 머신 러닝 엔진 추가

다음 방법 중 하나를 사용하여 사용자 지정 머신 러닝 제공업체와 함께 작동하도록 모델 평가를 구성할 수 있습니다:

  • 구성 인터페이스를 사용하여 첫 번째 사용자 지정 머신 러닝 제공업체를 추가할 수 있습니다. 자세한 정보는 사용자 정의 기계 학습 인스턴스 지정을 참조하십시오.
  • Python SDK를 사용하여 기계 학습 제공자를 추가할 수도 있습니다. 둘 이상의 제공자를 원하는 경우 이 방법을 사용해야 합니다. 자세한 정보는 사용자 정의 머신 러닝 엔진 추가를 참조하십시오.

자세히 알아보기

맞춤형 머신 러닝 모니터를 사용하여 다른 서비스와 상호작용할 수 있는 방법을 만들 수 있습니다.

사용자 정의 ML 서비스 인스턴스 지정

모델 평가를 구성하는 첫 번째 단계는 서비스 인스턴스를 지정하는 것입니다. 서비스 인스턴스는 사용자의 AI 모델 및 배치를 저장하는 곳입니다.

사용자 정의 서비스 인스턴스 연결

AI 모델과 배포는 모델 평가를 위해 서비스 인스턴스에서 연결됩니다. 사용자 정의 서비스에는 연결할 수 없습니다. 서비스를 연결하려면 ' 구성 ' 구성 탭 아이콘 ' 탭으로 이동하여 머신러닝 제공업체를 추가한 다음 ' 편집 ' 구성 탭 아이콘 ' 아이콘을 클릭합니다. 이름, 설명 및 사전 프로덕션 또는 프로덕션 환경 유형을 지정하는 것 외에, 이 유형의 서비스 인스턴스에 특정한 다음 정보를 제공해야 합니다.

  • 사용자 이름
  • 비밀번호
  • https://host:port 형식을 사용하는 API 엔드포인트(예: https://custom-serve-engine.example.net:8443)

목록을 요청하거나 개별 스코어링 엔드포인트를 입력하여 배치 연결 여부를 선택하십시오.

배치 목록 요청

배치 목록 요청 타일을 선택한 경우 인증 정보 및 API 엔드포인트를 입력하고 구성을 저장하십시오.

개별 스코어링 엔드포인트 제공

개별 스코어링 엔드포인트 입력 타일을 선택한 경우 API 엔드포인트에 대한 인증 정보를 입력한 후 구성을 저장하십시오.

이제 배치된 모델을 선택하고 모니터를 구성할 준비가 되었습니다. 배포된 모델은 인사이트 대시보드에 나열되며 대시보드에 추가를 클릭할 수 있습니다. 모니터할 배치를 선택하고 구성을 클릭하십시오.

자세한 정보는 모니터 구성을 참조하십시오.

사용자 정의 기계 학습 엔진 예

자신의 고유 사용자 정의 기계 학습 엔진을 설정하려면 다음 아이디어를 사용하십시오.

Python 및 Flask

Python 및 Flask를 사용하여 scikit-learn 모델을 제공할 수 있습니다.

드리프트 감지 모델을 생성하려면 노트북에서 scikit-learn 버전 0.20.2를 사용해야 합니다.

이 앱은 테스트용으로 그리고 IBM Cloud에서 애플리케이션으로 로컬에 배치할 수 있습니다.

Node.js

Node.js 여기에 작성된 사용자 정의 머신 러닝 엔진의 예를 찾을 수도 있습니다.

엔드 투 엔드 코드 패턴

사용자 지정 엔진 배포 및 모델 평가와의 통합에 대한 end2end 예시를 보여주는 코드 패턴입니다.

사용자 정의 기계 학습 엔진으로 페이로드 로깅

IBM이 IBM watsonx.ai 런타임 또는 사용자 지정 머신 러닝 엔진에 대해 페이로드 로깅을 구성하려면 ML 엔진을 사용자 지정으로 바인딩해야 합니다.

사용자 정의 기계 학습 엔진 추가

' non-watsonx.ai 런타임 엔진은 메타데이터를 사용하여 사용자 지정으로 추가되며,IBM ' watsonx.ai ' 런타임 서비스가 아닌 다른 런타임 서비스와 직접 통합되지 않습니다. ' wos_client.service_providers.add ' 방법을 사용하여 모델 평가를 위해 둘 이상의 머신러닝 엔진을 추가할 수 있습니다.

CUSTOM_ENGINE_CREDENTIALS = {
    "url": "***",
    "username": "***",
    "password": "***",
}

wos_client.service_providers.add(
        name=SERVICE_PROVIDER_NAME,
        description=SERVICE_PROVIDER_DESCRIPTION,
        service_type=ServiceTypes.CUSTOM_MACHINE_LEARNING,
        credentials=CustomCredentials(
            url= CUSTOM_ENGINE_CREDENTIALS['url'],
            username= CUSTOM_ENGINE_CREDENTIALS['username'],
            password= CUSTOM_ENGINE_CREDENTIALS['password'],
        ),
        background_mode=False
    ).result

다음 명령을 사용하여 서비스 제공자를 볼 수 있습니다.

client.service_providers.get(service_provider_id).result.to_dict()

일반 ML 바인딩

API 키로 보안 구성

사용자 지정 머신 러닝 엔진에 대한 보안을 구성하려면 모델 평가를 위한 인증 공급자로 IBM Cloud 및 IBM Cloud Pak for Data 사용할 수 있습니다. https://iam.cloud.ibm.com/identity/token URL을 사용하여 IBM Cloud에 대한 IAM 토큰을 생성하고 https://<$hostname>/icp4d-api/v1/authorize URL을 사용하여 Cloud Pak for Data에 대한 토큰을 생성할 수 있습니다.

POST /v1/deployments/{deployment_id}/online 요청을 사용하여 다음 형식으로 스코어링 API를 구현할 수 있습니다.

요청

{
	"input_data": [{
		"fields": [
			"name",
			"age",
			"position"
		],
		"values": [
			[
			"john",
			 33,
			"engineer"
			],
			[
			"mike",
			 23,
			"student"
			]
		]
	}]
}

응답

{
	"predictions": [{
		"fields": [
			"name",
			"age",
			"position",
			"prediction",
			"probability"
		],
		"labels": [
			"personal",
			"camping"
		],
		"values": [
			[
			"john",
			 33,
			"engineer",
			"personal",
			[
			0.6744664422398081,
			0.32553355776019194
			]
			],
			[
			"mike",
			 23,
			"student",
			"camping",
			[
			0.2794765664946941,
			0.7205234335053059
			]
			]
		]
	}]
}

사용자 정의 구독 추가

사용자 정의 구독을 추가하려면 다음 명령을 실행하십시오.

custom_asset = Asset(
        asset_id=asset['entity']['asset']['asset_id'],
        name=asset['entity']['asset']['name'],
        url = "dummy_url",
        asset_type=asset['entity']['asset']['asset_type'] if 'asset_type' in asset['entity']['asset'] else 'model',
        problem_type=ProblemType.MULTICLASS_CLASSIFICATION,
        input_data_type=InputDataType.STRUCTURED,
    )
deployment = AssetDeploymentRequest(
        deployment_id=asset['metadata']['guid'],
        url=asset['metadata']['url'],
        name=asset['entity']['name'],
        deployment_type=asset['entity']['type'],
        scoring_endpoint =  scoring_endpoint
    )
asset_properties = AssetPropertiesRequest(
        prediction_field='predicted_label',
        probability_fields = ["probability"],
        training_data_reference=None,
        training_data_schema=None,
        input_data_schema=None,
        output_data_schema=output_schema,
    )
result = ai_client.subscriptions.add(
        data_mart_id=cls.datamart_id,
        service_provider_id=cls.service_provider_id,
        asset=custom_asset,
        deployment=deployment,
        asset_properties=asset_properties,
        background_mode=False
    ).result

구독 목록을 가져오려면 다음 명령을 실행하십시오.

subscription_id = subscription_details.metadata.id
subscription_id

details: wos_client.subscriptions.get(subscription_id).result.to_dict()

페이로드 로깅 사용 설정

구독에서 페이로드 로깅을 사용으로 설정하려면 다음 명령을 실행하십시오.

request_data = {'fields': feature_columns, 
                'values': [[payload_values]]}

로깅 세부사항을 가져오려면 다음 명령을 실행하십시오.

response_data = {'fields': list(result['predictions'][0]),
                 'values': [list(x.values()) for x in result['predictions']]}

스코어링 및 페이로드 로깅

  • 모델을 스코어링하십시오.

  • 페이로드 로깅 테이블에 요청 및 응답 저장

    records_list = [PayloadRecord(request=request_data, response=response_data, response_time=response_time), PayloadRecord(request=request_data, response=response_data, response_time=response_time)]
    
    subscription.payload_logging.store(records=records_list)
    

Python 외의 언어의 경우 REST API를 사용하여 페이로드를 로깅할 수도 있습니다.

상위 주제: 지원되는 머신 러닝 엔진, 프레임워크 및 모델

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