Windows에 SQL Server Machine Learning Services(Python 및 R) 설치

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

이 문서에서는 Windows에 SQL Server Machine Learning Services를 설치하는 방법을 보여 줍니다. Machine Learning Services를 사용하여 데이터베이스 내에서 R 또는 Python 스크립트를 실행할 수 있습니다.

중요

이 지침은 SQL Server 2016(13.x), SQL Server 2017(14.x) 및 SQL Server 2019(15.x)에 적용됩니다. SQL Server 2022(16.x)의 경우 Windows에 SQL Server 2022 Machine Learning Services 설치를 참조하세요.

사전 설치 검사 목록

  • 데이터베이스 엔진 인스턴스가 필요합니다. 기존 독립 실행형 인스턴스에 증분 방식으로 추가할 수는 있지만 Python 또는 R 기능만 설치할 수는 없습니다.

  • 비즈니스 연속성을 위해 Always On 가용성 그룹은 Machine Learning Services에 대해 지원됩니다. 각 노드에서 Machine Learning Services를 설치하고 패키지를 구성합니다.

  • SQL Server 2017의 Always On 장애 조치(failover) 클러스터 인스턴스에서는 Machine Learning Services 설치가 지원되지 않습니다. SQL Server 2019 이상에서 지원됩니다. 설치 시 Machine Learning Services를 설치해야 하며, 설치한 후에는 기존 장애 조치(failover) 클러스터 인스턴스에 기능을 추가할 수 없습니다.

  • 도메인 컨트롤러에 Machine Learning Services를 설치하지 마세요. 설치 시 Machine Learning Services 부분이 실패하게 됩니다.

  • 데이터베이스 인스턴스를 실행하는 동일한 컴퓨터에 공유 기능>Machine Learning Server(독립 실행형)를 설치하지 마세요. 독립 실행형 서버가 동일한 리소스에 대해 경합하여 두 설치 모두 성능이 저하됩니다.

  • 다른 버전의 Python 및 R과 함께 설치할 수 있지만 권장하지는 않습니다. SQL Server 인스턴스가 오픈 소스 R 및 Anaconda 배포의 자체 복사본을 사용하기 때문에 지원됩니다. SQL Server 외부의 컴퓨터에서 Python 및 R을 사용하는 코드를 실행하면 문제가 발생할 수 있으므로 권장하지 않습니다.

    • 다른 라이브러리와 다른 실행 파일을 사용하면 SQL Server에서 실행 중인 것과 일치하지 않는 결과가 생성됩니다.
    • SQL Server는 외부 라이브러리에서 실행되는 R 및 Python 스크립트를 관리할 수 없으므로 리소스 경합이 초래됩니다.

참고

Machine Learning Services는 기본적으로 SQL Server 빅 데이터 클러스터에 설치됩니다. 빅 데이터 클러스터를 사용하는 경우에는 이 문서의 단계를 수행하지 않아도 됩니다. 자세한 내용은 빅 데이터 클러스터에서 Machine Learning Services(Python 및 R) 사용을 참조하세요.

중요

설정을 마치면 이 문서에 설명된 구성 후 단계를 완료해야 합니다. 이러한 단계에는 SQL Server에서 외부 스크립트를 사용하도록 설정하고 SQL Server가 사용자를 대신하여 R 및 Python 작업을 실행하는 데 필요한 계정을 추가하는 것이 포함됩니다. 일반적으로 구성 변경 시 인스턴스를 다시 시작하거나 실행 패드 서비스를 다시 시작해야 합니다.

설치 미디어 다운로드

SQL Server 다운로드 위치는 버전에 따라 다릅니다.

  • SQL Server Enterprise, Standard 및 Express Edition 이러한 버전은 프로덕션 용도로 사용이 허가됩니다. Enterprise 및 Standard Edition의 경우 설치 미디어를 얻으려면 소프트웨어 공급업체에 문의하세요. 구매 정보 및 Microsoft 파트너 디렉터리는 Microsoft 구매 웹 사이트에서 확인할 수 있습니다.
  • 최신 무료 버전

Machine Learning Services와 Python 및 R 통합을 지원하는 SQL Server 버전에 대한 자세한 내용은 SQL Server 2017의 버전과 지원하는 기능을 참조하세요.

Machine Learning Services와 Python 및 R 통합을 지원하는 SQL Server 버전에 대한 자세한 내용은 SQL Server 2019의 버전 및 지원되는 기능을 참조하세요.

설치 프로그램 실행

