Amazon Sagemaker의 JupyterLab은 관리형 환경으로 기본적으로 제공되는 커널이 존재한다. (최신의 경우 conda python 3.11) 이때 여러 노트북을 관리하는 경우 패키지별 종속성 문제가 발생할 수 있으면 패키지별 필요한 python version이 다르기 때문에 여러 사용자 또는 여러 환경의 작업을 하는데 어려움이 있다. AWS에서는 노트북에 필요한 별도 패키지가 있다면 따로 AMI를 만들어서 작업 하라는 권장 사항이 있는데 나는 별도의 커널로 하나의 주피터 노트북에서 여러개를 관리하고 싶어졌다.
가상 환경을 구성해서 하려다가 방법을 찾았다.
아래의 방법을 사용한다면 커널을 별도로 잡아서 안전한 가상 환경에서 작업이 가능하다.
1. conda env 생성/활성화
export ENV_NAME=[env name]
conda create -n $ENV_NAME python=3.13 -y
conda activate $ENV_NAME
- python verison은 디폴트가 최신 버전을 가지고 온다. 필요한 버전이 있다면 명시해주자(python=3.11)
2. ipykernel 내 패키지 설치
(env) $ pip install ipykernel
3. Kernel 등록
(env) $ python -m ipykernel install --user --name $ENV_NAME --display-name "보여지는 이름 설정"
- —name myenv: 내부적으로 커널 식별자 역할
- —display-name "MyEnv": 노트북 UI에서 보일 이름
4. 커널 목록 확인
(base) sagemaker-user@default:~$ jupyter kernelspec list
Available kernels:
dp_env /home/sagemaker-user/.local/share/jupyter/kernels/dp_env
glue_pyspark /opt/conda/share/jupyter/kernels/glue_pyspark
glue_spark /opt/conda/share/jupyter/kernels/glue_spark
pysparkkernel /opt/conda/share/jupyter/kernels/pysparkkernel
python3 /opt/conda/share/jupyter/kernels/python3
sparkkernel /opt/conda/share/jupyter/kernels/sparkkernel
노트북 파일 커널 적용
노트북에서 특정 커널을 적용 할 수 있다.

위와 같이 등록한 커널이 나오고 선택이 가능하지만 실제로 사용을 하고 아래와 같은 명령어를 수행하면 등록된 env와 다른 경로의 python 파일을 찾는것이 확인된다.
!which python
!python -V
----
/opt/conda/bin/python
Python 3.11.11
따라서 !pip로 install하면 커널로 잡힌 venv 환경이 아닌 글로벌 환경에 설치되어 동일한 이슈가 발생한다. 그렇다고 커널이 정상적으로 동작하지 않는 것은 아니다.
- !
- 셀 명령어를 실행(예: 파일 목록, 패키지 설치, 리눅스 명령어 등).
- 파이썬 코드가 아닌 운영체제 명령어로 처리.
- %
- IPython 매직 명령어를 실행함
- Jupyter/IPyhon이 제공하는 특수기능으로 커널 내에서 동작
import sys
print("현재 Python 인터프리터 경로:", sys.executable)
print("현재 Python 버전:", sys.version)
----
현재 Python 인터프리터 경로: /home/sagemaker-user/.conda/envs/.dp_env/bin/python
현재 Python 버전: 3.13.2 | packaged by conda-forge | (main, Feb 17 2025, 14:10:22) [GCC 13.3.0]
이렇게 executable로 실행하면 정상적인 위치와 버전을 찾는것을 알 수 있다. 따라서, 커널 적용후 패키지를 안전하게 env 환경 내에 설치하기 위해선 아래와 같이 pip 명령어를 변경해 주어야 한다.
import sys
!{sys.executable} -m pip install sagemaker requests_toolbelt
or
%pip install sagemaker requests_toolbelt
다만, %pip 를 사용하는 경우 -V 옵션을 통해서 경로를 확인후 수행하도록 하자. %문법은 IPython을 통해 가상 환경 내의 주피터의 내장 함수로 사용되기에 가상 환경을 기본 베이스 패스로 잡지만 혹시 모르니 크로스 체크는 한번쯤 해보아도 좋다.
이렇게 되면 강제적으로 env환경의 python 명령어를 통해서 패키지가 설치 되기 때문에 글로벌과 격리된 환경에서 안정적으로 분석 및 학습 작업 수행이 가능하며 패키지 출동에 따라 가상환경을 다시 구성하는 것이 가능하다.
'AI-ML > LLM' 카테고리의 다른 글
AWS Certified AI Practitioner 합격기(AIF-C01) (0) | 2024.08.29 |
---|