SQL Server에 미리 학습된 기계 학습 모델 설치

적용 대상: SQL Server 2016(13.x), SQL Server 2017(14.x), SQL Server 2019(15.x)

이 문서는 SQL Server 2016(13.x), SQL Server 2017(14.x) 및 SQL Server 2019(15.x)에 적용됩니다.

이 문서에서는 PowerShell을 사용하여 ‘감정 분석’ 및 ‘이미지 기능화’용으로 미리 학습된 무료 기계 학습 모델을 R 또는 Python이 통합된 SQL Server 인스턴스에 추가하는 방법을 설명합니다. 미리 학습된 모델은 Microsoft에서 빌드하고 사용 가능한 상태가 되며 설치 후 작업으로 인스턴스에 추가됩니다. 이러한 모델에 대한 자세한 내용은 이 문서의 리소스 섹션을 참조하세요.

SQL Server 2022(16.x)부터 R, Python 및 Java용 런타임은 더 이상 SQL 설치 시 함께 설치되지 않습니다. 대신 원하는 R 및/또는 Python 사용자 지정 런타임과 패키지를 설치합니다. 자세한 내용은 Windows에서 SQL Server 2022 Machine Learning Services(Python 및 R) 설치를 참조하세요.

미리 학습된 모델은 설치 후 MicrosoftML(R) 및 microsoftml(Python) 라이브러리의 특정 기능을 지원하는 구현 세부 정보로 간주됩니다. 모델을 보거나, 사용자 지정하거나, 다시 학습시켜서는 안 되고(그럴 수도 없고) 사용자 지정 코드의 독립적인 리소스로 취급하거나 다른 함수를 페어링할 수도 없습니다.

미리 학습된 모델을 사용하려면 다음 표에 나열된 함수를 호출합니다.

R 함수(MicrosoftML) Python 함수(microsoftml) 사용
getSentiment get_sentiment 텍스트 입력에 대한 긍정-부정 감정 점수를 생성합니다.
featurizeImage featurize_image 이미지 파일 입력에서 텍스트 정보를 추출합니다.

사전 요구 사항

기계 학습 알고리즘은 컴퓨팅 집약적입니다. 모든 샘플 데이터를 사용하는 자습서 연습 완료를 포함한 중소 규모의 워크로드에 16GB RAM을 권장합니다.

미리 학습된 모델을 추가하려면 컴퓨터 및 SQL Server에 대한 관리자 권한이 있어야 합니다.

외부 스크립트가 사용하도록 설정되어 있고 SQL Server LaunchPad 서비스가 실행되고 있어야 합니다. 설치 지침은 이러한 기능을 사용하도록 설정하고 확인하는 단계를 제공합니다.

사용 중인 SQL Server 버전의 최신 누적 업데이트를 다운로드하고 설치합니다. Microsoft SQL Server에 대한 최신 업데이트를 참조하세요.

MicrosoftML R 패키지 또는 microsoftml Python 패키지에는 미리 학습된 모델이 들어 있습니다.

SQL Server Machine Learning Services에는 기계 학습 라이브러리의 언어 버전이 모두 포함되어 있으므로 이 사전 요구 사항은 사용자의 추가 작업 없이도 충족됩니다. 라이브러리가 제공되므로 이 문서에 설명된 PowerShell 스크립트를 사용하여 미리 학습된 모델을 이러한 라이브러리에 추가할 수 있습니다.

MicrosoftML R 패키지에는 미리 학습된 모델이 들어 있습니다.

R 전용 SQL Server R Services에는 기본적으로 MicrosoftML 패키지가 포함되지 않습니다. MicrosoftML을 추가하려면 구성 요소 업그레이드를 수행해야 합니다. 구성 요소 업그레이드의 이점 중 하나는 PowerShell 스크립트를 실행할 필요 없이 미리 학습 된 모델을 동시에 추가할 수 있다는 것입니다. 그러나 이미 업그레이드했지만 처음에 미리 학습된 모델을 추가하지 못한 경우 이 문서에 설명된 대로 PowerShell 스크립트를 실행할 수 있습니다. 이 방법은 SQL Server의 두 버전 모두에서 작동합니다. 이 작업을 수행하기 전에 C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\R_SERVICES\library에 MicrosoftML 라이브러리가 있는지 확인합니다.

미리 학습된 모델 설치 여부 확인

R 및 Python 모델의 설치 경로는 다음과 같습니다.

  • R의 경우: C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\R_SERVICES\library\MicrosoftML\mxLibs\x64

  • Python의 경우: C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\PYTHON_SERVICES\Lib\site-packages\microsoftml\mxLibs

모델 파일 이름은 다음과 같습니다.

  • AlexNet_Updated.model
  • ImageNet1K_mean.xml
  • pretrained.model
  • ResNet_101_Updated.model
  • ResNet_18_Updated.model
  • ResNet_50_Updated.model

모델이 이미 설치되어 있는 경우에는 유효성 검사 단계로 이동하여 사용 가능 여부를 확인합니다.

설치 스크립트 다운로드

https://aka.ms/mlm4sql을 방문하여 Install-MLModels.ps1 파일을 다운로드합니다.