로컬 설치의 경우 설치 프로그램을 관리자로서 실행해야 합니다. 원격 공유로 SQL Server를 설치하는 경우 원격 공유에 대한 읽기 및 실행 권한이 있는 도메인 계정을 사용해야 합니다.

  1. SQL Server에 대한 설치 마법사를 시작합니다.

  2. 설치 탭에서 새 SQL Server 독립 실행형 설치 또는 기존 설치에 기능 추가를 선택합니다.

    Screenshot that shows the option for creating a SQL Server standalone installation or adding features to an existing installation.

    Screenshot that shows the option for using a new SQL Server standalone installation or adding features to an existing installation.

  3. 기능 선택 페이지에서 다음 옵션을 선택합니다.

    • 데이터베이스 엔진 서비스

      SQL Server에서 R 및 Python을 사용하려면 데이터베이스 엔진의 인스턴스를 설치해야 합니다. 기본 인스턴스나 명명된 인스턴스를 사용할 수 있습니다.

    • Machine Learning Services(데이터베이스 내)

      이 옵션은 R 및 Python 스크립트 실행을 지원하는 데이터베이스 서비스를 설치합니다.

    • 데이터베이스 엔진 서비스

      SQL Server에서 R 또는 Python을 사용하려면 데이터베이스 엔진의 인스턴스를 설치해야 합니다. 기본 인스턴스나 명명된 인스턴스를 사용할 수 있습니다.

    • Machine Learning Services 및 언어 확장

      이 옵션은 R 및 Python 스크립트 실행을 지원하는 데이터베이스 서비스를 설치합니다.

    • R

      Microsoft R 패키지, 인터프리터 및 오픈 소스 R을 추가하려면 이 옵션을 선택합니다.

    • Python

      Microsoft Python 패키지, Python 3.5 실행 파일을 추가하고 Anaconda 배포에서 라이브러리를 선택하려면 이 옵션을 선택합니다.

    Java 설치 및 사용에 대한 자세한 내용은 Windows에 SQL Server Java 언어 확장 설치를 참조하세요.

    Screenshot that shows feature options for R and Python.

    Screenshot that shows selecting feature options for R and Python.

    참고 항목

    공유 기능에서 Machine Learning Server(독립 실행형) 옵션을 선택하지 마세요. 이 옵션은 별도의 컴퓨터에서 사용하기 위한 것입니다.

  1. Microsoft R Open 설치에 동의 페이지에서 동의>다음을 선택합니다.

    사용권 계약은 다음에 적용됩니다.

    • Microsoft R Open.
    • 오픈 소스 R 기본 패키지 및 도구
    • Microsoft 개발 팀의 고급 R 패키지 및 연결 공급자입니다.
  2. Python 설치에 동의 페이지에서 동의>다음을 선택합니다. Python 오픈 소스 사용권 계약은 Anaconda 및 관련 도구뿐만 아니라 Microsoft 개발 팀의 몇 가지 새로운 Python 라이브러리에 대해서도 적용됩니다.

    참고

    사용 중인 컴퓨터가 인터넷에 연결되어 있지 않으면 이 지점에서 설치를 잠시 중단하고 설치 관리자를 별도로 다운로드할 수 있습니다. 자세한 내용은 인터넷 액세스 없이 기계 학습 구성 요소 설치를 참조하세요.

  3. 설치 준비 완료 페이지에서 이러한 선택 사항이 포함되어 있는지 확인하고 설치를 선택합니다.

    • 데이터베이스 엔진 서비스
    • Machine Learning Services(데이터베이스 내)
    • R 또는 Python 또는 둘 다

    구성 파일이 저장된 ..\Setup Bootstrap\Log 경로 아래에 있는 폴더의 위치를 확인합니다. 설치가 완료되면 요약 파일에 설치된 구성 요소를 검토할 수 있습니다.

  4. 설치가 완료된 후 컴퓨터를 다시 시작하라는 메시지가 나타나면 다시 시작합니다. 설치가 끝나면 설치 마법사에 표시되는 메시지를 읽어야 합니다. 자세한 내용은 SQL Server 설치 로그 파일 보기 및 읽기를 참조하세요.

  1. Microsoft R Open 설치에 동의 페이지에서 동의>다음을 선택합니다. 이 라이선스 계약은 Microsoft R Open을 포괄하며, 여기에는 오픈 소스 R 기반 패키지 및 도구의 배포가 포함됩니다. Microsoft 개발 팀의 고급 R 패키지 및 연결 공급자도 포함됩니다.

  2. Python 설치에 동의 페이지에서 동의>다음을 선택합니다. Python 오픈 소스 사용권 계약은 Anaconda 및 관련 도구뿐만 아니라 Microsoft 개발 팀의 몇 가지 새로운 Python 라이브러리에 대해서도 적용됩니다.

  3. 설치 준비 완료 페이지에서 이러한 선택 사항이 포함되어 있는지 확인하고 설치를 선택합니다.

    • 데이터베이스 엔진 서비스
    • Machine Learning Services(데이터베이스 내)
    • R 또는 Python 또는 둘 다

    구성 파일이 저장된 ..\Setup Bootstrap\Log 경로 아래에 있는 폴더의 위치를 확인합니다. 설치가 완료되면 요약 파일에 설치된 구성 요소를 검토할 수 있습니다.

  4. 설치가 완료된 후 컴퓨터를 다시 시작하라는 메시지가 나타나면 다시 시작합니다. 설치가 끝나면 설치 마법사에 표시되는 메시지를 읽어야 합니다. 자세한 내용은 SQL Server 설치 로그 파일 보기 및 읽기를 참조하세요.

