다음을 통해 공유


Machine Learning Studio에서 Python 기계 학습 스크립트 실행(클래식)

적용 대상: 적용 대상Machine Learning Studio(클래식) 미적용 대상Azure Machine Learning

Important

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

2021년 12월 1일부터 새로운 Machine Learning Studio(클래식) 리소스를 만들 수 없습니다. 2024년 8월 31일까지는 기존 Machine Learning Studio(클래식) 리소스를 계속 사용할 수 있습니다.

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

Python은 많은 데이터 과학자의 도구 상자에 유용한 도구입니다. 데이터 탐색, 기능 추출, 모델 학습 및 유효성 검사 및 배포를 비롯한 일반적인 기계 학습 워크플로의 모든 단계에서 사용됩니다.

이 문서에서는 Python 스크립트 실행 모듈을 사용하여 Machine Learning Studio(클래식) 실험 및 웹 서비스에서 Python 코드를 사용하는 방법을 설명합니다.

Python 스크립트 실행 모듈 사용

스튜디오(클래식)에서 Python의 기본 인터페이스는 Python 스크립트 실행 모듈을 통하여 제공됩니다. 최대 3개의 입력을 허용하고 R 스크립트 실행 모듈과 유사한 최대 2개의 출력을 생성합니다. Python 코드는 특수하게 명명된 진입점 함수를 통해 매개 변수 상자에 입력됩니다 azureml_main.

Python 스크립트 실행 모듈

모듈 매개 변수 상자의 샘플 Python 코드

입력 매개 변수

Python 모듈에 대한 입력은 Pandas DataFrames로 노출됩니다. 이 함수는 azureml_main 최대 두 개의 선택적 Pandas DataFrame을 매개 변수로 허용합니다.

입력 포트와 함수 매개 변수 간의 매핑은 위치입니다.

  • 첫 번째 연결된 입력 포트는 함수의 첫 번째 매개 변수에 매핑됩니다.
  • 두 번째 입력(연결된 경우)은 함수의 두 번째 매개 변수에 매핑됩니다.
  • 세 번째 입력은 추가 Python 모듈을 가져오는 데 사용됩니다.

입력 포트가 함수의 매개 변수에 매핑되는 방법에 대한 azureml_main 자세한 의미 체계는 다음과 같습니다.

입력 포트 구성 및 결과 Python 서명 표

반환 값 출력

함수는 azureml_main 튜플, 목록 또는 NumPy 배열과 같은 Python 시퀀스 로 패키지된 단일 Pandas DataFrame을 반환해야 합니다. 이 시퀀스의 첫 번째 요소는 모듈의 첫 번째 출력 포트로 반환됩니다. 모듈의 두 번째 출력 포트는 시각화사용되며 반환 값이 필요하지 않습니다. 이 체계는 아래에 나와 있습니다.

입력 포트를 매개 변수에 매핑하고 출력 포트에 값 반환

입력 및 출력 데이터 형식의 변환

Studio 데이터 세트는 Panda DataFrames와 동일하지 않습니다. 따라서 Studio(클래식)의 입력 데이터 세트는 Pandas DataFrame으로 변환되고 출력 DataFrame은 Studio(클래식) 데이터 세트로 다시 변환됩니다. 변환 프로세스 중에는 다음과 같은 번역도 수행됩니다.

Python 데이터 형식 스튜디오 번역 프로시저
문자열 및 숫자 있는 그대로 번역
Pandas 'NA' '누락 값'으로 변환됨
인덱스 벡터 지원 되지 않는*
문자열이 아닌 열 이름 열 이름에 대한 호출 str
열 이름 중복 숫자 접미사 (1), (2), (3) 등을 추가합니다.

*Python 함수의 모든 입력 데이터 프레임에는 항상 0에서 1을 뺀 행 수까지 64비트 숫자 인덱스가 있습니다.

기존 Python 스크립트 모듈 가져오기