상승된 권한으로 실행

  1. PowerShell을 시작합니다. 작업 표시줄에서 PowerShell 프로그램 아이콘을 마우스 오른쪽 단추로 클릭하고 관리자 권한으로 실행을 선택합니다.

  2. 설치하는 동안 권장되는 실행 정책은 "RemoteSigned"입니다. PowerShell 실행 정책 설정에 대한 자세한 내용은 Set-ExecutionPolicy를 참조하세요. 예를 들어:

    Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
    
  3. 설치 스크립트 파일의 정규화된 경로를 입력하고 인스턴스 이름을 포함합니다. 다운로드 폴더와 기본 인스턴스를 가정하면 명령은 다음과 같이 표시될 수 있습니다.

    PS C:\WINDOWS\system32> C:\Users\<user-name>\Downloads\Install-MLModels.ps1 MSSQLSERVER
    

출력

R 및 Python을 사용하여 인터넷에 연결된 SQL Server Machine Learning Services 기본 인스턴스에서 다음과 비슷한 메시지가 표시됩니다.

MSSQL14.MSSQLSERVER
     Verifying R models [9.2.0.24]
     Downloading R models [C:\Users\<user-name>\AppData\Local\Temp]
     Installing R models [C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\R_SERVICES\]
     Verifying Python models [9.2.0.24]
     Installing Python models [C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\PYTHON_SERVICES\]
PS C:\WINDOWS\system32>

설치 확인

먼저 mxlibs 폴더에서 새 파일을 확인합니다. 다음으로 데모 코드를 실행하여 모델이 설치되어 있고 작동하는지 확인합니다.

R 확인 단계

  1. C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\R_SERVICES\bin\x64에서 RGUI.EXE를 시작합니다.

  2. 명령 프롬프트에 다음 R 스크립트를 붙여넣습니다.

    # Create the data
    CustomerReviews <- data.frame(Review = c(
    "I really did not like the taste of it",
    "It was surprisingly quite good!",
    "I will never ever ever go to that place again!!"),
    stringsAsFactors = FALSE)
    
    # Get the sentiment scores
    sentimentScores <- rxFeaturize(data = CustomerReviews, 
                                    mlTransforms = getSentiment(vars = list(SentimentScore = "Review")))
    
    # Let's translate the score to something more meaningful
    sentimentScores$PredictedRating <- ifelse(sentimentScores$SentimentScore > 0.6, 
                                            "AWESOMENESS", "BLAH")
    
    # Let's look at the results
    sentimentScores
    
  3. Enter 키를 눌러 감정 점수를 확인합니다. 출력은 다음과 같이 표시됩니다.

    > sentimentScores
                                            Review SentimentScore
    1           I really did not like the taste of it      0.4617899
    2                 It was surprisingly quite good!      0.9601924
    3 I will never ever ever go to that place again!!      0.3103435
    PredictedRating
    1            BLAH
    2     AWESOMENESS
    3            BLAH
    

Python 확인 단계

  1. C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\PYTHON_SERVICES에서 Python.exe를 시작합니다.

  2. 명령 프롬프트에 다음 Python 스크립트 붙여넣기

    import numpy
    import pandas
    from microsoftml import rx_logistic_regression, rx_featurize, rx_predict, get_sentiment
    
    # Create the data
    customer_reviews = pandas.DataFrame(data=dict(review=[
                "I really did not like the taste of it",
                "It was surprisingly quite good!",
                "I will never ever ever go to that place again!!"]))
    
    # Get the sentiment scores
    sentiment_scores = rx_featurize(
        data=customer_reviews,
        ml_transforms=[get_sentiment(cols=dict(scores="review"))])
    
    # Let's translate the score to something more meaningful
    sentiment_scores["eval"] = sentiment_scores.scores.apply(
                lambda score: "AWESOMENESS" if score > 0.6 else "BLAH")
    print(sentiment_scores)
    
  3. Enter 키를 눌러 점수를 출력합니다. 출력은 다음과 같이 표시됩니다.

    >>> print(sentiment_scores)
                                                review    scores         eval
    0            I really did not like the taste of it  0.461790         BLAH
    1                  It was surprisingly quite good!  0.960192  AWESOMENESS
    2  I will never ever ever go to that place again!!  0.310344         BLAH
    >>>
    

참고

데모 스크립트가 실패할 경우 먼저 파일 위치를 확인합니다. SQL Server 인스턴스가 여러 개 있는 시스템 또는 독립 실행형 버전과 함께 나란히 실행되는 인스턴스의 경우에는 설치 스크립트에서 환경을 잘못 읽을 수 있으며 파일을 잘못된 위치에 저장할 수 있습니다. 일반적으로 파일을 올바른 mxlib 폴더에 수동으로 복사하면 문제가 해결됩니다.

미리 학습된 모델을 사용하는 예제

다음 링크에는 미리 학습된 모델을 호출하는 예제 코드가 포함되어 있습니다.

연구 및 리소스

현재 사용할 수 있는 모델은 감정 분석 및 이미지 분류를 위한 심층 신경망(DNN) 모델입니다. 미리 학습된 모든 모델은 Microsoft의 Computation Network Toolkit, 즉 CNTK를 사용하여 학습되었습니다.

각 네트워크의 구성은 다음 참조 구현을 기반으로 합니다.

  • ResNet-18
  • ResNet-50
  • ResNet-101
  • AlexNet

이러한 딥 러닝 모델에 사용되는 알고리즘과 이러한 알고리즘이 CNTK를 사용하여 구현 및 학습되는 방법에 대한 자세한 내용은 다음 문서를 참조하세요.

참고 항목