BLOG

Amazon SageMaker를 위한 영구적인 맞춤형 R 환경 생성하기
작성일: 2020-07-24

 

Amazon SageMaker는 기계 학습(ML) 모델을 신속하게 제작, 교육 및 배치할 수 있는 완전 관리형 서비스입니다. Amazon SageMaker는 고품질의 모델을 쉽게 개발할 수 있도록 ML 공정의 각 단계에서 무거운 리프팅을 제거합니다. 2019년 8월 AWS는 모든 리전에서 Amazon SageMaker의 사전 설치된 R 커널이 모든 리전에 출시될 예정임을 발표했습니다. 현재 이 기능은 즉시 사용할 수 있으며 미리 설치된 reticulate 라이브러리와 함께 제공됩니다. 이 라이브러리는 R 스크립트 내에서 Python 모듈을 호출할 수 있는 Amazon SageMaker Python SDK용 R 인터페이스를 제공합니다.

 

오늘 메가존 테크블로그에서는 빌트인 R 커널 위에 Amazon SageMaker에서 사용자 지정 R 환경(커널)을 생성하는 방법과 세션 간에 이를 유지하는 방법을 설명해 드립니다. 또한 R 환경에 새 패키지를 설치하는 방법, Amazon Simple Storage Service(Amazon S3)에 이러한 새로운 환경을 저장하는 방법, Amazon SageMaker 라이프사이클 구성을 사용하여 Amazon SageMaker 인스턴스를 새로 생성하는 방법을 알려드립니다. 여기에는 Amazon SageMaker 노트북 인스턴스를 만들거나 시작할 때 라이프사이클 구성에 사용할 수 있는 bash 스크립트도 포함되어 있습니다.

 

 

시작하기에 앞서…

Amazon SageMaker의 R 커널은 IRKernel 패키지를 사용하여 제작되며, Jupyter환경에 ir라는 이름과 R의 표시 이름을 가진 커널을 설치합니다.

 

Conda를 사용하여 이 환경을 관리하고 특정 패키지와 종속성을 설치할 수 있습니다. 그러나 기본적으로 노트북 인스턴스에서 설치된 R 커널은 다른 노트북 인스턴스 세션에 유지되지 않습니다. Amazon SageMaker 인스턴스를 시작하고 중지할 때마다 R 커널이 기본 환경으로 되돌아갑니다.

 

본 게시물에선 다음과 같은 소스를 사용하여 Amazon SageMaker에 R 패키지를 설치하는 과정을 안내합니다.

  • Anaconda Cloud
  • CRAN
  • Github

 

환경을 생성한 후에는 인스턴스의 Amazon Elastic Block Store(Amazon EBS) 저장소에 저장하여 영구적으로 유지하십시오. 또한 이 환경을 아마존 S3에 저장하여 새로운 Amazon SageMaker 인스턴스에 대한 사용자 지정 R 환경을 구축하는 데 사용할 수 있습니다. 자세한 내용은 ‘Customize a Notebook Instance Using a Lifecycle Configuration Script(수명 주기 구성 스크립트를 사용하여 노트북 인스턴스를 사용자 지정하기)’ 글을 참고해 주시기 바랍니다.

 

 

R 커널을 사용하여 Amazon SageMaker 노트북 인스턴스 생성하기

R 커널로 Amazon SageMaker 노트북 인스턴스를 만들려면 다음 단계를 완료하십시오.

1. 노트북 인스턴스를 만드십시오.
2. 인스턴스 상태가 In Service 로 표시되면 Jupyter를 여십시오.

  1. New 드롭다운 메뉴에서 R을 선택하십시오.

새 노트북이 열리면 노트북 공간의 오른쪽 상단 모서리에 R 로고가 표시되어야 합니다.

R 커널을 사용하여 Amazon SaigMaker 노트북 인스턴스를 만드는 방법에 대한 자세한 내용은 ‘coding with R on Amazon SageMaker notebook instances’ 블로그 게시물을 참고해 주시기 바랍니다.

 

 

Amazon SageMaker R 커널에 패키지 설치하기

Amazon SageMaker R 커널에는 140개 이상의 표준 패키지가 제공됩니다. 설치된 이러한 패키지 목록을 가져오려면 R 커널이 있는 SageMaker 노트북 인스턴스에서 다음 스크립트를 실행하십시오.

 

installed.packages()

 

추가 패키지를 설치해야 하는 경우 CRAN 아카이브인 Anaconda Cloud에서 설치하거나 GitHub에서 직접 설치할 수 있습니다.

 

 

