Stream Analytics의 Machine Learning 스튜디오(클래식) 통합

Important

Azure Machine Learning Studio(클래식)에 대한 지원은 2024년 8월 31일에 종료됩니다. 해당 날짜까지 Azure Machine Learning으로 전환하는 것이 좋습니다.

2021년 12월 1일부터 새 Machine Learning Studio(클래식) 리소스(작업 영역 및 웹 서비스 계획)를 만들 수 없습니다. 2024년 8월 31일까지 기존 Machine Learning Studio(클래식) 실험 및 웹 서비스를 계속 사용할 수 있습니다. 자세한 내용은 다음을 참조하세요.

Machine Learning Studio(클래식) 설명서는 사용 중지 중이며 나중에 업데이트되지 않을 수 있습니다.

Azure Stream Analytics는 Azure Machine Learning Studio(클래식) 엔드포인트를 호출하는 UDF(사용자 정의 함수)를 지원합니다. Stream Analytics REST API 라이브러리이 기능에 대한 REST API 지원을 설명합니다.

이 문서에서는 Stream Analytics에서 이 기능을 성공적으로 구현하는 데 필요한 추가 정보를 제공합니다. 자습서도 사용할 수 있습니다.

개요: Machine Learning Studio(클래식) 용어

Machine Learning Studio(클래식)는 데이터에 예측 분석 솔루션을 빌드, 테스트 및 배포하는 데 사용할 수 있는 공동 작업 끌어서 놓기 도구를 제공합니다. Machine Learning Studio(클래식)를 사용하여 다음 기계 학습 리소스와 상호 작용할 수 있습니다.

  • 작업 영역: 관리 및 제어를 위해 다른 모든 기계 학습 리소스를 함께 보관하는 컨테이너입니다.
  • 실험: 데이터 과학자가 데이터 세트를 활용하고 기계 학습 모델을 학습하기 위해 만드는 테스트입니다.
  • 엔드포인트: 기능을 입력으로 사용하고, 지정된 기계 학습 모델을 적용하고, 채점된 출력을 반환하는 데 사용하는 개체입니다.
  • 점수 매기기 웹 서비스: 엔드포인트의 컬렉션입니다.

각 엔드포인트에는 일괄 처리 실행 및 동기 실행을 위한 API가 있습니다. Stream Analytics은 동기 실행을 사용합니다. 특정 서비스를 Machine Learning Studio(클래식)의 요청/응답 서비스라고 합니다.

Stream Analytics 작업에 필요한 Machine Learning Studio(클래식) 리소스

Stream Analytics 작업 처리, 요청/응답 엔드포인트, API 키 및 Swagger 정의는 모두 성공적인 실행에 필요합니다. Stream Analytics에는 Swagger 엔드포인트에 대한 URL을 생성하고, 인터페이스를 조회하고, 사용자에게 기본 UDF 정의를 반환하는 추가 엔드포인트가 있습니다.

REST API를 통해 Stream Analytics 및 Machine Learning Studio(클래식) UDF 구성

REST API를 사용하여 Machine Learning Studio(클래식) 함수를 호출하도록 작업을 구성할 수 있습니다.

  1. Stream Analytics 작업을 만듭니다.
  2. 입력을 정의합니다.
  3. 출력을 정의합니다.
  4. UDF를 만듭니다.
  5. UDF를 호출하는 Stream Analytics 변환을 작성합니다.
  6. 작업을 시작합니다.

기본 속성을 사용하여 UDF 만들기

예를 들어 다음 샘플 코드는 Machine Learning Studio(클래식) 엔드포인트에 바인딩하는 newudf라는 스칼라 UDF를 만듭니다. 선택한 서비스에 대한 API 도움말 페이지에서 값(서비스 URI)을 찾을 endpoint 수 있습니다. 서비스의 기본 페이지에서 값을 찾을 apiKey 수 있습니다.

PUT : /subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/Microsoft.StreamAnalytics/streamingjobs/<streamingjobName>/functions/<udfName>?api-version=<apiVersion>

요청 본문 예제:

    {
        "name": "newudf",
        "properties": {
            "type": "Scalar",
            "properties": {
                "binding": {
                    "type": "Microsoft.MachineLearning/WebService",
                    "properties": {
                        "endpoint": "https://ussouthcentral.services.azureml.net/workspaces/f80d5d7a77fb4b46bf2a30c63c078dca/services/b7be5e40fd194258796fb402c1958eaf/execute ",
                        "apiKey": "replacekeyhere"
                    }
                }
            }
        }
    }