환경 변수 설정

R 기능 통합의 경우에만 MKL_CBWR 환경 변수를 설정하여 Intel MKL(Math Kernel Library) 계산에서 일관성 있는 출력을 보장해야 합니다.

  1. 제어판에서 시스템 및 보안>시스템>고급 시스템 설정>환경 변수를 선택합니다.

  2. 새 사용자 또는 시스템 변수를 만듭니다.

    • 변수 이름을 MKL_CBWR로 설정합니다.
    • 변수 값을 AUTO로 설정합니다.

이 단계를 수행하려면 서버를 다시 시작해야 합니다. 스크립트 실행을 사용하도록 설정하려는 경우 모든 구성 작업이 완료될 때까지 다시 시작을 보류할 수 있습니다.

스크립트 실행 사용

  1. SQL Server Management Studio(SSMS) 또는 Azure Data Studio를 사용하여 SQL Server Machine Learning Services를 설치한 인스턴스에 연결합니다.

  2. 새 쿼리를 선택하여 쿼리 창을 열고 다음 명령을 실행합니다.

    EXEC sp_configure
    
  3. 이때 속성 값 external scripts enabled0이어야 합니다. 이 기능은 기본적으로 꺼져 있습니다. R 또는 Python 스크립트를 실행할 수 있도록 설정하려면 다음 문을 실행합니다.

    EXEC sp_configure  'external scripts enabled', 1
    RECONFIGURE WITH OVERRIDE
    

    R 언어에 대한 기능을 이미 사용하도록 설정한 경우 Python에 대해 RECONFIGURE을 실행하지 마세요. 기본 확장성 플랫폼은 두 언어를 모두 지원합니다.

서비스를 다시 시작합니다.

설치가 완료되면 데이터베이스 엔진을 다시 시작합니다. 서비스를 다시 시작하면 관련 SQL Server 실행 패드 서비스가 자동으로 다시 시작됩니다.

다음 방법 중 원하는 방법을 사용하여 서비스를 다시 시작할 수 있습니다.

  • SSMS의 개체 탐색기 인스턴스에 대한 다시 시작 명령을 마우스 오른쪽 단추로 클릭합니다.
  • 제어판의 서비스 MMC(Microsoft Management Console) 항목
  • SQL Server 구성 관리자

설치 확인

외부 스크립트를 시작하는 데 사용되는 모든 구성 요소가 실행 중인지 확인하려면 다음 단계를 사용합니다.

  1. SQL Server Management Studio에서 새 쿼리 창을 열고 다음 명령을 실행합니다.

    EXECUTE sp_configure  'external scripts enabled'
    

    run_value1로 설정합니다.

  2. 서비스 제어판 항목 또는 SQL Server Configuration Manager를 열고 SQL Server 실행 패드 서비스가 실행 중인지 확인합니다. R 또는 Python이 설치된 모든 데이터베이스 엔진 인스턴스에 대한 서비스가 하나는 있어야 합니다. 서비스에 대한 자세한 내용은 SQL Server Machine Learning Services의 확장성 아키텍처를 참조하세요.

  3. 실행 패드가 실행 중인 경우에는 간단한 R 및 Python 스크립트를 실행하여 외부 스크립팅 런타임이 SQL Server와 통신할 수 있을지 확인할 수 있습니다.

    SQL Server Management Studio에서 새 쿼리 창을 열고 다음과 같은 스크립트를 실행합니다.

    • R의 경우:

      EXEC sp_execute_external_script  @language =N'R',
      @script=N'
      OutputDataSet <- InputDataSet;
      ',
      @input_data_1 =N'SELECT 1 AS hello'
      WITH RESULT SETS (([hello] int not null));
      GO
      
    • Python의 경우:

      EXEC sp_execute_external_script  @language =N'Python',
      @script=N'
      OutputDataSet = InputDataSet;
      ',
      @input_data_1 =N'SELECT 1 AS hello'
      WITH RESULT SETS (([hello] int not null));
      GO
      

    외부 스크립트 런타임이 처음 로드될 때 스크립트를 실행하는 데 약간의 시간이 걸릴 수 있습니다. 결과가 다음과 같이 표시됩니다.

    hello
    1

