다음을 통해 공유


SynapseML을 통해 모델 빌드

이 문서에서는 SynapseML을 사용하여 기계 학습 모델을 빌드하는 방법을 설명하고 SynapseML이 복잡한 기계 학습 작업을 간소화하는 방법을 보여 줍니다. SynapseML을 사용하면 기능화 단계 및 LightGBM 회귀 단계가 포함된 소규모 기계 학습 학습 파이프라인을 만들 수 있습니다. 파이프라인은 도서 리뷰 데이터 세트의 리뷰 텍스트를 기반으로 평점을 예측합니다. 또한 SynapseML이 미리 빌드된 모델의 사용을 간소화하여 기계 학습 문제를 해결하는 방법도 확인할 수 있습니다.

필수 조건

리소스 준비

모델 및 파이프라인을 빌드하는 데 필요한 도구와 리소스를 만듭니다.

  1. 새 Notebook을 만듭니다.
  2. 레이크하우스에 Notebook을 연결합니다. 기존 레이크하우스를 추가하거나 새 레이크하우스를 만들려면 왼쪽에 있는 탐색기 아래에서 레이크하우스를 확장한 다음 추가를 선택합니다.
  3. 빠른 시작: Azure AI 서비스에 대한 다중 서비스 리소스 만들기의 지침에 따라 Azure AI 서비스 키를 가져옵니다.
  4. Azure Key Vault 인스턴스를 만들고 Azure AI 서비스 키를 키 자격 증명 모음에 비밀로 추가합니다.
  5. 키 자격 증명 모음의 이름과 암호를 적어 둡니다. 이 문서의 뒷부분에서 원스텝 변환을 실행하려면 이 정보가 필요합니다.

환경 설정

Notebook에서 SynapseML 라이브러리를 가져오고 Spark 세션을 초기화합니다.

from pyspark.sql import SparkSession
from synapse.ml.core.platform import *

spark = SparkSession.builder.getOrCreate()

데이터 세트 로드

데이터 세트를 로드하고 학습 세트와 테스트 세트로 분할합니다.

train, test = (
    spark.read.parquet(
        "wasbs://publicwasb@mmlspark.blob.core.windows.net/BookReviewsFromAmazon10K.parquet"
    )
    .limit(1000)
    .cache()
    .randomSplit([0.8, 0.2])
)

display(train)

학습 파이프라인 만들기

TextFeaturizer 라이브러리의 synapse.ml.featurize.text를 사용하여 데이터를 기능화하고 LightGBMRegressor 함수를 사용하여 등급을 도출하는 파이프라인을 만듭니다.

from pyspark.ml import Pipeline
from synapse.ml.featurize.text import TextFeaturizer
from synapse.ml.lightgbm import LightGBMRegressor

model = Pipeline(
    stages=[
        TextFeaturizer(inputCol="text", outputCol="features"),
        LightGBMRegressor(featuresCol="features", labelCol="rating", dataTransferMode="bulk")
    ]
).fit(train)

테스트 데이터의 출력 예측

모델에서 transform 함수를 호출하여 테스트 데이터의 출력을 예측하고 데이터 프레임으로 표시합니다.

display(model.transform(test))

Azure AI 서비스를 사용하여 원스텝으로 데이터 변환

또는 미리 빌드된 솔루션이 있는 이러한 종류의 작업의 경우 SynapseML과 Azure AI 서비스와의 통합을 사용하여 원스템으로 데이터를 변환할 수 있습니다. 다음 코드를 다음과 같이 교체하여 실행합니다.

  • <secret-name>을 Azure AI 서비스 키 비밀의 이름으로 바꿉니다.
  • <key-vault-name>을 키 자격 증명 모음의 이름으로 바꿉니다.
from synapse.ml.services import TextSentiment
from synapse.ml.core.platform import find_secret

model = TextSentiment(
    textCol="text",
    outputCol="sentiment",
    subscriptionKey=find_secret("<secret-name>", "<key-vault-name>")
).setLocation("eastus")

display(model.transform(test))