Python을 실행하는 데 사용되는 백 엔드는 널리 사용되는 과학적 Python 배포인 Anaconda를 기반으로 합니다. 데이터 중심 워크로드에 사용되는 가장 일반적인 Python 패키지가 거의 200개 가까이 포함되어 있습니다. 스튜디오(클래식)는 현재 Pip 또는 Conda와 같은 패키지 관리 시스템을 사용하여 외부 라이브러리를 설치하고 관리하는 것을 지원하지 않습니다. 추가 라이브러리를 통합해야 하는 경우 다음 시나리오를 가이드로 사용합니다.

일반적인 사용 사례는 기존 Python 스크립트를 Studio(클래식) 실험에 통합하는 것입니다. Python 스크립트 실행 모듈은 세 번째 입력 포트에서 Python 모듈을 포함하는 Zip 파일을 허용합니다. 파일은 런타임에 실행 프레임워크에서 압축을 풀고 콘텐츠는 Python 인터프리터의 라이브러리 경로에 추가됩니다. 진입점 함수는 azureml_main 이러한 모듈을 직접 가져올 수 있습니다.

예를 들어 간단한 "Hello, World" 함수가 포함된 파일 Hello.py 고려합니다.

Hello.py 파일의 사용자 정의 함수

다음으로, Hello.py 포함하는 파일 Hello.zip 만듭니다.

사용자 정의 Python 코드가 포함된 Zip 파일

Zip 파일을 데이터 세트로 스튜디오(클래식)에 업로드합니다. 그런 다음, 다음 이미지와 같이 Python 스크립트 실행 모듈의 세 번째 입력 포트에 연결하여 Hello.zip 파일에서 Python 코드를 사용하는 실험을 만들고 실행합니다.

Python 스크립트 실행 모듈에 대한 입력으로 Hello.zip 사용한 샘플 실험

zip 파일로 업로드된 사용자 정의 Python 코드

모듈 출력은 zip 파일이 패키지되지 않았으며 함수 print_hello 가 실행되었음을 보여줍니다.

사용자 정의 함수를 보여 주는 모듈 출력

Azure Storage Blob 액세스

다음 단계를 사용하여 Azure Blob Storage 계정에 저장된 데이터에 액세스할 수 있습니다.

  1. Python용 Azure Blob Storage 패키지를 로컬로 다운로드합니다.
  2. Zip 파일을 스튜디오(클래식) 작업 영역에 데이터 세트로 업로드합니다.
  3. protocol='http'를 사용하여 BlobService 개체 만들기
from azure.storage.blob import BlockBlobService

# Create the BlockBlockService that is used to call the Blob service for the storage account
block_blob_service = BlockBlobService(account_name='account_name', account_key='account_key', protocol='http')
  1. 스토리지 구성 설정 탭에서 필수 보안 전송을 사용하지 않는 것으로 설정

Azure Portal에서 필수 보안 전송 사용하지 않음

Python 스크립트 운영

점수 매기기 실험에 사용되는 Python 스크립트 실행 모듈은 웹 서비스로 게시될 때 호출됩니다. 예를 들어 아래 이미지는 단일 Python 식을 평가하는 코드를 포함하는 점수 매기기 실험을 보여 줍니다.

웹 서비스에 대한 스튜디오 작업 영역

Python Pandas 식

이 실험에서 만든 웹 서비스는 다음 작업을 수행합니다.

  1. Python 식을 입력으로 사용(문자열로)
  2. Python 인터프리터에 Python 식 보내기
  3. 식과 계산된 결과를 모두 포함하는 테이블을 반환합니다.

시각화 작업

MatplotLib을 사용하여 만든 플롯은 Python 스크립트 실행에서 반환할 수 있습니다. 그러나 R을 사용할 때 그림이 이미지로 자동으로 리디렉션되지는 않습니다. 따라서 사용자는 PNG 파일에 플롯을 명시적으로 저장해야 합니다.

MatplotLib에서 이미지를 생성하려면 다음 단계를 수행해야 합니다.

  1. 기본 Qt 기반 렌더러에서 백 엔드를 "AGG"로 전환합니다.
  2. 새 그림 개체를 만듭니다.
  3. 축을 가져와서 모든 플롯을 생성합니다.
  4. 그림을 PNG 파일에 저장합니다.