참고

Python 스크립트에서 사용되는 열 또는 제목은 자동으로 반환되지 않습니다. 출력에 대한 열 이름을 추가하려면 반환 데이터 세트에 대한 스키마를 지정해야 합니다. 저장 프로시저의 WITH RESULTS 매개 변수를 사용하여 열의 이름을 정하고 SQL 데이터 형식을 지정하여 이 작업을 수행합니다.

예를 들어 다음 줄을 추가하여 임의의 열 이름을 생성할 수 있습니다. WITH RESULT SETS ((Col1 AS int))

업데이트 적용

기존 설치

Machine Learning Services를 기존 SQL Server 인스턴스에 추가하고 CU(누적 업데이트)를 적용했다면, 데이터베이스 엔진과 Machine Learning Services 기능의 버전이 서로 다를 수 있습니다. 이러한 차이로 인해 launchpad.exesqlservr.exe의 버전이 다르기 때문에 예기치 않은 동작이나 오류가 발생할 수 있습니다.

다음 단계를 수행하여 Machine Learning Services를 데이터베이스 엔진과 동일한 버전으로 만드세요.

  1. 데이터베이스 엔진의 누적 업데이트를 확인합니다. 이 T-SQL 문을 실행합니다.

    SELECT @@VERSION
    

    다음은 SQL Server 2019 누적 업데이트(CU) 8의 출력 예제입니다.

    Microsoft SQL Server 2019 (RTM-CU8-GDR) (KB4583459) - 15.0.4083.2 (X64)   Nov  2 2020 18:35:09   Copyright (C) 2019 Microsoft Corporation  Developer Edition (64-bit) on Windows 10 Enterprise 10.0 (X64) (Build 19042: ) (Hypervisor)
    

    자세한 내용은 SQL Server 및 관련 구성 요소의 버전, 에디션, 업데이트 수준 확인을 참조하세요.

  2. 필요하면 데이터베이스 엔진에 설치한 누적 업데이트를 다운로드합니다.

  3. 누적 업데이트 설치를 실행하고 지침에 따라 Machine Learning Services의 누적 업데이트를 설치합니다. Machine Learning Services가 설치된 기존 인스턴스를 선택합니다. 업그레이드 상태는 기능 선택 페이지에 불완전하게 설치됨을 표시합니다.

  4. 다음을 선택하고 설치를 계속합니다.

새 설치

Machine Learning Services를 설치할 때 SQL Server 데이터베이스 엔진을 새로 설치했다면, 데이터베이스 엔진과 머신 러닝 구성 요소 모두에 최신 누적 업데이트를 적용하는 것이 좋습니다.

인터넷 연결 디바이스에서 누적 업데이트는 일반적으로 Windows 업데이트를 통해 적용됩니다. 그러나 제어된 업데이트에 대해 다음 단계를 사용할 수도 있습니다. 데이터베이스 엔진에 대한 업데이트를 적용하는 경우 설치 프로그램은 동일한 인스턴스에 설치된 Python 또는 R 기능의 누적 업데이트를 가져옵니다.

연결되지 않은 서버에서는 추가 단계가 필요합니다. 자세한 내용은 인터넷에 액세스할 수 없는 컴퓨터에 구성 요소 설치 > 누적 업데이트 적용을 참조하세요.

  1. 이미 설치된 기준 인스턴스인 SQL Server 초기 릴리스를 사용하여 시작합니다.

  2. Microsoft SQL Server에 대한 업데이트 목록을 참조하세요.

  3. 최신 누적 업데이트를 선택합니다. 실행 파일이 자동으로 다운로드되고 추출됩니다.

  4. 설정을 실행하고 라이선스 조건에 동의합니다.

  5. 기능 선택 페이지에서 누적 업데이트가 적용되는 기능을 검토합니다. 기계 학습 기능을 포함하여 현재 인스턴스에 설치된 모든 기능이 표시되어야 합니다. 설치 프로그램은 모든 기능을 업데이트하는 데 필요한 CAB 파일을 다운로드합니다.

    Screenshot that shows a summary of installed features.

  6. 마법사를 계속 진행합니다. R 및 Python 배포에 대한 사용 조건에 동의합니다.

