대화형 R 개발
적용 대상:Azure CLI ml 확장 v2(현재)Python SDK azure-ai-ml v2(현재)
이 문서에서는 Jupyter Notebook에서 R 커널을 실행하는 컴퓨팅 인스턴스에서 Azure Machine Learning 스튜디오에서 R을 사용하는 방법을 보여 줍니다.
널리 사용되는 RStudio IDE도 작동합니다. 컴퓨팅 인스턴스의 사용자 지정 컨테이너에 RStudio 또는 Posit Workbench를 설치할 수 있습니다. 그러나 Azure Machine Learning 작업 영역을 읽고 쓰는 데에는 제한 사항이 있습니다.
Important
이 문서에 표시된 코드는 Azure Machine Learning 컴퓨팅 인스턴스에서 작동합니다. 컴퓨팅 인스턴스에는 코드가 성공적으로 실행되는 데 필요한 환경 및 구성 파일이 있습니다.
필수 조건
- Azure 구독이 없는 경우 시작하기 전에 체험 계정을 만듭니다. 지금 Azure Machine Learning 평가판 또는 유료 버전을 사용해 보세요.
- Azure Machine Learning 작업 영역 및 컴퓨팅 인스턴스
- Azure Machine Learning 스튜디오의 Jupyter Notebook 사용에 대한 기본적인 이해 자세한 내용은 클라우드 워크스테이션 리소스의 모델 개발을 참조하세요.
스튜디오의 Notebook에서 R 실행
컴퓨팅 인스턴스의 Azure Machine Learning 작업 영역에서 Notebook을 사용합니다.
아직 열려 있지 않은 경우 작업 영역을 엽니다.
왼쪽 탐색 영역에서 Notebook을 선택합니다.
RunR.ipynb라는 새 Notebook을 만듭니다.
팁
Studio에서 Notebooks를 만들고 작업하는 방법을 잘 모르는 경우 작업 영역에서 Jupyter Notebooks 실행을 검토합니다.
Notebook을 선택합니다.
Notebook 도구 모음에서 컴퓨팅 인스턴스가 실행 중인지 확인합니다. 그렇지 않은 경우 지금 시작합니다.
Notebook 도구 모음에서 커널을 R로 전환합니다.
이제 Notebook이 R 명령을 실행할 준비가 되었습니다.
데이터 액세스
작업 영역 파일 스토리지 리소스에 파일을 업로드한 다음 R에서 해당 파일에 액세스할 수 있습니다. 그러나 Azure 데이터 자산에 저장된 파일이나 데이터 저장소의 데이터의 경우 일부 패키지를 설치해야 합니다.
이 섹션에서는 Python 및 reticulate
패키지를 사용하여 대화형 세션에서 데이터 자산 및 데이터 저장소를 R로 로드하는 방법을 설명합니다. azureml-fsspec
Python 패키지와 reticulate
R 패키지를 사용하여 표 형식 데이터를 Pandas DataFrames로 읽습니다. 이 섹션에는 데이터 자산과 데이터 저장소를 R data.frame
으로 읽는 예도 포함되어 있습니다.
이러한 패키지를 설치하려면
컴퓨팅 인스턴스에 setup.sh라는 새 파일을 만듭니다.
이 코드를 파일에 복사합니다.
#!/bin/bash set -e # Installs azureml-fsspec in default conda environment # Does not need to run as sudo eval "$(conda shell.bash hook)" conda activate azureml_py310_sdkv2 pip install azureml-fsspec conda deactivate # Checks that version 1.26 of reticulate is installed (needs to be done as sudo) sudo -u azureuser -i <<'EOF' R -e "if (packageVersion('reticulate') >= 1.26) message('Version OK') else install.packages('reticulate')" EOF
스크립트를 실행하려면 터미널에서 스크립트 저장 및 실행을 선택합니다.
설치 스크립트는 다음 단계를 처리합니다.
pip
는 컴퓨팅 인스턴스에 대한 기본 conda 환경에azureml-fsspec
를 설치합니다.- 필요한 경우 R
reticulate
패키지를 설치합니다(버전은 1.26 이상이어야 함).
등록된 데이터 자산 또는 데이터 저장소에서 테이블 형식 데이터 읽기
Azure Machine Learning에서 만들어진 데이터 자산에 저장된 데이터의 경우 다음 단계에서 해당 표 형식 파일을 Pandas DataFrame 또는 R data.frame
으로 읽어옵니다.
참고 항목
reticulate
를 사용하여 파일을 읽는 기능은 테이블 형식 데이터에만 작동합니다.
올바른
reticulate
버전을 사용하는지 확인합니다. 1.26 미만 버전의 경우 최신 컴퓨팅 인스턴스를 사용해 보세요.packageVersion("reticulate")
reticulate
를 로드하고azureml-fsspec
이 설치된 conda 환경을 설정합니다.library(reticulate) use_condaenv("azureml_py310_sdkv2") print("Environment is set")
데이터 파일의 URI 경로를 찾습니다.
먼저 작업 영역에 대한 핸들을 가져옵니다.
py_code <- "from azure.identity import DefaultAzureCredential from azure.ai.ml import MLClient credential = DefaultAzureCredential() ml_client = MLClient.from_config(credential=credential)" py_run_string(py_code) print("ml_client is configured")
이 코드를 사용하여 자산을 검색합니다.
<MY_NAME>
및<MY_VERSION>
를 데이터 자산의 이름과 수로 바꿔야 합니다.팁
Studio에서는 왼쪽 탐색 메뉴에서 데이터를 선택하여 데이터 자산의 이름과 버전 번호를 찾습니다.
# Replace <MY_NAME> and <MY_VERSION> with your values py_code <- "my_name = '<MY_NAME>' my_version = '<MY_VERSION>' data_asset = ml_client.data.get(name=my_name, version=my_version) data_uri = data_asset.path"
URI를 검색하려면 코드를 실행합니다.
py_run_string(py_code) print(paste("URI path is", py$data_uri))
Pandas 읽기 함수를 사용하여 파일을 R 환경으로 읽어옵니다.
pd <- import("pandas") cc <- pd$read_csv(py$data_uri) head(cc)
또한 Datastore URI를 사용하여 등록된 Datastore의 다양한 파일에 액세스하고 이러한 리소스를 R data.frame
으로 읽을 수 있습니다.
이 형식에서는 고유한 값을 사용하여 데이터 저장소 URI를 만듭니다.
subscription <- '<subscription_id>' resource_group <- '<resource_group>' workspace <- '<workspace>' datastore_name <- '<datastore>' path_on_datastore <- '<path>' uri <- paste0("azureml://subscriptions/", subscription, "/resourcegroups/", resource_group, "/workspaces/", workspace, "/datastores/", datastore_name, "/paths/", path_on_datastore)
팁
파일이 있는 데이터 저장소를 알고 있는 경우 데이터 저장소 URI 형식을 기억하는 대신 스튜디오 UI에서 데이터 저장소 URI를 복사하여 붙여넣을 수 있습니다.
- R로 읽으려는 파일/폴더로 이동합니다.
- 옆에 있는 줄임표(...)를 선택합니다.
- 메뉴에서 URI 복사를 선택합니다.
- Notebook/스크립트에 복사할 Datastore URI를 선택합니다.
코드에서
<path>
에 대한 변수를 만들어야 합니다.
앞에서 언급한 URI를 사용하여 파일 저장소 개체를 만듭니다.
fs <- azureml.fsspec$AzureMachineLearningFileSystem(uri, sep = "")
- R
data.frame
을 읽습니다.
df <- with(fs$open("<path>)", "r") %as% f, {
x <- as.character(f$read(), encoding = "utf-8")
read.csv(textConnection(x), header = TRUE, sep = ",", stringsAsFactors = FALSE)
})
print(df)
R 패키지 설치
컴퓨팅 인스턴스에는 사전 설치된 R 패키지가 많이 있습니다.
다른 패키지를 설치하려면 위치와 종속성을 명시적으로 지정해야 합니다.
팁
다른 컴퓨팅 인스턴스를 만들거나 사용하는 경우 설치한 패키지를 다시 설치해야 합니다.
예를 들어 tsibble
패키지를 설치하려면 다음을 수행합니다.
install.packages("tsibble",
dependencies = TRUE,
lib = "/home/azureuser")
참고 항목
Jupyter Notebook에서 실행되는 R 세션 내에 패키지를 설치하는 경우 dependencies = TRUE
가 필요합니다. 그렇지 않으면 종속 패키지가 자동으로 설치되지 않습니다. lib 위치는 올바른 컴퓨팅 인스턴스 위치에 설치하는 데도 필요합니다.
R 라이브러리 로드
R 라이브러리 경로에 /home/azureuser
를 추가합니다.
.libPaths("/home/azureuser")
팁
사용자가 설치한 라이브러리에 액세스하려면 각 대화형 R 스크립트에서 .libPaths
를 업데이트해야 합니다. 이 코드를 각 대화형 R 스크립트 또는 Notebook의 위에 추가합니다.
libPath가 업데이트되면 평소와 같이 라이브러리를 로드합니다.
library('tsibble')
Notebook에서 R 사용
앞에서 설명한 문제 외에도 로컬 워크스테이션을 포함한 다른 환경에서와 마찬가지로 R을 사용합니다. Notebook 또는 스크립트에서 Notebook/스크립트가 저장되는 경로에서 읽고 쓸 수 있습니다.
참고 항목
- 대화형 R 세션에서 작업 영역 파일 시스템에만 쓸 수 있습니다.
- 대화형 R 세션에서는 MLflow와 상호 작용할 수 없습니다(예: 모델 기록 또는 레지스트리 쿼리).