기본 UDF에 대한 RetrieveDefaultDefinition 엔드포인트 호출

기본 UDF를 만든 후에는 UDF의 전체 정의가 필요합니다. 엔드포인트를 RetrieveDefaultDefinition 사용하면 Machine Learning Studio(클래식) 엔드포인트에 바인딩된 스칼라 함수에 대한 기본 정의를 가져올 수 있습니다.

다음 페이로드를 사용하려면 Studio(클래식) 엔드포인트에 바인딩된 스칼라 함수에 대한 기본 UDF 정의를 가져와야 합니다. 요청이 이미 제공했기 때문에 실제 엔드포인트를 PUT 지정하지 않습니다.

요청이 명시적으로 엔드포인트를 제공한 경우 Stream Analytics는 요청에서 엔드포인트를 호출합니다. 그렇지 않으면 Stream Analytics는 원래 참조된 엔드포인트를 사용합니다. 여기서 UDF는 단일 문자열 매개 변수(문장)를 사용하고 해당 문장의 레이블을 나타내는 Sentiment 단일 형식 string 의 출력을 반환합니다.

POST : /subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/Microsoft.StreamAnalytics/streamingjobs/<streamingjobName>/functions/<udfName>/RetrieveDefaultDefinition?api-version=<apiVersion>

요청 본문 예제:

    {
        "bindingType": "Microsoft.MachineLearning/WebService",
        "bindingRetrievalProperties": {
            "executeEndpoint": null,
            "udfType": "Scalar"
        }
    }

이 요청의 출력은 다음 예제와 같습니다.

    {
        "name": "newudf",
        "properties": {
            "type": "Scalar",
            "properties": {
                "inputs": [{
                    "dataType": "nvarchar(max)",
                    "isConfigurationParameter": null
                }],
                "output": {
                    "dataType": "nvarchar(max)"
                },
                "binding": {
                    "type": "Microsoft.MachineLearning/WebService",
                    "properties": {
                        "endpoint": "https://ussouthcentral.services.azureml.net/workspaces/f80d5d7a77ga4a4bbf2a30c63c078dca/services/b7be5e40fd194258896fb602c1858eaf/execute",
                        "apiKey": null,
                        "inputs": {
                            "name": "input1",
                            "columnNames": [{
                                "name": "tweet",
                                "dataType": "string",
                                "mapTo": 0
                            }]
                        },
                        "outputs": [{
                            "name": "Sentiment",
                            "dataType": "string"
                        }],
                        "batchSize": 10
                    }
                }
            }
        }
    }

응답으로 UDF 패치

이제 이전 응답으로 UDF를 패치해야 합니다.

PATCH : /subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/Microsoft.StreamAnalytics/streamingjobs/<streamingjobName>/functions/<udfName>?api-version=<apiVersion>

요청 본문(출력):RetrieveDefaultDefinition

    {
        "name": "newudf",
        "properties": {
            "type": "Scalar",
            "properties": {
                "inputs": [{
                    "dataType": "nvarchar(max)",
                    "isConfigurationParameter": null
                }],
                "output": {
                    "dataType": "nvarchar(max)"
                },
                "binding": {
                    "type": "Microsoft.MachineLearning/WebService",
                    "properties": {
                        "endpoint": "https://ussouthcentral.services.azureml.net/workspaces/f80d5d7a77ga4a4bbf2a30c63c078dca/services/b7be5e40fd194258896fb602c1858eaf/execute",
                        "apiKey": null,
                        "inputs": {
                            "name": "input1",
                            "columnNames": [{
                                "name": "tweet",
                                "dataType": "string",
                                "mapTo": 0
                            }]
                        },
                        "outputs": [{
                            "name": "Sentiment",
                            "dataType": "string"
                        }],
                        "batchSize": 10
                    }
                }
            }
        }
    }

UDF를 호출하는 Stream Analytics 변환 구현

모든 입력 이벤트에 대한 UDF(여기 이름 scoreTweet)를 쿼리하고 해당 이벤트에 대한 응답을 출력에 씁니다.

    {
        "name": "transformation",
        "properties": {
            "streamingUnits": null,
            "query": "select *,scoreTweet(Tweet) TweetSentiment into blobOutput from blobInput"
        }
    }

도움말 보기

추가 지원을 받으려면 Azure Stream Analytics대한 Microsoft Q&A 페이지를 사용해 보세요.

다음 단계