

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 외부 라이브러리 및 커널 설치
<a name="nbi-add-external"></a>

**중요**  
현재 노트북 인스턴스 환경의 모든 패키지는 Amazon SageMaker AI와 함께 사용할 수 있는 라이선스가 부여되며 추가 상용 라이선스가 필요하지 않습니다. 그러나 향후 변경될 수 있으므로 새로운 내용이 있는지 정기적으로 라이선스 조건을 검토하는 것이 좋습니다.

Amazon SageMaker 노트북 인스턴스에는 여러 환경이 이미 설치되어 있습니다. 이러한 환경에는 scikit, Pandas, NumPy, TensorFlow 및 MXNet을 포함한 Jupyter 커널 및 Python 패키지가 포함되어 있습니다. `sample-notebooks` 폴더에 있는 모든 파일과 함께 이러한 환경을 노트북 인스턴스를 중지하고 시작할 때 새로 고침됩니다. 또한 원하는 패키지 및 커널이 포함된 고유 환경을 설치할 수도 있습니다.

Amazon SageMaker 노트북 인스턴스의 다른 Jupyter 커널은 별개의 Conda 환경입니다. *Conda* 환경에 대한 자세한 내용은 [환경 관리](https://conda.io/docs/user-guide/tasks/manage-environments.html)를 참조하세요.

노트북 인스턴스의 Amazon EBS 볼륨에 사용자 지정 환경과 커널을 설치합니다. 이렇게 하면 노트북 인스턴스를 중지하고 다시 시작할 때 해당 라이브러리가 계속 유지되고 설치한 외부 라이브러리가 SageMaker AI에서 업데이트되지 않습니다. 이를 위해서는 노트북 인스턴스를 생성할 때 실행되는 스크립트(`on-create)`)와 노트북 인스턴스를 다시 시작할 때마다 실행되는 스크립트(`on-start`)가 모두 포함된 수명 주기 구성을 사용하세요. 노트북 인스턴스 수명 주기 사용에 대한 자세한 내용은 [LCC 스크립트를 사용하여 SageMaker 노트북 인스턴스 사용자 지정](notebook-lifecycle-config.md)을 참조하세요. [SageMaker AI Notebook Instance Lifecycle Config Samples](https://github.com/aws-samples/amazon-sagemaker-notebook-instance-lifecycle-config-samples)에 샘플 수명 주기 구성 스크립트가 포함된 GitHub 리포지토리가 있습니다.

[https://github.com/aws-samples/amazon-sagemaker-notebook-instance-lifecycle-config-samples/blob/master/scripts/persistent-conda-ebs/on-create.sh](https://github.com/aws-samples/amazon-sagemaker-notebook-instance-lifecycle-config-samples/blob/master/scripts/persistent-conda-ebs/on-create.sh) 및 [https://github.com/aws-samples/amazon-sagemaker-notebook-instance-lifecycle-config-samples/blob/master/scripts/persistent-conda-ebs/on-start.sh](https://github.com/aws-samples/amazon-sagemaker-notebook-instance-lifecycle-config-samples/blob/master/scripts/persistent-conda-ebs/on-start.sh)의 예제는 노트북 인스턴스에 환경 및 커널을 설치하는 모범 사례를 보여줍니다. `on-create` 스크립트는 `ipykernel`라이브러리를 설치하여 Jupyter 커널과 같은 사용자 지정 환경을 만든 다음, `pip install`및 `conda install`를 사용하여 라이브러리를 설치합니다. 스크립트를 수정하여 사용자 지정 환경을 만들고 원하는 라이브러리를 설치할 수 있습니다. SageMaker AI는 노트북 인스턴스를 중지하고 다시 시작할 때 이러한 라이브러리를 업데이트하지 않으므로 사용자 정의 환경에 원하는 특정 버전의 라이브러리가 있는지 확인할 수 있습니다. `on-start`스크립트는 Jupyter 커널로 생성한 모든 사용자 지정 환경을 설치하여 Jupyter의 **새** 메뉴의 드롭다운 목록에 나타나도록 합니다.

## 패키지 설치 도구
<a name="nbi-add-external-tools"></a>

SageMaker 노트북은 다음 패키지 설치 도구를 지원합니다.
+ conda 설치
+ pip 설치

다음 방법을 사용하여 패키지를 설치할 수 있습니다.
+ 수명주기 구성 스크립트.

  예시 스크립트는 [SageMaker AI Notebook Instance Lifecycle Config Samples](https://github.com/aws-samples/amazon-sagemaker-notebook-instance-lifecycle-config-samples)을 참조하세요. 수명 주기 구성에 대한 자세한 내용은 [수명 주기 구성 스크립트를 사용하여 Notebook 인스턴스 사용자 지정](https://docs.aws.amazon.com/sagemaker/latest/dg/notebook-lifecycle-config.html)을 참조하세요.
+ 노트북 - 다음 명령이 지원됩니다.
  + `%conda install`
  + `%pip install`
+ Jupyter 터미널 - pip 및 conda를 사용하여 패키지를 직접 설치할 수 있습니다.

노트북 내에서 시스템 명령 구문(\$1으로 시작하는 줄)을 사용하여 패키지를 설치할 수 있습니다(예: `!pip install`및 `!conda install`). 최근에는 IPython에 `%pip`및 `%conda`라는 새로운 명령이 추가되었습니다. 이 명령은 사용 중인 활성 환경이나 인터프리터를 정확하게 고려하므로 노트북에서 패키지를 설치할 때 권장되는 방법입니다. 자세한 내용은 [%pip 및 %conda 매직 함수 추가](https://github.com/ipython/ipython/pull/11524)를 참조하세요.

### Conda
<a name="nbi-add-external-tools-conda"></a>

Conda는 패키지와 해당 종속성을 설치할 수 있는 오픈 소스 패키지 관리 시스템 및 환경 관리 시스템입니다. SageMaker AI는 두 가지 주요 채널, 즉 기본 채널과 conda-forge 채널 중 하나와 함께 Conda 사용을 지원합니다. 자세한 내용은 [Conda 채널](https://docs.conda.io/projects/conda/en/latest/user-guide/concepts/channels.html)을 참조하세요. conda-forge 채널은 기여자가 패키지를 업로드할 수 있는 커뮤니티 채널입니다.

**참고**  
Conda가 종속성 그래프를 해결하는 방식으로 인해 conda-forge에서 패키지를 설치하는 데 훨씬 더 오래 걸릴 수 있습니다 (최악의 경우 10분 이상).

딥 러닝 AMI에는 많은 conda 환경과 많은 패키지가 사전 설치되어 있습니다. 사전 설치된 패키지 수가 많기 때문에 호환성이 보장되는 패키지 세트를 찾기가 어렵습니다. “환경이 일관되지 않습니다.패키지 플랜을 주의 깊게 확인하세요”라는 경고가 표시될 수 있습니다. 이러한 경고에도 불구하고 SageMaker AI는 SageMaker AI에서 제공하는 모든 환경이 올바른지 확인합니다. SageMaker AI는 사용자가 설치한 패키지가 올바르게 작동한다고 보장할 수 없습니다.

**참고**  
SageMaker AI AWS Deep Learning AMIs 및 Amazon EMR 사용자는 해당 서비스에서 Anaconda를 사용할 때 2024년 2월 1일까지 상용 라이선스를 받지 않고도 상용 Anaconda 리포지토리에 액세스할 수 있습니다. 2024년 2월 1일 이후 상용 Anaconda 리포지토리를 사용하는 경우 고객은 자체 Anaconda 라이선스 요구 사항을 결정할 책임이 있습니다.

Conda에는 환경을 활성화하는 두 가지 방법(conda 활성화/비활성화 및 소스 활성화/비활성화)이 있습니다. 자세한 내용은 [Linux에서 'conda 활성화' 또는 '소스 활성화'를 사용해야 합니까?](https://stackoverflow.com/questions/49600611/python-anaconda-should-i-use-conda-activate-or-source-activate-in-linux)를 참조하세요.

SageMaker AI는 Conda 환경을 Amazon EBS 볼륨으로 이동할 수 있도록 지원하며, 이는 인스턴스가 중지되어도 유지됩니다. 기본 동작인 루트 볼륨에 환경을 설치하면 환경이 지속되지 않습니다. 수명 주기 스크립트의 예는 [persist-conda-ebs](https://github.com/aws-samples/amazon-sagemaker-notebook-instance-lifecycle-config-samples/tree/master/scripts/persistent-conda-ebs)를 참조하세요.

**지원되는 conda 작업(이 항목 하단의 참고 참조)**
+ 단일 환경에서 패키지의 conda 설치
+ 모든 환경에서 패키지의 conda 설치
+ R 환경에 R 패키지를 conda 설치
+ 기본 conda 리포지토리에서 패키지 설치
+ conda-forge에서 패키지 설치
+ EBS를 사용하도록 Conda 설치 위치 변경
+ conda 활성화 및 소스 활성화 모두 지원

### Pip
<a name="nbi-add-external-tools-pip"></a>

Pip은 Python 패키지를 설치하고 관리하기 위한 사실상의 도구입니다. Pip은 기본적으로 PyPI(Python Package Index)에서 패키지를 검색합니다. Conda와 달리 pip는 환경 지원이 내장되어 있지 않으며 네이티브/시스템 라이브러리 종속성이 있는 패키지의 경우 Conda만큼 철저하지 않습니다. Pip는 Conda 환경에 패키지를 설치하는 데 사용할 수 있습니다.

PyPI 대신 pip로 대체 패키지 리포지토리를 사용할 수 있습니다. 수명 주기 스크립트 예제는 [on-start.sh](https://github.com/aws-samples/amazon-sagemaker-notebook-instance-lifecycle-config-samples/blob/master/scripts/add-pypi-repository/on-start.sh)를 참조하세요.

**지원되는 pip 연산(이 항목 하단의 참고 참조)**
+ pip을 사용하여 활성 conda 환경 없이 패키지 설치(시스템 전체에 패키지 설치)
+ pip를 사용하여 conda 환경에 패키지 설치
+ pip를 사용하여 모든 conda 환경에 패키지 설치
+ EBS를 사용하도록 pip 설치 위치 변경
+ 대체 리포지토리를 사용하여 pip로 패키지 설치

### 지원되지 않음
<a name="nbi-add-external-tools-misc"></a>

SageMaker AI는 가능한 한 많은 패키지 설치 작업을 지원하는 것을 목표로 합니다. 하지만 SageMaker AI 또는 DLAMI로 패키지를 설치하고 이러한 패키지에서 다음 작업을 사용하면 노트북 인스턴스가 불안정해질 수 있습니다.
+ 설치 제거
+ 다운그레이드
+ 업그레이드

yum install을 통한 패키지 설치 또는 CRAN에서 R 패키지 설치에 대한 지원은 제공되지 않습니다.

네트워크 상태 또는 구성 또는 Conda 또는 PyPI의 가용성과 관련된 잠재적 문제로 인해, 패키지가 고정 시간 내 또는 확정된 시간 내에 설치될 것이라고 보장할 수 없습니다.

**참고**  
패키지 설치가 성공적일 것이라고 보장할 수 없습니다. 호환되지 않는 종속성이 있는 환경에서 패키지를 설치하려고 하면 오류가 발생할 수 있습니다. 이 경우 라이브러리 관리자에게 문의하여 패키지 종속성을 업데이트할 수 있는지 확인해야 합니다. 또는 설치를 허용하는 방식으로 환경을 수정할 수도 있습니다. 그러나 이러한 수정은 기존 패키지를 제거하거나 업데이트해야 할 수 있으며, 이는 더 이상 이 환경의 안정성을 보장할 수 없음을 의미합니다.