대화형 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 컴퓨팅 인스턴스에서 작동합니다. 컴퓨팅 인스턴스에는 코드가 성공적으로 실행되는 데 필요한 환경 및 구성 파일이 있습니다.

필수 조건

스튜디오의 Notebook에서 R 실행

컴퓨팅 인스턴스의 Azure Machine Learning 작업 영역에서 Notebook을 사용합니다.

  1. Azure Machine Learning Studio에 로그인

  2. 아직 열려 있지 않은 경우 작업 영역을 엽니다.

  3. 왼쪽 탐색 영역에서 Notebook을 선택합니다.

  4. RunR.ipynb라는 새 Notebook을 만듭니다.

    Studio에서 Notebooks를 만들고 작업하는 방법을 잘 모르는 경우 작업 영역에서 Jupyter Notebooks 실행을 검토합니다.

  5. Notebook을 선택합니다.

  6. Notebook 도구 모음에서 컴퓨팅 인스턴스가 실행 중인지 확인합니다. 그렇지 않은 경우 지금 시작합니다.

  7. Notebook 도구 모음에서 커널을 R로 전환합니다.

    Screenshot: Switch the notebook kernel to use R.

이제 Notebook이 R 명령을 실행할 준비가 되었습니다.

데이터 액세스

작업 영역 파일 스토리지 리소스에 파일을 업로드한 다음 R에서 해당 파일에 액세스할 수 있습니다. 그러나 Azure 데이터 자산에 저장된 파일이나 데이터 저장소의 데이터의 경우 일부 패키지를 설치해야 합니다.

이 섹션에서는 Python 및 reticulate 패키지를 사용하여 대화형 세션에서 데이터 자산 및 데이터 저장소를 R로 로드하는 방법을 설명합니다. azureml-fsspec Python 패키지와 reticulate R 패키지를 사용하여 표 형식 데이터를 Pandas DataFrames로 읽습니다. 이 섹션에는 데이터 자산과 데이터 저장소를 R data.frame으로 읽는 예도 포함되어 있습니다.

이러한 패키지를 설치하려면

  1. 컴퓨팅 인스턴스에 setup.sh라는 새 파일을 만듭니다.

  2. 이 코드를 파일에 복사합니다.

    #!/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
    
  3. 스크립트를 실행하려면 터미널에서 스크립트 저장 및 실행을 선택합니다.

설치 스크립트는 다음 단계를 처리합니다.

  • pip는 컴퓨팅 인스턴스에 대한 기본 conda 환경에 azureml-fsspec를 설치합니다.
  • 필요한 경우 R reticulate 패키지를 설치합니다(버전은 1.26 이상이어야 함).

등록된 데이터 자산 또는 데이터 저장소에서 테이블 형식 데이터 읽기

Azure Machine Learning에서 만들어진 데이터 자산에 저장된 데이터의 경우 다음 단계에서 해당 표 형식 파일을 Pandas DataFrame 또는 R data.frame으로 읽어옵니다.

참고 항목

reticulate를 사용하여 파일을 읽는 기능은 테이블 형식 데이터에만 작동합니다.

  1. 올바른 reticulate 버전을 사용하는지 확인합니다. 1.26 미만 버전의 경우 최신 컴퓨팅 인스턴스를 사용해 보세요.

    packageVersion("reticulate")
    
  2. reticulate를 로드하고 azureml-fsspec이 설치된 conda 환경을 설정합니다.

    library(reticulate)
    use_condaenv("azureml_py310_sdkv2")
    print("Environment is set")
  3. 데이터 파일의 URI 경로를 찾습니다.

    1. 먼저 작업 영역에 대한 핸들을 가져옵니다.

      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")
    2. 이 코드를 사용하여 자산을 검색합니다. <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"
    3. 코드를 실행하여 URI를 검색합니다.

      py_run_string(py_code)
      print(paste("URI path is", py$data_uri))
  4. Pandas 읽기 함수를 사용하여 파일을 R 환경으로 읽어옵니다.

    pd <- import("pandas")
    cc <- pd$read_csv(py$data_uri)
    head(cc)

또한 Datastore URI를 사용하여 등록된 Datastore의 다양한 파일에 액세스하고 이러한 리소스를 R data.frame으로 읽을 수 있습니다.

  1. 이 형식에서는 고유한 값을 사용하여 데이터 저장소 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를 복사하여 붙여넣을 수 있습니다.

    1. R로 읽으려는 파일/폴더로 이동합니다.
    2. 옆에 있는 줄임표(...)를 선택합니다.
    3. 메뉴에서 URI 복사를 선택합니다.
    4. Notebook/스크립트에 복사할 Datastore URI를 선택합니다. 코드에서 <path>에 대한 변수를 만들어야 합니다. Screenshot highlighting the copy of the datastore URI.
  2. 앞서 언급한 URI를 사용하여 파일 저장소 개체를 만듭니다.

fs <- azureml.fsspec$AzureMachineLearningFileSystem(uri, sep = "")
  1. 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와 상호 작용할 수 없습니다(예: 모델 기록 또는 레지스트리 쿼리).

다음 단계