GCP에서 Isaac Sim을 돌리고 싶은 나는
설정을 알아보고 있었다
자료에 따르면 GCP 구동을 위해서는 T4, L4를 권장한다.
이미지는 Ubuntu 22.04 LTS를 이용하면 좋다고 한다.
혹여 여기서 Ubuntu 최신 버전을 쓰고자 하는 분들이 있을 수 있는데
이 이후 버전에서는 불안정한 것들과 공식적으로 미지원하는 부분이 있기에
22.04를 쓰는것을 추천한다.

또다른 이용 방법으로는 GCP 마켓 플레이스에서 Isaac Sim Workstation을 지원하고 있다.
이를 이용하면 아주 간단히 Isaac Sim을 사용할 수 있다.

Google Cloud console
Google Cloud 콘솔에서 www.gstatic.com의 자바스크립트 소스를 로드할 수 없습니다. 가능한 원인은 다음과 같습니다. 네트워크 관리자가 www.gstatic.com 또는 IP 주소를 차단합니다.과도한 자동 요청으로
console.cloud.google.com

GCP Compute Engine 구성
위에서 언급한 자료에 의하면 GPU는 T4나 L4를 이용할 수 있다.
NVIDIA에선 이를 기준으로 하여 각 권장 사양 명령어를 제공하고 있다.
개인적으로 최소 사양과 넉넉사양도 명시해봤다
GUI에서 옵션으로 금액 보고 적당한 타협을 찾아가면 될 것이다.
T4
gcloud compute \
--project "<project_name>" \
instances create "<instance_name>" \
--zone "us-central1-a" \
--machine-type "n1-standard-8" \
--subnet "default" \
--metadata="install-nvidia-driver=True" \
--maintenance-policy "TERMINATE" \
--accelerator type=nvidia-tesla-t4,count=1 \
--image "ubuntu-2204-jammy-v20230919" \
--image-project "ubuntu-os-cloud" \
--boot-disk-size "100" \
--boot-disk-type "pd-ssd"
1) CPU
- n1-standard-4 : 최소사양 ( 4 vCPU / 15GB / 1 L4 )
- n1-standard-8 : 권장사양 ( 8 vCPU / 30GB / 1 L4 )
- n1-standard-16: 넉넉사양 (16 vCPU / 60GB / 1 L4 )
2) Image: Ubuntu 22.04 LTS
3) Disk : SSD 100GB
gcloud compute \
--project "<project_name>" \
instances create "<instance_name>" \
--zone "us-central1-a" \
--machine-type "g2-standard-4" \
--subnet "default" \
--metadata="install-nvidia-driver=True" \
--maintenance-policy "TERMINATE" \
--accelerator type=nvidia-l4,count=1 \
--image "ubuntu-2204-jammy-v20230919" \
--image-project "ubuntu-os-cloud" \
--boot-disk-size "100" \
--boot-disk-type "pd-ssd"
1) CPU
- g2-standard-4 : 최소사양 ( 4 vCPU / 15GB / 1 L4 )
- g2-standard-8 : 권장사양 ( 8 vCPU / 30GB / 1 L4 )
- g2-standard-16: 넉넉사양 (16 vCPU / 60GB / 1 L4 )
2) Image: Ubuntu 22.04 LTS
3) Disk : SSD 100GB
사진으로 보는 권장 사양
나는 일단 초급자기 때문에 아래와 같이 T4 권장 사양으로 맞추었다

하지만 디스크는 150GB로 조금 더 용량을 할당했다.
이것도 이후 모자랄 것으로 예상된다..

만들어졌다!

NVIDIA Driver 설치
가이드에 나온 대로 드라이브를 설치한다.
1) 습관성 업데이트
vm을 처음 키면 습관적으로 하는 루틴을 진행해준다.
sudo apt update
2) 설치용 python 코드 다운로드
curl https://raw.githubusercontent.com/GoogleCloudPlatform/compute-gpu-installation/main/linux/install_gpu_driver.py --output install_gpu_driver.py
3) 드라이버 설치
sudo python3 install_gpu_driver.py


Docker 및 Nvidia Toolkit 설치
아래 문서를 따라 Container Toolkit 설치를 해달라하니 따라보자
Container Installation — Isaac Sim Documentation
Container Installation The container installation of Isaac Sim is recommended for deployment on remote headless servers or the Cloud using a Docker container running Linux. Container Setup Ensure your system meets the System Requirements for running NVIDIA
docs.isaacsim.omniverse.nvidia.com
1) Docker 설치
이 과정은 대부분 익숙할 것이라 생각한다.
도커를 설치하고 Docker 그룹에 나를 추가하는 과정이다.
# Docker installation using the convenience script
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
# Post-install steps for Docker
sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker
# Verify Docker
docker ps