Anaconda Cloud에서 설치하기

R 패키지를 설치할 때 선호하는 방법은 Anaconda Cloud 저장소에서 패키지를 설치하는 것입니다. 이 방법을 사용하면 패키지의 특정 버전을 설치할 수 있는 다른 채널(예: R 및 Conda Forge)에 액세스할 수 있습니다. Amazon SageMaker에서 R 커널을 사용하여 이 작업을 수행하는 경우 system()명령을 사용하여 conda install명령을 제출합니다.

 

이를 Amazon SageMaker Jpyter bash 터미널에 설치하려는 경우, 다음과 같이 conda install을 사용하면 됩니다.

 

conda install -n R -c conda-forge r-rjava

 

그러나 Amazon SageMaker에서는 다음 코드를 입력합니다.

system(“conda install -n R -c conda-forge r-rjava”)

 

이 채널은rJava버전 0.9_12(이 블로그 게시물이 게시되었을 때)를 설치하는 conda-forge채널을 사용합니다. 그러나 r channel을 사용할 경우, 버전 0.9_11(이 블로그 게시물이 게시될 당시)을 설치하십시오.

 

system(“conda install -n R -c r r-rjava”)

 

특정 패키지 이름을 검색하고 버전에 맞는 채널을 선택하려면Anaconda Cloud웹 사이트를 방문하여 패키지를 검색하십시오. R 패키지의 이름은 “r-<package_name”에서 amt에 대해 명명됩니다.

 

 

패키지 설치 시에는 Conda가 가장 선호되며, 아카이브로는 Anaconda Cloud가 가장 안정적인 버전의 Conda 환경에 대한 액세스를 제공한다는 면에서 선호됩니다.

 

 

CRAN archive 에서 설치하기

아나콘다(Anaconda) 대신 Comprehensive R Archive Network 아카이브를 사용할 수 있습니다. CRAN 아카이브는 R에 대한 코드와 설명서의 동일한 최신 버전을 저장하는 전 세계 FTP 및 웹 서버의 네트워크입니다. 이 아카이브를 통해 install.packages()를 사용하여 R에 패키지를 설치할 수 있습니다. 이렇게 하면 패키지의 최신 버전이 설치됩니다. 다음 코드를 참고해 주십시오.

 

install.packages(c(‘mlbench’, ‘MVar’),

repo = ‘http://cran.rstudio.com’,

dependencies = TRUE)

 

다음 코드를 사용하여 해당 패키지를 R 코드로 가져옵니다.

library(mlbench)

Amazon SageMaker 인스턴스는 RHEL(Red Hat Enterprise Linux) 및 CentOS에서 발전한 배포판인 Amazon Linux AMI를 사용합니다. Amazon SageMaker를 실행하는 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스 내에서 사용할 수 있습니다. 소스에서 직접 패키지를 설치하려면 올바른 운영 체제를 선택해야 합니다. Amazon SageMaker Jpyter bash 터미널에서 다음 스크립트를 사용하여 운영 체제를 확인할 수 있습니다.

 

sh-4.2$ cat /etc/os-release

 

아웃풋은 다음과 같습니다(Publication시).

 

NAME=”Amazon Linux AMI”

VERSION=”2018.03″

ID=”amzn”

ID_LIKE=”rhel fedora”

VERSION_ID=”2018.03″

PRETTY_NAME=”Amazon Linux AMI 2018.03″

ANSI_COLOR=”0;33″

CPE_NAME=”cpe:/o:amazon:linux:2018.03:ga”

HOME_URL=http://aws.amazon.com/amazon-linux-ami/

 

 

Github에서 설치하기

devtools 및 install_github를 사용하여 패키지 개발자의 리포지토리에서 직접 콘텐츠를 가져올 수도 있습니다. 다음 코드를 참조합니다.

 

install.packages(“devtools”)

devtools::install_github(“malcolmbarrett/ggdag”)

 

그러면 패키지와 해당 종속성이 설치됩니다. 하지만 이것은 Amazon SageMaker에서 패키지를 설치할 때 선호되는 방법은 아닙니다.

 

 

세션 간의 사용자 지정 R 환경 유지하기