이 프로세스는 Pandas의 scatter_matrix 함수를 사용하여 산점도 행렬을 만드는 다음 이미지에 설명되어 있습니다.

MatplotLib 그림을 이미지에 저장하는 코드

Python 스크립트 실행 모듈에서 시각화를 클릭하여 그림을 봅니다.

Python 코드를 사용하여 샘플 실험에 대한 플롯 시각화

여러 그림을 서로 다른 이미지에 저장하여 반환할 수 있습니다. 스튜디오(클래식) 런타임은 모든 이미지를 선택하고 시각화를 위해 연결합니다.

고급 예제

Studio(클래식)에 설치된 Anaconda 환경에는 NumPy, SciPy 및 Scikits-Learn과 같은 일반적인 패키지가 포함되어 있습니다. 해당 패키지는 기계 학습 파이프라인의 데이터 처리에 효과적으로 사용될 수 있습니다.

예를 들어 다음 실험 및 스크립트는 Scikits-Learn의 앙상블 학습자를 사용하여 데이터 세트의 기능 중요도 점수를 계산하는 방법을 보여 줍니다. 점수는 다른 모델에 공급되기 전에 감독된 기능 선택을 수행하는 데 사용할 수 있습니다.

중요도 점수를 계산하고 점수에 따라 기능을 정렬하는 데 사용되는 Python 함수는 다음과 같습니다.

점수별로 기능 순위를 지정하는 함수

다음 실험은 Machine Learning Studio(클래식)의 "Pima Indian Diabetes" 데이터 세트에 있는 기능의 중요도 점수를 계산하고 반환합니다.

Pima Indian Diabetes 데이터 세트에서 Python을 사용하여 기능의 순위를 지정하는 실험

Python 스크립트 실행 모듈의 출력 시각화

제한 사항

Python 스크립트 실행 모듈에는 현재 다음과 같은 제한 사항이 있습니다.

샌드박스가 적용된 실행

Python 런타임은 현재 샌드박스로 처리되어 있으며 영구 방식으로 네트워크 또는 로컬 파일 시스템에 대한 액세스를 허용하지 않습니다. 로컬로 저장된 모든 파일은 모듈이 완료되면 격리되고 삭제됩니다. Python 코드는 실행 중인 컴퓨터의 대부분의 디렉터리에 액세스할 수 없습니다. 예외는 현재 디렉터리와 해당 하위 디렉터리입니다.

정교한 개발 및 디버깅 지원 부족

현재 Python 모듈에서는 Intellisense와 디버깅 같은 IDE 기능을 지원하지 않습니다. 또한 런타임에 모듈이 실패하면 전체 Python 스택 추적을 사용할 수 있습니다. 그러나 모듈의 출력 로그에서 확인해야 합니다. 현재로서는 IPython과 같은 환경에서 Python 스크립트를 개발하고 디버그한 다음 모듈에 코드를 가져오는 것이 좋습니다.

단일 데이터 프레임 출력

Python 진입점은 단일 데이터 프레임을 출력으로 반환할 수만 있습니다. 현재로서는 학습된 모델과 같은 임의의 Python 개체를 스튜디오(클래식) 런타임에 직접 반환할 수 없습니다. 동일한 제한 사항이 있는 R 스크립트 실행과 마찬가지로, 대부분의 경우 개체를 바이트 배열로 만든 다음 데이터 프레임 내부에서 반환할 수 있습니다.

Python 설치를 사용자 지정할 수 없음

현재 사용자 지정 Python 모듈을 추가하는 유일한 방법은 앞에서 설명한 zip 파일 메커니즘을 사용하는 것입니다. 소규모 모듈에서는 가능하지만 큰 모듈(특히 네이티브 DLL이 있는 모듈) 또는 많은 수의 모듈에서는 번거롭습니다.

다음 단계

자세한 내용은 Python 개발자 센터를 참조하세요.