2) NVIDIA Container Toolkit 설치
docker가 GPU를 사용할 수 있도록 container toolkit을 설치해주는 과정이다.
# Configure the repository
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list \
&& \
sudo apt-get update
# Install the NVIDIA Container Toolkit packages
sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker
# Configure the container runtime
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
# Verify NVIDIA Container Toolkit
docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi

Isaac Sim Container 배포
눈에 보이다싶이 현재 CLI 환경으로 돌아가고 있는데
이를 Headless 환경으로,
즉 화면을 띄우는 리소스를 아껴 GPU 랜더링이나 물리 연산에 집중시키고
그 결과물을 비디오 스트림으로 압축해 내 PC로 전송 시킬 수 있도록 구성해볼 것이다.
그리고 물론 이 내용도 문서로 제공하고 있다.
Container Installation — Isaac Sim Documentation
Container Installation The container installation of Isaac Sim is recommended for deployment on remote headless servers or the Cloud using a Docker container running Linux. Container Setup Ensure your system meets the System Requirements for running NVIDIA
docs.isaacsim.omniverse.nvidia.com
1) Docker Image Pull
Isaac Sim 5.1.0 버전을 가져온다.
(2026.01.09 기준 최신)
docker pull nvcr.io/nvidia/isaac-sim:5.1.0


2) Docker Volume Mount
VM 워낙 비싸서 껐다 켰다 할거라 필수 과정이다
마운트 폴더 생성하고 권한 설정해주고 있다.
mkdir -p ~/docker/isaac-sim/cache/main/ov
mkdir -p ~/docker/isaac-sim/cache/main/warp
mkdir -p ~/docker/isaac-sim/cache/computecache
mkdir -p ~/docker/isaac-sim/config
mkdir -p ~/docker/isaac-sim/data/documents
mkdir -p ~/docker/isaac-sim/data/Kit
mkdir -p ~/docker/isaac-sim/logs
mkdir -p ~/docker/isaac-sim/pkg
sudo chown -R 1234:1234 ~/docker/isaac-sim

3) Docker 컨테이너 환경 진입
Isaac Sim 실행 전, 컨테이너 내부 쉘로 먼저 진입한다.
뭔가 할게 있었나보다.
docker run --name isaac-sim --entrypoint bash -it --gpus all -e "ACCEPT_EULA=Y" --rm --network=host \
-e "PRIVACY_CONSENT=Y" \
-v ~/docker/isaac-sim/cache/main:/isaac-sim/.cache:rw \
-v ~/docker/isaac-sim/cache/computecache:/isaac-sim/.nv/ComputeCache:rw \
-v ~/docker/isaac-sim/logs:/isaac-sim/.nvidia-omniverse/logs:rw \
-v ~/docker/isaac-sim/config:/isaac-sim/.nvidia-omniverse/config:rw \
-v ~/docker/isaac-sim/data:/isaac-sim/.local/share/ov/data:rw \
-v ~/docker/isaac-sim/pkg:/isaac-sim/.local/share/ov/pkg:rw \
-u 1234:1234 \
nvcr.io/nvidia/isaac-sim:5.1.0
1) --entrypoint bash -it:
Isaac Sim 자동 실행을 멈추고, 내가 직접 명령어를 칠 수 있는 터미널 상태로 입장
2) --gpus all / --network=host:
VM의 모든 GPU 성능과 네트워크 IP/포트를 복잡한 설정 없이 그대로 끌어다 쓰겠다
3) -e "ACCEPT_EULA=Y" / --rm:
필수 약관에 동의하고, 작업이 끝나고 나오면 컨테이너(껍데기)를 즉시 삭제해 깔끔하게 정리
4) -v (Volume Mount):
컨테이너의 데이터(캐시, 로그)를 아까 만들었던 폴더에 연결해 컨테이너가 종료되어도 데이터 유지
5) -u 1234:1234:
파일 권한 에러를 막기 위해 Root가 아닌, 아까 폴더 주인을 맞춰둔 특정 사용자 ID(1234)로 실행하겠다

4) GPU 여부 점검
컨테이너 내부에서 GPU가 잡히는지 테스트를 진행한다.
현재 진입한 컨테이너 내부에서 아래 명령어를 입력하자
./isaac-sim.compatibility_check.sh --/app/quitAfter=10 --no-window