기본적으로 Amazon SaigMaker는 Amazon SaigMaker 인스턴스를 중지하고 시작할 때마다 기본 R 커널을 시작합니다. 인스턴스를 중지하면 설치하는 추가 패키지가 손실되며, 인스턴스를 다시 시작할 때 패키지를 다시 설치해야 합니다. 이는 시간이 많이 걸리고 번거롭습니다. 이에 대한 솔루션은 인스턴스의 EBS 스토리지에 환경을 저장한 후 Amazon SageMaker 라이프사이클 구성 스크립트를 사용하여 시작할 때 사용자 지정 R 커널에 연결하는 것입니다. 자세한 내용은 ‘Customize a Notebook Instance Using a Lifecycle Configuration Script(수명 주기 구성 스크립트를 사용하여 노트북 인스턴스를 사용자 지정하기)’ 참고 하십시오.

 

이번 섹션에서는 사용자 지정 R 환경을 지속성 있게 만드는 단계에 대해 간략히 설명해 드리겠습니다.

 

 

Amazon SageMaker EBS에서 환경 저장하기

먼저 환경을 복제하여 인스턴스의 EBS 스토리지에 환경을 저장해야 합니다. Amazon Sagemaker Jupyter bash 터미널에서 다음 스크립트를 실행할 수 있습니다.

 

conda create –prefix /home/ec2-user/SageMaker/envs/custom-r –clone R

 

이렇게 하면 EBS 인스턴스의 Amazon SageMaker 폴더 아래에 envs/custom-r 폴더가 생성되며, 이 폴더는 사용자가 액세스할 수 있습니다. 다음의 캡쳐 화면을 참고해 주십시오.

 

 

나중에 동일한 Amazon SageMaker 인스턴스에서(다른 인스턴스가 아닌) 이 사용자 지정 환경을 사용하려면 본 게시글의 ‘ ‘ 섹션을 확인해 주십시오.

 

 

Amazon SageMaker 인스턴스를 새로 만들기 위해 환경을 Amazon S3 환경 저장하기

 

Amazon SageMaker 인스턴스(예: 개발 팀의 경우)를 만들 때 사용자 지정 R 환경을 반복적으로 사용하려면 환경을 .zip 파일로 Amazon S3에 저장하고 생성 단계에서 해당 인스턴스에 다운로드하십시오. Amazon SageMaker Juypyter bash 터미널에서 다음 스크립트를 실행할 수 있습니다.

 

zip -r ~/SageMaker/custom_r.zip ~/SageMaker/envs/

aws s3 cp ~/SageMaker/custom_r.zip s3://[YOUR BUCKET]/

 

 

사용자 지정 R 환경에서 새 인스턴스를 생성하기 위한 라이프사이클 구성하기

새 인스턴스를 만들고 해당 인스턴스에서 사용자 지정 환경을 사용하려면 Amazon S3에서 인스턴스로 .zip 환경을 가져와야 합니다. 수명 주기 구성 스크립트를 사용하여 Amazon SageMaker 콘솔에서 자동으로 이 작업을 수행할 수 있습니다. 이 스크립트는 Amazon S3에서 인스턴스 EBS의 /SageMaker/폴더로 .zip 파일을 다운로드하여 압축을 풀고 /envs/폴더를 다시 만들고 중복 폴더를 제거합니다.

 

 

  1. Amazon SageMaker 콘솔의 노트북에서 라이프사이클 구성을 선택합니다.
  2. Create Configuration(구성 생성)을 선택합니다.
  3. Custom-R-Env라는 이름을 붙이십시오.
  4. Create notebook 에서 다음 스크립트를 입력합니다.

 

## On-Create: Bringing custom environment from S3 to SageMaker instance

## NOTE: Your SageMaker IAM role should have access to this bucket

 

#!/bin/bash

sudo -u ec2-user -i <<‘EOF’

aws s3 cp s3://[YOUR BUCKET]/custom_r.zip ~/SageMaker/

unzip ~/SageMaker/custom_r.zip -d ~/SageMaker/

mv ~/SageMaker/home/ec2-user/SageMaker/envs/ ~/SageMaker/envs

rm -rf ~/SageMaker/home/

rm ~/SageMaker/custom_r.zip

EOF

 

 

  1. Create Configuration을 누르십시오.

 

 

사용자 지정 R 환경에서 인스턴스를 시작하는 수명 주기 구성하기

이 단계는 동일한 인스턴스에서 사용자 지정 R 환경을 생성하여./envs/폴더에 복제하거나 인스턴스를 생성하는 동안 Amazon S3에서 .zip 파일을 다운로드한 경우와 동일합니다.

 