추가 구성

외부 스크립트 확인 단계가 성공하면 SQL Server Management Studio, Visual Studio Code에서 또는 T-SQL 문을 서버로 보낼 수 있는 기타 클라이언트에서 R 또는 Python 명령을 실행할 수 있습니다.

명령을 실행할 때 오류가 발생하면 서비스 또는 데이터베이스에 대한 추가 구성을 수행해야 할 수 있습니다. 인스턴스 수준에서 추가 구성은 다음을 포함할 수 있습니다.

Windows의 SQL Server 2019에서는 격리 메커니즘이 변경되었습니다. 이 메커니즘은 SQLRUserGroup, 방화벽 규칙, 파일 사용 권한 및 묵시적 인증에 영향을 줍니다. 자세한 내용은 Machine Learning Services에 대한 격리 변경 사항을 참조하세요.

데이터베이스에서는 구성 업데이트가 필요할 수 있습니다. 자세한 내용은 사용자에게 SQL Server Machine Learning Services 사용 권한 부여를 참조하세요.

참고

추가 구성이 필요한지 여부는 보안 스키마, SQL Server를 설치한 위치, 사용자가 데이터베이스에 연결하여 외부 스크립트를 실행하는 방법에 따라 결정됩니다.

권장 최적화

이제 모두 제대로 작동하므로 기계 학습을 지원하도록 서버를 최적화하거나 사전 교육된 기계 학습 모델을 설치할 수도 있습니다.

더 많은 작업자 계정 추가

여러 사용자가 동시에 스크립트를 실행할 것으로 예상되는 경우 실행 패드 서비스에 할당된 작업자 계정 수를 늘릴 수 있습니다. 자세한 내용은 SQL Server Machine Learning Services에서 외부 스크립트의 동시 실행 확장을 참조하세요.

스크립트 실행을 위한 서버 최적화

SQL Server 설치의 기본 설정은 다양한 기타 서비스 및 애플리케이션에 대한 서버 균형을 최적화하기 위한 것입니다.

기본 설정을 사용할 경우, 특히 메모리를 많이 사용하는 작업에서는 기계 학습에 대한 리소스가 때에 따라 제한되곤 합니다.

기계 학습 작업에 적절한 우선 순위와 리소스가 지정되도록 SQL Server Resource Governor를 사용하여 외부 리소스 풀을 구성하는 것이 좋습니다. 또한 SQL Server 데이터베이스 엔진에 할당된 메모리 크기를 변경하거나 SQL Server 실행 패드 서비스에서 실행되는 계정 수를 늘릴 수도 있습니다.

Standard Edition을 사용 중이고 Resource Governor가 없는 경우 동적 관리 뷰, SQL Server 확장 이벤트 및 Windows 이벤트 모니터링을 사용하여 서버 리소스를 관리할 수 있습니다.

추가 Python 및 R 패키지 설치

SQL Server용으로 만든 Python 및 R 솔루션은 다음을 호출할 수 있습니다.

  • 기본 함수.
  • SQL Server와 함께 설치된 독점 패키지의 함수입니다.
  • SQL Server가 설치하는 오픈 소스 Python 및 R 버전과 호환되는 타사 패키지입니다.

SQL Server에서 사용할 패키지는 인스턴스가 사용하는 기본 라이브러리에 설치되어야 합니다. Python 또는 R이 컴퓨터에 별도로 설치되어 있거나 패키지를 사용자 라이브러리에 설치한 경우에는 T-SQL에서 해당 패키지를 사용할 수 없습니다.

추가 패키지를 설치하고 관리하기 위해 데이터베이스 수준으로 패키지를 공유하도록 사용자 그룹을 설정하거나 사용자가 자신의 패키지를 설치할 수 있도록 데이터베이스 역할을 구성할 수 있습니다. 자세한 내용은 Python 패키지 설치새 R 패키지 설치를 참조하세요.

다음 단계

Python 개발자는 다음 자습서에 따라 SQL Server에서 Python을 사용하는 방법을 알아볼 수 있습니다.

R 개발자는 몇 가지 간단한 예제를 시작하고 R이 SQL Server에서 작동하는 방식의 기초를 알아볼 수 있습니다. 다음 단계로 가려면 아래 링크를 참조하세요.