- ssh로 접속해야 할 경우 인바운드 규칙을 추가해줘야 한다.
- (EC2 instance 클릭→ 보안 탭→ 보안 그룹 클릭 → 인바운드 규칙 편집)
특정 ip만 접속 허용하고 싶을 경우 0.0.0.0/0 대신 ip를 입력한다.
- (EC2 instance 클릭→ 보안 탭→ 보안 그룹 클릭 → 인바운드 규칙 편집)
- mlflow나 FastAPI 등 특정 port를 사용하는 경우에도 인바운드 규칙을 추가 해줘야 한다.
- 예를 들어, FastAPI의 경우 기본 port=8000이므로 다음과 같이 port 8000에 대해서도 인바운드 규칙을 추가한다.
- 예를 들어, FastAPI의 경우 기본 port=8000이므로 다음과 같이 port 8000에 대해서도 인바운드 규칙을 추가한다.
- systemd를 통해 python code를 실행할 경우 root 계정의 환경을 체크해야 한다. (이유는 추후 설명)
- systemd에서 user로 실행할 때의 동작은 다음과 같다.
- root 계정에서 su {USER_NAME}
- systemd에 등록된 service 파일의 ExecStart 부분 실행
- 이 때, GPU가 있음에도 불구하고 사용되지 않는 문제가 발생한다.
- 이유는 root 계정에서 cuda를 찾지 못하기 때문!
--- - 해결 방법
- cuda를 사용할 수 있는 user 계정으로 접속 후, nvcc, LD_LIBRARY_PATH를 찾아서 root 계정에 연결한다.
- which nvcc 명령어 실행 후, 경로 복사
- 아래 코드 또는 터미널에서 입력 후 LD_LIBRARY_PATH 경로 복사
- systemd에서 user로 실행할 때의 동작은 다음과 같다.
import os
print(os.environ['LD_LIBRARY_PATH'])
# 위를 실행하여 나온 경로까지 복사한 후 다음과 같이 환경 변수 설정 (괄호는 넣지 않는다)
# 스크립트로 실행 시 GPU 사용 작업 이전에 다음 코드 추가
# 또는 /root/.bashrc 파일을 편집기로 열고 맨 아래에 다음 코드 추가
export PATH=$PATH:{nvcc_경로_붙여넣기}
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:{LD_LIBRARY_PATH_붙여넣기}
# python code로 실행 시 코드 맨위에 다음 코드 추가
import os
os.environ['PATH'] = "nvcc_경로_붙여넣기"
os.environ['LD_LIBRARY_PATH'] = "LD_LIBRARY_PATH_붙여넣기"