스크립트는./evns/폴더(사용자 지정 R 환경 포함)와 아나콘다 custom-r환경 간에 symbolic link를 생성합니다. 이렇게 하면 환경이 Amazon SageMaker의 커널 아래에 나열될 수 있습니다.

 

  1. Amazon SageMaker 콘솔의 노트북에서 라이프사이클 구성을 선택합니다.
  2. Create Configuration(구성 생성)을 선택합니다.
  3. 이름을 Custom-R-Env로 지정합니다(이전 단계에서 구성을 이미 작성한 경우 목록에서 구성을 선택하고 Edit(편집)을 선택할 수 있습니다.
  4. 노트북 시작 탭에서 다음 스크립트를 입력합니다.

 

## On-Start: After you set up the environment in the instance

## then you can have this life-cycle config to link the custom env with kernel

 

#!/bin/bash

sudo -u ec2-user -i <<‘EOF’

ln -s /home/ec2-user/SageMaker/envs/custom-r /home/ec2-user/anaconda3/envs/custom-r

EOF

echo “Restarting the Jupyter server…”

restart jupyter-server

 

 

  1. Create Configuration(구성 생성)을 누릅니다(또는 기존 구성을 편집하는 경우 업데이트를 누르십시오.).

 

 

Amazon SageMaker 인스턴스에 라이프사이클 구성 할당하기

노트북 인스턴스를 만들 때 라이프사이클 구성을 할당할 수 있습니다. 자세한 내용은 ‘Customize a Notebook Instance Using a Lifecycle Configuration Script(수명 주기 구성 스크립트를 사용하여 노트북 인스턴스를 사용자 지정하기)’ 글을 참고해 주시기 바랍니다.

 

라이프사이클 구성(Custom-R-Env)으로 노트북을 만들려면 추가 구성 섹션의 노트북에 스크립트를 할당해야 합니다. 다른 모든 단계는 Amazon SageMaker 인스턴스를 생성하는 것과 동일합니다.

 

 

 

사용자 지정 R 환경 사용하기

사용자 지정 환경을 만든 기존 인스턴스를 여는 경우 기존 파일 및 코드와 /envs/폴더가 표시됩니다.

그러나 새 인스턴스를 만들고 수명 주기 스크립트를 사용하여 Amazon S3에서 환경을 가져오는 경우 다음 단계를 완료해야합니다.

 

  1. 인스턴스 상태가 In Service으로 표시되면 주피터를 엽니다. Amazon SageMaker 파일에 /envs/폴더가 있어야 합니다. 이것이 바로 사용자 지정 환경입니다.
  2. 새로 만들기 드롭다운 메뉴에서 conda_r_custom-r을 선택합니다.

 

 

 

이제 사용자 지정 R 환경이 포함된 노트북이 있습니다. 노트북에 있는 경우 Juypyter 환경의 오른쪽 상단 모서리에 R 로고가 표시되어야 합니다. 이 로고는 커널이 R 커널임을 나타내며 커널 이름은 conda_r_custom-r이어야 합니다. 환경을 테스트하려면 사용자 지정 환경에 포함된 라이브러리(예: rJava) 중 하나를 가져옵니다.

 

library(rJava)

 

 

 

이제 사용자 지정 R 환경이 인스턴스에서 실행되고 있으며, reticulate패키지를 사용하여 R에서 프로그래밍할 수 있습니다.

 

 

글을 마치며…

오늘은 Amazon SageMaker 노트북 인스턴스에 대한 사용자 지정 영구 R 환경을 만드는 과정을 안내해 드렸습니다. Amazon SageMaker에서 R에 대한 노트북을 보시려면 Amazon SageMaker 샘플GitHub 저장소를 확인해 주십시오. R 커널을 사용하여 Amazon SageMaker 노트북 인스턴스를 만드는 방법에 대한 자세한 내용은 ‘Amazon SageMaker 노트북 인스턴스에서 R로 코딩하기’ 블로그 글을 참고해 주시기 바랍니다. Amazon SageMaker에서의 R 사용자 가이드에서는R을 사용한 Amazon SageMaker 기능 활용법을 더욱 자세히 확인하실 수 있으며, AWS Machine Learning Blog에서는 Amazon SageMaker에서 경험을 쌓을 수 있는 더 많은 자료를 살펴보실 수 있습니다.

 

 

원문URL:  https://aws.amazon.com/ko/blogs/machine-learning/creating-a-persistent-custom-r-environment-for-amazon-sagemaker/

** 메가존 클라우드 TechBlog는 AWS BLOG 영문 게재 글 중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아서, 정기적으로 게재하고 있습니다. 추가로 번역 및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS 페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달해드리도록 하겠습니다.