원인은 램이었는데, 최소 사양이 32 GB인데
내가 31.54 GB라서 0.46 GB 모자라 오류가 났다
무시하기로 했다.

중요했던 GPU는 통과했기에 다음 단계를 진행하려고한다.
5) Isaac Sim 실행
이제 실제로 실행을 해보는 단계다
실행하면 -v 옵션 넣어서 신나게 로그가 출렁인다.
./runheadless.sh -v


이렇게 "Isaac Sim Full Streaming App is loaded."가 뜨면 완료된 것이다.
Isaac Sim Live Streaming Client 설치
이제 GUI를 연결하기 위해
클라이언트 프로그램을 다운받아보자
Livestream Clients — Isaac Sim Documentation
See Workstation Installation for full installation instructions. cd ~/isaacsim ./isaac-sim.streaming.sh See Workstation Installation for full installation instructions. cd C:\isaacsim isaac-sim.streaming.bat See Container Installation for full installation
docs.isaacsim.omniverse.nvidia.com
1) 포트개방
접속을 위해선 해당 vm의 포트를 열어주어야한다.
현재 UDP 47998, TCP 49100을 개방해야 한다고 명시되어 있다.

2) VPC 방화벽 오픈

2-1) UDP 47998 허용


2-2) TCP 47998 허용


3) 스트리밍 재실행
이전 runheadless.sh 하던건 ctrl+c해서 취소하고
아래 명령어를 통해 외부 노출 IP와 포트를 명시해 재실행한다.
PUBLIC_IP=$(curl -s ifconfig.me) && ./runheadless.sh --/app/livestream/publicEndpointAddress=$PUBLIC_IP --/app/livestream/port=49100
4) 클라이언트 다운로드
아래 주소에서 자신의 운영체제에 맞는 클라이언트를 다운로드 하자.
Download Isaac Sim — Isaac Sim Documentation
Omniverse Launcher, Nucleus Workstation, and Nucleus Cache will be deprecated and will no longer be available starting October 1, 2025.
docs.isaacsim.omniverse.nvidia.com

4) 접속 시도
외부 IP를 넣고 connect버튼을 눌러 연결한다.

얏호!

다음에 다시 켤 때는?
1) 도커 컨테이너 접속
docker run --name isaac-sim --entrypoint bash -it --gpus all -e "ACCEPT_EULA=Y" --rm --network=host \
-e "PRIVACY_CONSENT=Y" \
-v ~/docker/isaac-sim/cache/main:/isaac-sim/.cache:rw \
-v ~/docker/isaac-sim/cache/computecache:/isaac-sim/.nv/ComputeCache:rw \
-v ~/docker/isaac-sim/logs:/isaac-sim/.nvidia-omniverse/logs:rw \
-v ~/docker/isaac-sim/config:/isaac-sim/.nvidia-omniverse/config:rw \
-v ~/docker/isaac-sim/data:/isaac-sim/.local/share/ov/data:rw \
-v ~/docker/isaac-sim/pkg:/isaac-sim/.local/share/ov/pkg:rw \
-u 1234:1234 \
nvcr.io/nvidia/isaac-sim:5.1.0
2) Isaac Sim 실행
PUBLIC_IP=$(curl -s ifconfig.me) && ./runheadless.sh --/app/livestream/publicEndpointAddress=$PUBLIC_IP --/app/livestream/port=49100
3) 클라이언트 연결!
드러누워 편히 쉬는...
언젠간 걸어줄거라 믿는...
우리의 휴머노이드와 함께 글을 마친다.

다음 이야기
아뿔싸...! 잊고있었다...
GPU가 연결된 VM은 인스턴스 정지가 안되는구나...

지금은 눈물을 흘리며 중지했지만,
다음엔 terraform으로 정의해서 딸깍으로 껐다켰다 해봐야지!!
'기술 단어장 > 🎸' 카테고리의 다른 글
| [GitHub] GitHub Issue Template 등록하기 (0) | 2025.04.16 |
|---|---|
| [Linux] 리눅스 커널 자동 패치 & 롤백 시스템 (0) | 2025.03.18 |
| [FaceGen] FaceGen Customizer 가이드 번역본 (0) | 2025.02.10 |
| [Web-Frontend] 일주일 간의 웹 프론트엔드 공부 - 요약지 (0) | 2023.09.08 |
| [알고리즘] 한 달 동안의 나의 알고리즘 공부 - 요약지 (0) | 2023.08.30 |
댓글