OpenCue를 사용하여 GCP에 렌더링 작업장 만들기

로봇 댄스 파티

이 가이드에서는 Google Cloud를 사용하여 Linux 가상 머신(VM)에 OpenCue 렌더링 관리 시스템을 배포하는 방법을 설명합니다. 가이드 전체를 완료하려면 3~4시간이 걸립니다.

렌더링 관리 도구는 시각 효과 및 애니메이션 제작에서 복잡한 작업을 개별 작업으로 분할하여 광범위한 컴퓨팅 리소스로 프로세스를 분산하는 데 사용됩니다. 이러한 도구는 3D 렌더링, 2D 합성, 데이터 형식 간 트랜스코딩, 데이터베이스에서 애셋 체크인 및 체크아웃 등의 작업을 관리하는 데 사용됩니다. 작업 단계 및 종속 항목을 연결하는 데 사용되는 경우도 많습니다. 대규모 시설에서 렌더링 관리 시스템은 수천 개의 작업을 동시에 지원할 수 있으며 작업의 각 단계에 리소스를 할당하고 로그를 관리하고 도구 문제를 해결하고 리소스를 관리하는 인터페이스를 제공합니다.

Google이 Sony Pictures Imageworks와 공동으로 출시한 OpenCue는 프로덕션 검증을 거친 오픈소스 렌더링 관리 시스템으로서 Linux 및 macOS에서 작동합니다. OpenCue는 온프레미스 렌더링 작업장 구축 및 여러 클라우드 제공업체의 리소스를 활용하는 초대형 하이브리드 배포에 사용되고 있습니다.

이 가이드는 다음과 같은 도구와 개념에 익숙한 IT 관리자 및 파이프라인 기술 담당자를 대상으로 작성되었습니다. 이 목록의 모든 사항에 대한 전문가가 아니어도 무방합니다. 필요에 따라 추가적인 참고 자료를 안내해 드리겠습니다.

  • 분산형 렌더링 관리의 운영 원리
  • Git 및 GitHub
  • Docker로 컨테이너 생성 및 실행
  • Bash 스크립트 수정 및 스크립트로 리소스 실행
  • Python 구성 및 스크립트 수정
  • Cloud SQL, Compute Engine, Cloud Storage, Container Registry를 비롯한 Google Cloud 리소스 관리의 기본 도구 및 개념

렌더링 관리 도구는 다양한 사용 사례에 대응하면서 광범위한 리소스를 조정하므로 렌더링 작업장을 구성하는 방식은 다양합니다. 이 가이드에서는 구성 하나에 초점을 맞추면서 OpenCue 사용법을 빠르게 익히는 데 중점을 둡니다. 렌더링 작업장에 더 적합한 아키텍처를 만들려면 단계 수정, 워크플로 성능 프로파일링 또는 Google Cloud 리소스 유형 교체가 필요할 수 있습니다. Google Cloud에서 렌더링 작업장을 설정 및 관리하는 옵션에 대한 자세한 내용은 하이브리드 렌더링 작업장 구축을 참조하세요. 데이터 보안 강화에 대한 자세한 내용은 렌더링 워크로드 보안을 참조하세요.

목표

  • Docker 및 Python을 사용하여 OpenCue 모듈을 설치하고 구성합니다.
  • OpenCue 데이터베이스를 만들고 스키마 및 예제 데이터를 입력합니다.
  • Cloud Storage 리소스를 만들고 가이드의 애니메이션 장면 파일을 입력합니다.
  • 로컬에서 Docker 이미지를 구성 및 생성하고, Container Registry에 저장하고, 컨테이너를 사용하여 Compute Engine 리소스를 시작합니다.
  • 컴퓨팅 리소스를 효율적으로 확장할 수 있도록 인스턴스 템플릿 및 관리형 인스턴스 그룹을 만듭니다.
  • 워크스테이션에서 OpenCue의 인터페이스를 온프레미스로 실행하도록 구성합니다.
  • OpenCue의 인터페이스를 사용하여 애니메이션 시퀀스를 렌더링하고 작업 관리 방법을 알아봅니다.

비용

가격 계산기를 사용하여 예상 사용량을 기준으로 예상 비용을 산출할 수 있습니다.

이 가이드에서는 머신 숫자와 규모가 매우 제약된 상황에서 실제로 작동하는 렌더링 작업장을 빌드하는 모든 단계를 설명하며 Google Cloud 무료 등급 가격 책정 가이드라인에 맞도록 vCPU가 두 개인 일부 VM에서 낮은 해상도와 샘플링 레이트로 애니메이션을 렌더링합니다.

이 가이드를 구성하는 리소스를 4시간 동안 사용할 경우 총 $3.27의 비용이 발생합니다.

시작하기 전에

  1. Google Cloud 계정에 로그인합니다. Google Cloud를 처음 사용하는 경우 계정을 만들고 Google 제품의 실제 성능을 평가해 보세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
  2. Google Cloud Console의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.

    프로젝트 선택기로 이동

  3. Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다. 프로젝트에 결제가 사용 설정되어 있는지 확인하는 방법을 알아보세요.

  4. Container Registry and Compute Engine API를 사용 설정합니다.

    API 사용 설정

  5. Google Cloud Console의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.

    프로젝트 선택기로 이동

  6. Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다. 프로젝트에 결제가 사용 설정되어 있는지 확인하는 방법을 알아보세요.

  7. Container Registry and Compute Engine API를 사용 설정합니다.

    API 사용 설정

  8. 로컬 머신에 다음이 설치되어 있는지 확인합니다.
    • Docker 이 가이드는 Docker Engine 버전 18.09.0으로 테스트되었습니다.
    • Python 이 가이드는 버전 2.7.10으로 테스트되었습니다.
    • Pip 이 가이드는 버전 19.0으로 테스트되었습니다.
    • Virtualenv 이 가이드는 버전 16.2.0으로 테스트되었습니다.
    • gcsfuse 이 가이드는 버전 0.23.0으로 테스트되었습니다.
    • 최신 버전의 Cloud SDK 이 가이드에서는 gcloudgsutil 명령줄 도구를 사용할 수 있도록 Cloud SDK를 설치해야 합니다. 로컬 워크스테이션의 터미널에서 gcloudgsutil 도구를 실행합니다.

OpenCue 개요

OpenCue의 인터페이스에는 다양한 모듈과 명령어 및 몇 가지 고유한 개념과 용어가 사용됩니다. 다음은 기본적인 하이브리드 렌더링 작업장을 배포하는 데 사용되는 도구와 기법입니다. 고급 주제 및 다양한 배포 옵션에 대한 자세한 내용은 OpenCue 문서를 참조하세요.

  • Cuebot - OpenCue의 일정 예약 도구입니다. Cuebot은 작업 배포를 처리하고, 렌더링 리소스를 관리하고, 데이터베이스와 통신합니다. 명령줄 인터페이스(CLI)를 통해 Python 및 Bash를 사용하여 Cuebot에 액세스할 수 있지만 시각적 인터페이스도 별도의 모듈로 포함되어 있습니다. 이 부분은 이후에 설명됩니다. 이 예시에서는 Google Cloud VM에서 Cuebot을 실행합니다. 온프레미스 배포를 위해 로컬에서 실행할 수도 있습니다. 대규모/하이브리드 배포의 경우 고가용성을 위해 여러 Cuebot 인스턴스를 사용할 수 있습니다.
  • 데이터베이스 - Cuebot은 PostgreSQL 데이터베이스 서버와 상호작용하여 애플리케이션의 상태를 저장합니다. 배포에 여러 Cuebot이 포함되었더라도 모든 인스턴스가 하나의 데이터베이스를 공유합니다. 이 가이드에서는 배포의 편의를 위해 Cloud SQL 인스턴스를 사용합니다.
  • CueGUI - Cuebot과 상호작용하는 시각적 인터페이스입니다. CueGUI는 작업 및 렌더링 호스트의 설정을 모니터링하고 관리하는 데 사용됩니다. 이 가이드에서는 클라우드에서 Cuebot을, 로컬 머신에서 CueGUI를 실행합니다.
  • 렌더링 호스트 - 개별 작업을 처리하는 데 사용되는 개별 렌더링 리소스입니다. 이러한 호스트는 온프레미스 방식 또는 클라우드 방식이거나 두 방식의 조합일 수 있습니다. 이 가이드에서는 Google Cloud에 있는 VM의 관리형 인스턴스 그룹을 렌더링 호스트로 사용합니다.
  • RQD - Render Queue Daemon의 약어로, 개별 렌더링 호스트에서 실행되며 Cuebot과 상호작용하여 실행해야 할 명령어에 대한 안내를 주고받습니다.
  • CueSubmit - 작업을 구성하고 시작하는 GUI입니다. 이 Python 프로그램을 독립형 GUI로 실행할 수도 있고, 타사 소프트웨어의 플러그인으로 실행할 수도 있습니다. OpenCue에는 Maya 플러그인(버전 2017 이상으로 테스트) 및 Nuke(버전 11로 테스트)가 포함됩니다. OpenCue 저장소에 포함된 코드를 수정하면 다른 타사 도구용 플러그인을 직접 빌드하거나 파이프라인을 맞춤설정할 수 있습니다.
  • PyCue - Cuebot과 상호작용하는 데 사용되는 Python 라이브러리 모음입니다. 이러한 라이브러리를 사용하여 기타 도구를 만들거나 GUI가 아닌 명령줄에서 Cuebot과 통신할 수 있습니다.
  • PyOutline - OpenCue 작업 제출을 작성하는 Python 라이브러리입니다. PyOutline으로 작업 사양을 작성하고 종속 항목을 정의할 수 있습니다. CueSubmit에서 이 모듈을 내부적으로 호출하므로 이 가이드에서는 이 모듈과 직접 상호작용하지 않습니다.
  • CueAdmin - PyCue python API를 사용하여 OpenCue를 관리하는 명령줄 도구입니다.

OpenCue 프로그램 아키텍처

다음 아키텍처 다이어그램은 OpenCue 모듈의 연결 및 통신을 보여줍니다.

OpenCue 아키텍처 다이어그램

이 가이드에서 사용되는 Google Cloud 리소스

다음 아키텍처 다이어그램은 이 가이드를 완료하는 데 필요한 Google Cloud 리소스를 보여줍니다.

이 가이드를 완료하는 데 필요한 Google Cloud 리소스

OpenCue 저장소 다운로드

OpenCue의 공식 저장소는 GitHub에 호스팅됩니다.

  • 이 가이드에서 사용할 작업공간 및 디렉토리로 이동하고 OpenCue 저장소를 다운로드합니다.

    cd ~/
    git clone --branch 0.3.6 https://github.com/AcademySoftwareFoundation/OpenCue
    

Cloud Storage 버킷 생성 및 가이드 파일 입력

이 가이드에서는 Cloud Storage 버킷을 사용하여 모든 애니메이션 장면 파일, 기타 입력 파일 종속 항목, 최종 렌더링 출력, 렌더링 호스트 로그 파일을 저장합니다.

이후 단계에서는 Cloud Storage FUSE(gcsfuse)를 설치 및 사용합니다. 이 도구는 Linux 렌더링 호스트와 로컬 머신에 Cloud Storage 버킷을 파일 시스템으로 마운트하는 데 사용되는 오픈소스 FUSE 어댑터입니다. gcsfuse는 이 워크플로에 저렴하고 효과적인 스토리지 옵션을 제공합니다. 그러나 개별 작업을 특정 요구사항에 최적화된 스토리지 프로필과 일치시키면 일부 작업의 성능을 크게 향상시킬 수 있습니다. Google Cloud에는 다양한 스토리지 옵션이 있습니다. 하지만 이 문서에서는 각 워크플로의 장단점을 설명하지 않습니다. 스토리지 옵션에 대한 자세한 내용은 하이브리드 렌더링 작업장 구축을 참조하거나 Google Cloud 담당자에게 문의하여 요구사항에 맞게 스토리지 옵션을 맞춤설정하세요.

Cloud Storage 버킷 만들기

버킷을 만들기 전에 먼저 프로젝트가 올바른지 확인합니다.

  • 가이드 데이터를 저장할 Cloud Storage 버킷 [YOUR_BUCKET_NAME]을 만듭니다.

    gcloud config set project [YOUR_PROJECT_ID]
        gsutil mb -l us-central1 gs://[YOUR_BUCKET_NAME]
    

    gsutil 명령어는 us-central1 리전에서 리소스 만들기를 참조합니다.

가이드 데이터를 버킷에 동기화

Cloud Storage 버킷에 포함된 이 가이드의 데이터는 약 950MB입니다. gsutil rsync를 사용하면 이 데이터를 로컬 머신에 다운로드하지 않고도 소스의 데이터를 대상 버킷에 동기화할 수 있습니다. 여기서는 -r 플래그를 사용하여 하위 디렉터리를 재귀적으로 복사하고 -m 플래그를 사용하여 병렬 동기화를 실행합니다. 이 플래그는 여러 파일을 다룰 때 유용합니다.

  1. Cloud Storage 버킷 이름의 환경 변수를 만듭니다.

    export YOUR_BUCKET=[YOUR_BUCKET_NAME]
    
  2. 예제 데이터를 버킷에 동기화합니다.

    gsutil -m rsync -r gs://cloud-solutions-group-opencue gs://$YOUR_BUCKET
    

예제 데이터베이스 스키마 및 데이터 업로드

데이터베이스 스키마 및 예시 데모 데이터를 업로드하여 데이터베이스 테이블에 입력합니다.

  1. 로컬 OpenCue 디렉터리에서 Cloud Storage 가이드 버킷으로 V1__Initial_schema.sql, V2__Add_limit_table.sql, V3__increase_show_length.sql 파일을 복사합니다.

    gsutil cp ~/OpenCue/cuebot/src/main/resources/conf/ddl/postgres/migrations/* gs://$YOUR_BUCKET/database/
    
  2. 로컬 OpenCue 디렉터리에서 Cloud Storage 가이드 버킷으로 demo_data.sql 파일을 복사합니다.

    gsutil cp ~/OpenCue/cuebot/src/main/resources/conf/ddl/postgres/demo_data.sql gs://$YOUR_BUCKET/database/
    

데이터베이스 배포

OpenCue의 Cuebot 모듈은 프로그램의 상태 데이터를 PostgreSQL 데이터베이스에 저장합니다. 이 가이드에서는 우선 Cuebot 역할을 수행하는 VM에 외부 IP를 예약합니다. 그런 다음 Cloud SQL 인스턴스를 프로비저닝 및 구성하고, Cuebot IP 주소를 허용하여 네트워크 연결을 설정하고, 마지막으로 데이터베이스에 스키마 및 데모 데이터를 입력합니다.

Cuebot에 정적 외부 IP 주소 예약

Cuebot용 데이터베이스 또는 VM을 만들기 전에 Cuebot VM에 이러한 두 리소스 간의 네트워크 통신에 사용될 고정 외부 IP를 예약합니다.

  1. Cloud Console에서 고정 주소 예약 페이지로 이동합니다.

    고정 주소 예약 페이지로 이동

  2. 새 주소 이름을 선택합니다(예: cuebotstaticip).

  3. 네트워크 서비스 등급프리미엄을 지정합니다.

  4. IP 버전IPv4를 지정합니다.

  5. 유형에서 리전을 선택합니다.

  6. us-central1 리전을 선택합니다.

  7. 연결 대상없음으로 둡니다.

  8. 예약을 클릭하여 IP를 예약합니다.

리소스가 생성된 후 외부 IP 주소 페이지로 리디렉션됩니다. 이 주소를 [RESERVED_STATIC_IP_ADDRESS]로 참조합니다.

Cloud SQL 인스턴스 만들기

다양한 옵션으로 PostgreSQL 데이터베이스를 만들 수 있습니다. 이 가이드에서 사용하는 Cloud SQL은 Google Cloud에서 쉽게 설정할 수 있는 완전 관리형 데이터베이스를 제공합니다. 이 인스턴스는 빠른 읽기 및 쓰기를 위해 SSD를 사용하지만 초기 스토리지 용량이 적고 vCPU가 1개, RAM이 3.75GB로 제한됩니다. 대규모 배포를 위해 OpenCue를 확장하려면 우선 이 리소스부터 확장해야 하며, 배포 규모에 맞게 Cloud SQL의 규모를 조정할 수 있습니다.

  1. Cloud Console의 Cloud SQL 인스턴스 페이지로 이동합니다.

    Cloud SQL 인스턴스 페이지로 이동

  2. 프로젝트를 선택하고 계속을 클릭합니다.

  3. 인스턴스 만들기를 클릭합니다.

  4. PostgreSQL을 클릭합니다.

  5. 인스턴스 ID(예: opencuedatabase)를 입력합니다.

  6. 기본 postgres 사용자의 비밀번호를 입력합니다. Cuebot을 만들 때 이 비밀번호를 [DATABASEPASSWORD]로 참조합니다.

  7. 리전us-central1로, 영역us-central1-a로 설정합니다.

  8. 연결 옵션을 구성합니다.

    1. 구성 옵션 표시를 열고 연결을 선택합니다.
    2. 공개 IP, +네트워크 추가를 선택합니다.
    3. 네트워크[RESERVED_STATIC_IP_ADDRESS]를 입력합니다.
    4. 만들기를 클릭합니다.

    인스턴스 목록으로 돌아갑니다. 새 인스턴스가 초기화 및 시작되는 동안 흐리게 표시됩니다.

Cloud SQL 데이터베이스 만들기

  1. Cloud SQL 리소스의 인스턴스 세부정보 페이지에서 데이터베이스를 선택합니다.
  2. 데이터베이스 만들기를 선택합니다.
  3. 데이터베이스 이름cuebot으로 설정합니다.
  4. 만들기를 클릭합니다.
  5. 데이터베이스 스키마 및 데모 데이터를 가져옵니다.

    1. 가져오기를 선택합니다.
    2. Cloud Storage 파일 줄에서 찾아보기를 클릭합니다.
    3. 업로드한 [YOUR_BUCKET_NAME] 저장소 버킷으로 이동하고 다음 파일을 선택하여 데이터베이스의 스키마를 가져옵니다.

      gs://[YOUR_BUCKET_NAME]/database/V1__Initial_schema.sql
      
    4. 가져오기 형식SQL로 설정합니다.

    5. 데이터베이스에서 cuebot을 선택합니다.

    6. 고급 옵션 표시를 선택합니다.

    7. 사용자에서 postgres 사용자를 선택합니다.

    8. 가져오기를 클릭합니다.

    가져오기가 완료되면 Cloud SQL 인스턴스 세부정보 페이지로 리디렉션됩니다.

    위 단계를 반복하여 다음 파일에서 데모 데이터를 가져옵니다.

    gs://[YOUR_BUCKET_NAME]/database/V2__Add_limit_table.sql
    gs://[YOUR_BUCKET_NAME]/database/V3__increase_show_length.sql
    gs://[YOUR_BUCKET_NAME]/database/demo_data.sql
    

가져오기가 완료되면 Cloud SQL 인스턴스 세부정보 페이지로 리디렉션됩니다. Cloud SQL IP 주소를 기록합니다. 이 주소는 이후 단계에서 Cuebot을 구성할 때 필요하며 [CLOUD_SQL_IP_ADDRESS]로 참조됩니다.

배포할 Cuebot Docker 이미지 준비

이 가이드에서는 단일 Compute Engine VM에 Cuebot을 Docker 컨테이너로 배포합니다. 우선 로컬에서 OpenCue 저장소로부터 Cuebot Docker 이미지를 빌드하고 Container Registry에 푸시합니다. Container Registry는 이 가이드에서 Docker 이미지를 저장하는 데 사용하는 Google Cloud의 비공개 Docker 이미지 저장소입니다. 이 워크플로에 대한 자세한 내용은 Compute Engine 문서를 참조하세요.

이미지 만들기

  1. OpenCue 저장소의 루트 수준에 있는지 확인합니다.

    cd ~/OpenCue
    
  2. TAG_NAME이라는 변수와 PROJECT_NAME이라는 변수를 만들고 Docker를 사용하여 이 추적용 태그와 함께 이미지를 만듭니다. 빌드 단계에 gcr.io/[PROJECT_NAME]을 포함하면 나중에 Container Registry와 동기화하도록 태그를 사용 설정할 수 있습니다.

    export TAG_NAME=demo
    export PROJECT_NAME=[PROJECT_NAME]
    docker build -t gcr.io/$PROJECT_NAME/opencue/cuebot:$TAG_NAME -f cuebot/Dockerfile .
    

이미지를 Container Registry와 동기화

Docker에서 Container Registry에 이미지를 업로드할 수 있도록 gcloud 도구를 승인합니다. 그런 다음 Cuebot Docker 이미지를 Container Registry와 동기화합니다.

  1. 다음 명령어를 실행하여 gcloud 도구와 Docker 동기화를 승인합니다.

    gcloud auth configure-docker
    
  2. 다음 프롬프트에서 y를 입력하고 Enter 키를 누릅니다.

    Do you want to continue (Y/n)?
  3. 로컬 저장소의 Cuebot Docker 이미지를 Container Registry에 푸시합니다.

    docker push gcr.io/$PROJECT_NAME/opencue/cuebot:$TAG_NAME
    

잠시 후 업로드가 끝나고 동기화가 완료됩니다.

Cuebot VM 구성 및 프로비저닝

콘솔을 사용하여 Container-Optimized OS로 VM을 프로비저닝하고, 컨테이너 설정을 구성하고, 데이터베이스 연결을 만들고, 예약된 외부 정적 IP 주소를 연결합니다.

  1. VM 인스턴스 페이지로 이동합니다.

    VM 인스턴스 페이지로 이동

  2. 인스턴스 만들기 버튼을 클릭하여 새 인스턴스를 만듭니다.

  3. 인스턴스 이름을 cuebot으로 지정합니다.

  4. 리전us-central1로, 영역us-central1-a로 설정합니다.

  5. 머신 유형에서 맞춤설정을 선택하고 머신 유형을 1 vCPU 6.5GB로 구성합니다.

  6. 컨테이너 설정을 구성합니다.

    1. 컨테이너 섹션에서 컨테이너 이미지 배포를 선택합니다.
    2. [PROJECT_NAME]을 업데이트하고 다음 컨테이너 이미지를 지정합니다.

      gcr.io/[PROJECT_NAME]/opencue/cuebot:demo

    3. 고급 컨테이너 옵션을 펼칩니다.

    4. 명령어 인수에서 + 인수 추가를 세 번 클릭하여 인수를 세 개 추가합니다.

    5. 다음 명령어 인수를 입력합니다. 여기서 [CLOUD_SQL_IP_ADDRESS][DATABASEPASSWORD]를 해당 값으로 바꿉니다.

      --datasource.cue-data-source.jdbc-url=jdbc:postgresql://[CLOUD_SQL_IP_ADDRESS]/cuebot
      --datasource.cue-data-source.username=postgres
      --datasource.cue-data-source.password=[DATABASEPASSWORD]
      

      각 항목의 의미는 다음과 같습니다.

      명령어 인수 설명 및 필요한 입력
      --datasource.cue-data-source.jdbc-url=jdbc:postgresql://[CLOUD_SQL_IP_ADDRESS]/cuebot Cuebot에서 데이터베이스로의 통신을 사용 설정합니다. 입력은 [CLOUD_SQL_IP_ADDRESS]/[DATABASE_NAME]입니다. 이전 단계에서 데이터베이스 이름으로 사용한 cuebot을 여기에 입력합니다.
      --datasource.cue-data-source.username=postgres 연결 시 Cuebot에 데이터베이스 사용자 이름이 필요합니다. 설정 중에 사용한 기본 사용자 이름인 postgres를 여기에 입력합니다. 프로덕션에서는 보안 권장사항에 따라 구체적인 권한을 갖는 새 사용자를 만드는 것이 좋습니다.
      --datasource.cue-data-source.password=[DATABASEPASSWORD] 연결 시 Cuebot에 데이터베이스 비밀번호가 필요합니다. 여기에 [DATABASEPASSWORD]를 입력합니다.
  7. 네트워크 설정을 구성합니다.

    1. 네트워킹에서 네트워크 인터페이스를 선택합니다.
    2. 외부 IP를 클릭하고 앞에서 Cuebot용으로 만든 예약된 외부 IP 주소인 cuebotstaticip를 선택합니다.
    3. 완료를 클릭합니다.
    4. 나머지 설정은 기본값으로 둡니다.
    5. 만들기를 클릭합니다.

잠시 후에 VM이 시작됩니다. 인스턴스 템플릿을 만들 때 필요하므로 내부 IP 주소를 기록해 둡니다. 이 주소를 이후에 [CUEBOT_INTERNAL_IP_ADDRESS]로 참조합니다.

렌더링 호스트 만들기

렌더링 호스트를 구성하는 여러 VM은 관리형 인스턴스 그룹(MIG)으로 실행되므로 리소스의 위치와 규모를 제어할 수 있습니다. MIG는 인스턴스 템플릿을 사용하여 머신 유형을 결정하고, 서비스 계정 관리를 지원하며 컨테이너 이미지를 배포하고, 컨테이너 설정 및 환경 변수를 구성합니다.

컨테이너 이미지는 가이드의 렌더링 작업을 실행하는 데 필요한 여러 종속 항목과 소프트웨어 패키지를 구성하는 데 사용됩니다. 프로젝트의 컨테이너 이미지를 구성하려면 Docker를 사용하여 기본 렌더링 호스트 이미지를 만들고 로컬 저장소에 저장합니다. Container Registry에 배포하기 전에 가이드 저장소에서 태스크별 소프트웨어와 Google Cloud 설정을 추가하여 이 기본 이미지를 맞춤설정할 수 있습니다.

기본 렌더링 호스트 이미지 만들기

  • 로컬 셸에서 기본 렌더링 호스트 이미지를 만듭니다.

    cd ~/OpenCue
    export TAG_NAME=demo
    docker build -t opencue/rqd:$TAG_NAME -f rqd/Dockerfile .
    

Blender 이미지 구성

렌더링 호스트 Blender 이미지를 만드는 데 필요한 Dockerfile 및 관련 스크립트는 가이드 저장소에 있습니다. 이 섹션에서는 저장소를 다운로드하고 프로젝트에 적합하도록 몇 가지 설정을 업데이트합니다.

  1. 이 가이드에서 사용하는 디렉터리와 작업공간으로 이동하고 가이드 저장소를 다운로드합니다.

    cd ~
    git clone https://github.com/GoogleCloudPlatform/python-opencue-demo.git
    
  2. 렌더링 호스트가 시작되면 이 저장소의 rqd_startup.sh 스크립트가 gcsfuse를 호출하여 가이드 버킷을 /shots 경로에 파일 시스템으로 마운트합니다. 텍스트 편집기에서 Dockerfile을 열고 GCS_FUSE_BUCKET 변수를 업데이트하여 가이드 버킷을 가리킵니다.

    1. 셸에서 다음 파일을 저장소 루트로 복사합니다.

      cp ~/python-opencue-demo/third_party/Dockerfile ~/python-opencue-demo/Dockerfile
      
    2. 원하는 텍스트 편집기에서 파일을 수정합니다.

      ~/python-opencue-demo/Dockerfile
      
    3. 다음 줄에서 [YOUR_BUCKET_NAME]을 버킷 이름으로 업데이트합니다.

      ENV GCS_FUSE_BUCKET [YOUR_BUCKET_NAME]
      
    4. 파일을 저장하고 텍스트 편집기를 종료합니다.

이미지를 빌드하여 Container Registry에 푸시

  1. 이미지를 빌드합니다.

    cd ~/python-opencue-demo
    docker build -t gcr.io/$PROJECT_NAME/opencue/rqd-blender:$TAG_NAME .
    
  2. 빌드가 끝나면 이미지를 Container Registry에 푸시합니다.

    docker push gcr.io/$PROJECT_NAME/opencue/rqd-blender:$TAG_NAME
    

렌더링 호스트 배포

렌더링 호스트는 렌더링 시 읽기 및 쓰기 권한이 있어야 합니다. 액세스 권한을 부여하려면 최소 권한의 보안 원칙을 사용하여 서비스 계정을 만듭니다. VM을 프로비저닝할 때 이 계정을 ID 및 API 액세스에 사용합니다.

서비스 계정 만들기

  1. Cloud Console에서 서비스 계정 페이지로 이동합니다.

    서비스 계정 페이지로 이동

  2. 프로젝트 선택을 클릭합니다.

  3. 프로젝트를 선택하고 열기를 클릭합니다.

  4. + 서비스 계정 만들기를 클릭합니다.

  5. [SERVICE_ACCOUNT_NAME](예: storageservice)을 입력하고 만들기를 클릭합니다.

  6. 서비스 계정에 스토리지 객체 관리자 역할을 선택하고 계속을 클릭합니다.

  7. 완료를 클릭합니다.

인스턴스 템플릿 만들기

rqd-blender Docker 이미지를 사용하여 인스턴스 템플릿을 만들고 VM 크기와 설정을 지정합니다.

  1. Cloud Console에서 인스턴스 템플릿 페이지로 이동합니다.

    인스턴스 템플릿 페이지로 이동

  2. 인스턴스 템플릿 만들기를 클릭합니다.

  3. 인스턴스 템플릿에 이름을 지정합니다(예: rqd-blender).

  4. 머신 유형으로 n1-highmem-2를 선택합니다.

  5. 컨테이너 설정을 구성합니다.

  6. 컨테이너 섹션에서 이 VM 인스턴스에 컨테이너 이미지를 배포합니다 체크박스를 선택합니다.

  7. [PROJECT_NAME]을 업데이트하고 컨테이너 이미지에 다음을 지정합니다.

    gcr.io/[PROJECT_NAME]/opencue/rqd-blender:demo
    
  8. 시스템 기기에 대한 액세스를 허용하여 시작 시 RQD-blender 인스턴스를 Cuebot에 등록합니다.

    1. 고급 컨테이너 옵션을 클릭합니다.
    2. 권한 모드로 실행을 선택합니다.
    3. 환경 변수에서 + 변수 추가를 클릭하고 이름CUEBOT_HOSTNAME으로, [CUEBOT_INTERNAL_IP_ADDRESS]로 설정합니다. 이 변수는 앞에서 프로비저닝한 Cuebot VM의 내부 IP 주소를 참조합니다.
  9. 서비스 계정을 구성합니다.

    1. 서비스 계정 섹션에서 앞에서 만든 [SERVICE_ACCOUNT_NAME]을 선택합니다.
    2. 나머지 설정은 기본값으로 둡니다.
    3. 만들기를 클릭합니다.

관리형 인스턴스 그룹 만들기

인스턴스 템플릿을 사용하여 VM 위치, 인스턴스 수, 자동 확장 설정을 결정하는 관리형 인스턴스 그룹을 만듭니다.

  1. Cloud Console에서 인스턴스 그룹 페이지로 이동합니다.

    인스턴스 그룹 페이지로 이동

  2. 인스턴스 그룹 만들기를 클릭합니다.

  3. 관리형 인스턴스 그룹의 이름을 입력합니다(예: rqd-blender-mig).

  4. 단일 영역을 선택하고 us-central1 리전, us-central1-a 영역을 선택합니다.

  5. 그룹 유형에서 관리형 인스턴스 그룹을 선택합니다.

  6. 인스턴스 템플릿에서 인스턴스 템플릿(예: rqd-blender)을 선택합니다.

  7. 자동 확장사용 안함으로 설정합니다.

  8. 인스턴스 수3으로 지정합니다.

  9. 만들기를 클릭합니다.

로컬 워크스테이션 구성

Cuebot이 이제 Google Cloud에서 실행되고 렌더링 호스트 및 작업 큐를 관리할 수 있습니다. 태스크 제출 및 관리에 사용할 시각적 인터페이스를 사용 설정하려면 CueSubmit 및 CueGUI를 실행하도록 로컬 워크스테이션을 구성한 후 로컬 호스트에서 Google Cloud로 연결합니다.

디렉터리 만들기 및 버킷 마운트 지점 권한 설정

  • Cloud Storage 버킷의 마운트 지점을 만들고 권한을 읽기 및 쓰기로 설정합니다.

    sudo mkdir /shots
    sudo chmod 777 /shots
    sudo chown $USER /shots
    

    입력 애니메이션 장면 파일의 경우 이러한 경로는 로컬 워크스테이션 및 렌더링 호스트에 마운트될 때 /shots/robotdanceparty/sh_05/sh_05_lores.blend와 비슷하게 해석됩니다.

가이드 버킷 마운트

  • 로컬 머신에서 가이드 버킷을 /shots 경로에 파일 시스템으로 마운트하도록 gcsfuse에 지시합니다. 이때 객체를 디렉터리에 매핑하는 데 도움이 되도록 --implicit-dirs 플래그를 사용합니다.

    gcsfuse --implicit-dirs $YOUR_BUCKET /shots
    

    SSH 전달 설정

이 가이드에서는 로컬 워크스테이션과 Google Cloud 간의 보안 통신을 위해 SSH 전달을 사용합니다. 다음 명령어는 OpenCue 인터페이스와 Cuebot 간의 호출을 전달하는 포트를 개방합니다.

  1. 셸을 새로 열고 SSH 프로세스용으로 예약합니다.
  2. [YOUR_PROJECT_ID]를 업데이트하고 다음 명령어를 실행합니다.

    export CUEBOT_INSTANCE_NAME=cuebot
    export PROJECTID=[YOUR_PROJECT_ID]
    export ZONE=us-central1-a
    gcloud compute ssh $CUEBOT_INSTANCE_NAME --project $PROJECTID --zone $ZONE -- -N -L 8443:127.0.0.1:8443
    

가상 환경 초기화

  1. 셸 창을 새로 열고 CueGUI 및 CueSubmit용으로 예약합니다.
  2. 설치하기 전에 virtualenv를 실행하여 환경을 격리합니다.

    cd ~/OpenCue
    virtualenv --python python2 venv
    

    virtualenv에 대해 자세히 알아보세요.

  3. 가상 환경을 제공하고 pip를 사용하여 종속 항목을 설치합니다.

    source venv/bin/activate
    pip install -r requirements.txt
    

    cat requirements.txt를 실행하면 설치된 종속 항목의 목록을 확인할 수 있습니다.

  4. CueGUI 또는 CueSubmit을 시작하기 전에 배포에 필요한 변수를 정의합니다.

    export OPENCUE_ROOT=~/OpenCue
    export CUEBOT_HOSTS=localhost
    export PYTHONPATH=$OPENCUE_ROOT/pyoutline/:$OPENCUE_ROOT/pycue/:$OPENCUE_ROOT/cuesubmit/:$OPENCUE_ROOT/cuegui/
    
    환경 변수 설명
    CUEBOT_HOSTS=localhost PyCue가 Cuebot 인스턴스에 연결하는 방법을 참조합니다. SSH 전달을 사용하는 경우 localhost로 정의됩니다. VPN 또는 Dedicated Interconnect를 사용하는 경우 Cuebot IP 주소를 입력합니다.
    PYTHONPATH=$OPENCUE_ROOT OpenCue 라이브러리에 대한 Python 경로를 정의합니다.

gRPC proto 컴파일

OpenCue는 gRPC를 통신 프로토콜로 사용하여 서버와 클라이언트 간에 메시지를 전송합니다. gRPC 서비스는 언어 중립적 .proto 파일에서 프로토콜 버퍼를 사용하여 정의됩니다. OpenCue의 Python 라이브러리에서 gRPC를 사용하여 통신하려면 다음을 수행합니다.

  • 다음 명령어로 .proto 정의 파일을 Python에서 읽을 수 있는 파일로 컴파일합니다.

    cd ~/OpenCue/proto
    python -m grpc_tools.protoc -I=. --python_out=$OPENCUE_ROOT/pycue/opencue/compiled_proto --grpc_python_out=$OPENCUE_ROOT/pycue/opencue/compiled_proto ./*.proto
    

인터페이스 실행

다음 단계에서는 CueSubmit으로 작업을 제출하여 OpenCue를 살펴보고 CueGUI로 작업 및 렌더링 호스트 설정을 알아봅니다. 이러한 두 가지 도구는 동일한 환경을 사용하므로 가상 환경 셸에서 각 프로세스를 백그라운드로 실행합니다.

CueSubmit 실행

  • 작업을 제출할 수 있도록 VM 환경 셸에서 CueSubmit을 실행합니다.

    cd ~/OpenCue
    python cuesubmit/cuesubmit &
    

작업 제출

CueSubmit 인터페이스를 사용하여 다음 변수를 입력합니다.

  1. Job Name(작업 이름)을 입력합니다(예: yourjobname).
  2. Shot(샷)을 입력합니다(예: sh_05).
  3. Layer Name(레이어 이름)을 입력합니다.(예: render)
  4. Command to Run(실행할 명령어)에 다음을 입력합니다.

    /usr/local/blender/blender -b -noaudio /shots/robotdanceparty/sh_05/sh_05_lores.blend -o /shots/renderimages/sh_05.lores.##### -F JPEG -f #IFRAME#
    
  5. Frame Spec(프레임 사양)600-700을 입력합니다.

  6. Job Type(작업 유형)Shell로 설정합니다.

  7. Services(서비스)shell로 설정합니다.

  8. 나머지는 기본값으로 두고 Submit(제출)을 클릭합니다.

    창이 열리고 'Submitted Job to OpenCue(OpenCue에 작업이 제출되었습니다).'가 표시됩니다. 이 창에 표시되는 작업 ID와 작업 이름으로 작업의 렌더링 상태를 추적할 수 있습니다.

    다음은 렌더링의 명령줄 옵션입니다.

    명령줄 옵션 설명
    /usr/local/blender/blender blender 실행 파일의 경로입니다.
    -b 인터페이스 없이 렌더러를 실행하는 플래그입니다.
    -noaudio 렌더러가 오디오 라이브러리를 로드하지 않도록 하는 플래그입니다.
    /shots/robotdanceparty/sh_05/sh_05_lores.blend 렌더링할 장면 파일에 대한 경로입니다.
    -o /shots/renderimages/sh_05.lores.##### 출력 경로, 이름, 프레임 패딩을 정의합니다. #####은 프레임 650을 디스크에 sh_05.00650.jpg로 기록합니다.
    -F JPEG 출력 파일 유형을 JPEG로 정의합니다.
    -f #IFRAME# 렌더링 시 프레임 번호를 정의하며 OpenCue로 국한됩니다. <Frame Spec>은 이 변수와 상호작용하므로 여기에 있는 그대로 입력합니다.

    Blender 명령줄 렌더링에 대한 자세한 내용은 Blender 문서를 참조하세요.

    Submitted job 창

    변수 설명
    Job Name(작업 이름) 시작 시 선택하는 임의 변수입니다. 대부분의 시설에서는 일관성 있게 작업을 추적할 수 있도록 특정한 이름 지정 규칙을 따릅니다.
    User Name(사용자 이름) OpenCue에서 입력합니다. CueSubmit을 시작하는 사용자로 등록됩니다.
    Show(쇼) OpenCue는 시작 시 testing이라는 기본 쇼를 만듭니다. 대부분의 시설에서는 이 맥락에서 개별 영화 프로젝트나 광고물을 '쇼'라고 호칭합니다. 쇼를 추가하거나 수정하려는 경우 CueAdmin 명령줄 도구를 사용하는 것이 좋습니다.
    Shot(샷) 중단 없이 재생되는 프레임 시리즈 중 하나입니다. 영화 세트에서 샷이란 '액션'과 '컷' 사이의 시간입니다. 일반적으로 시퀀스에 속한 개별 샷이나 사전 제작 중의 애셋 로테이션에 사용됩니다.
    Layer(레이어) 제출 및 프레임 범위에 속하는 개별 명령어입니다. 이 예에서는 작업에서 render라는 단일 레이어를 실행합니다.
    Command to Run(실행할 명령어) 레이어에서 실행할 명령어입니다. 여기에서는 Blender 명령줄 렌더링을 실행합니다.
    Frame Spec(프레임 사양) 처리할 프레임입니다. 여기에서는 애니메이션의 프레임 600~700을 렌더링합니다. Frame Spec(프레임 사양) 상자를 커서로 가리키면 프레임 진행, 임의 프레임 입력 등의 추가 옵션이 표시됩니다.
    Job Type(작업 유형) 작업에서 이 레이어에 사용되는 소프트웨어 패키지를 정의하는 데 사용됩니다. 정의한 명령어는 셸 스크립트로 해석되므로 Shell을 입력합니다.
    Service(서비스) 최소 RAM, 사용자 정의 리소스 등의 요구사항 목록입니다. 여기에서는 작업에 셸 이외의 특별한 요구사항이 없으므로 Shell을 선택합니다.
    Submission Details(제출 세부정보) 설정을 결합한 결과입니다.

CueGUI 개요

CueGUI는 각각 렌더링 작업장의 서로 다른 부분에 중점을 둔 여러 UI 모듈의 중앙 인터페이스입니다. 다음은 작업 및 렌더링 호스트를 모니터링하는 데 사용하는 일반적인 용어, 설명, 관련 모듈입니다. CueSubmit과 CueGui를 시각적으로 자세히 둘러보려면 이 안내 동영상을 시청하세요.

용어 설명 관련 CueGUI 모듈
작업 OpenCue에 대한 개별 제출입니다. Monitor Jobs(작업 모니터링)
Attributes(속성)
레이어 제출 및 프레임 범위에 속하는 개별 명령어입니다. 이 예시에서는 작업에 render라는 단일 레이어를 실행합니다. Monitor Job Details(작업 세부정보 모니터링)
Attributes(속성)
렌더링 호스트 작업을 처리하는 데 사용되는 개별 렌더링 리소스입니다. Monitor Job Details(작업 세부정보 모니터링)
Monitor Hosts(호스트 모니터링)
LogView(로그 뷰)
Attributes(속성)
로그 렌더링 호스트가 디스크에 기록하는 로그 파일을 파싱하여 문제 해결 또는 성능 측정항목을 위한 정보를 추출할 수 있습니다. Monitor Job Details(작업 세부정보 모니터링)
LogView(로그 뷰)
속성 OpenCue 제출 또는 리소스에 대한 세부정보의 목록입니다. Attribute(속성) 창은 작업, 레이어 또는 렌더링 호스트에 대한 세부정보를 로드할 수 있습니다. Monitor Jobs(작업 모니터링)
Monitor Job Details(작업 세부정보 모니터링)
Monitor Hosts(호스트 모니터링)
Attributes(속성)
태그 호스트 또는 레이어에 카테고리를 추가하여 특정 작업에 연관짓는 수단입니다. 호스트 태그는 각 렌더링 호스트에서 사용할 수 있는 리소스에 추가하고 레이어 태그는 해당 레이어를 처리하는 데 필요한 리소스에 추가합니다. Monitor Job Details(작업 세부정보 모니터링)
Monitor Hosts(호스트 모니터링)
Attributes(속성)
레이어 태그 레이어를 처리하는 데 필요한 요구사항을 정의하는 태그입니다. 예를 들어 레이어에 GPU가 필요한 경우 레이어에 GPU 태그를 추가합니다. Monitor Job Details(작업 세부정보 모니터링)
Monitor Hosts(호스트 모니터링)
Attributes(속성)
호스트 태그 호스트에서 사용 가능한 리소스를 정의하는 태그입니다. 예를 들어 GPU가 설치된 호스트에 GPU 리소스를 추가할 수 있습니다.
호스트는 이러한 태그와 리소스 요구사항 목록이 일치하는 레이어를 선택하여 렌더링합니다.
Monitor Job Details(작업 세부정보 모니터링)
Monitor Hosts(호스트 모니터링)
Attributes(속성)

이 가이드에서는 OpenCue의 인터페이스와 개념 전체를 다루지는 않습니다. 자세한 내용은 문서를 참조하세요.

CueGUI 실행

  • 동일한 가상 환경 셸에서 CueGUI를 엽니다.

    cd ~/OpenCue
    python cuegui/cuegui &
    

Monitor Jobs 창 열기

  • CueCommander 창이 열리면 Views/Plug-ins(뷰/플러그인) > Cuetopia > Monitor Jobs(작업 모니터링)를 선택합니다.

Monitor Jobs 창 정보

Monitor Jobs(작업 모니터링) 창은 작업 수준에서 작동하므로 개략적인 상황을 파악할 수 있습니다.

OpenCue의 Monitor Jobs 창

[Your Job]을 포함하는 행에서 이 가이드와 관련된 다음과 같은 정보를 찾습니다.

  • Job(작업): 작업 이름이 여기에 나열됩니다.
  • State(상태): 이 작업은 선택되어 렌더링되는 중이므로 In Progress(진행 중) 상태입니다. 작업이 완료되면 State(상태)Finished(완료됨)로 변경됩니다. 작업에서 문제가 발생한 경우 State(상태)가 Failing(실패)으로 변경되고 문제 해결이 필요합니다. OpenCue의 렌더링 문제 해결에 대한 자세한 내용은 관련 문서를 참조하세요.
  • Done/Total(완료/합계): 작업 진행 상황의 개요를 제공합니다. 이미지에서는 작업의 101개 프레임 중 100개 프레임이 완료되었습니다.
  • Running(실행): 렌더링 호스트에서 현재 처리 중인 프레임 수를 알려줍니다. 이 이미지에서는 프레임 1개만 처리 중입니다.
  • Progress(진행): 작업의 진행 상황을 시각적으로 보여줍니다.

Monitor Jobs 창 살펴보기

  1. Monitor Jobs(작업 모니터링) 창에서 작업의 진행 상황을 모니터링합니다. 작업은 In Progress(진행 중) 상태여야 합니다. Failing(실패) 상태인 경우 문제 해결 섹션을 참조하세요.
  2. Progress(진행) 단어 위로 마우스를 가져갑니다. 유용한 도구 정보와 함께 설명 창이 표시됩니다.
  3. 행 제목 및 아이콘 위로 마우스를 가져가서 인터페이스를 살펴봅니다.
  4. [Your Job]을 선택합니다.

Monitor Job Details 창 열기

  1. Monitor Jobs Details(작업 세부정보 모니터링) 창을 열려면 Views/Plug-ins(뷰/플러그인) > Cuetopia > Monitor Job Details(작업 세부정보 모니터링)를 선택합니다.
  2. Monitor Jobs(작업 모니터링) 창에서 [Your Job]을 더블클릭하여 이 데이터를 Monitor Jobs Details(작업 세부정보 모니터링) 창에 로드합니다.

Monitor Job Details 창 정보

Monitor Job Details(작업 세부정보 모니터링) 창은 레이어 수준에서 작동하며 작업에 대한 자세한 정보를 포함합니다.

OpenCue의 Monitor Job Details 창

Monitor Job Details(작업 세부정보 모니터링) 모듈에는 창 두 개가 포함됩니다.

  • Layer(레이어) 창. 제목 표시줄에 [Your Job]이 있는 창에 레이어 이름이 표시됩니다.
  • Layer Info(레이어 정보) 창. 이 창에는 선택한 레이어의 각 프레임과 관련된 정보가 표시됩니다.

Layer(레이어) 창의 개요는 다음과 같습니다.

  • Layer(레이어): 작업에 render 레이어 하나가 있습니다. 작업에 여러 레이어가 있는 경우 여기에 나열되며 더블클릭하여 개별적으로 선택할 수 있습니다.
  • Avg(평균): 이 레이어의 프레임당 평균 렌더링 시간입니다.
  • Tags(태그): 레이어 수준 태그가 여기에 나열됩니다. 태그 설정은 이 가이드의 범위를 벗어나지만, 여기에서 레이어 수준 태그에 액세스할 수 있습니다.
  • Depend(종속): 레이어 종속 항목이 여기에 나열됩니다. 종속 항목 관리는 이 가이드의 범위를 벗어나지만, 이 프레임에서 레이어 수준 종속 항목에 액세스할 수 있습니다.

Layer Info(레이어 정보) 창의 개요는 다음과 같습니다.

  • Refresh(새로고침) 버튼: 이 버튼을 클릭하면 데이터베이스의 최신 정보가 인터페이스에 다시 로드됩니다.
  • Order(순서): 프레임은 임의의 순서로 렌더링될 수 있으므로 여기에 프레임 렌더링 순서가 나열됩니다. 예를 들어 매 10번째 프레임을 렌더링한 후 나머지를 렌더링하거나 역순으로 렌더링할 수 있습니다. 이 순서는 작업을 제출할 때 CueSubmit에 프레임 사양을 통해 지정됩니다.
  • Frame(프레임): 렌더링될 장면의 프레임 번호입니다.
  • Status(상태): 프레임의 상태입니다. 이미지에서는 프레임이 Succeeded(성공) 상태입니다.
  • Host(호스트): 프레임에 할당된 렌더링 호스트 IP 주소입니다.

Monitor Job Details 창 살펴보기

  1. Monitor Job Details(작업 세부정보 모니터링) 창에서 Refresh(새로고침)를 클릭하고 작업의 진행 상황을 살펴봅니다.
  2. Status(상태) 단어 위로 마우스를 가져가면 유용한 도구 정보와 함께 설명 창이 표시됩니다.
  3. 행 제목 및 아이콘 위로 마우스를 가져가서 인터페이스를 살펴봅니다.

LogView 창 열기

  • LogView 창을 열려면 Views/Plug-ins(뷰/플러그인) > Other(기타) > LogView를 선택합니다.

LogView 창 정보

LogView 창은 개별 프레임에 대한 로그의 간단한 미리보기를 제공합니다. 이 뷰에서 문제 해결, 이후 렌더링 단계를 위한 VM 크기 조정, 렌더링 최적화 등에 유용한 정보를 얻을 수 있습니다.

OpenCue의 Log View 창

로그 파일은 OpenCue에 고유한 데이터를 포함하는 헤더로 시작되며 이미지를 처리하는 소프트웨어의 출력이 뒤따라 나옵니다. 이 경우에는 OpenCue 구성 뒤에 Blender 로그 출력이 표시됩니다.

LogView 창 살펴보기

  1. Monitor Job Details(작업 세부정보 모니터링) 창의 Layer Info(레이어 정보) 창에서 SUCCEEDED(성공) 라벨이 있는 프레임을 선택하여 로그를 살펴봅니다.
  2. 실행 중인 명령어를 확인합니다.
  3. logDestination을 확인합니다.

LogView 창에 대한 자세한 내용은 OpenCue 문서를 참조하세요.

Monitor Hosts 창 열기

  • Monitor Hosts(호스트 모니터링) 창을 열려면 Views/Plug-ins(뷰/플러그인) > CueCommander > Monitor Hosts(호스트 모니터링)를 선택합니다.

Monitor Hosts 창 정보

Monitor Hosts(호스트 모니터링) 창은 개별 렌더링 호스트에 대한 정보를 제공하고 태그를 사용하여 리소스를 추가 또는 삭제하는 인터페이스 역할을 합니다.

OpenCue의 Monitor Hosts 창

이 가이드와 관련된 정보는 다음과 같습니다.

  • Auto-refresh(자동 새로고침) 체크박스: 이 체크박스를 선택하면 호스트 모니터링 창이 다시 로드됩니다.
  • Refresh(새로고침): 이 버튼을 클릭하면 Monitor Hosts(호스트 모니터링) 창이 다시 로드됩니다.
  • IP address(IP 주소): IP 주소를 사용하면 OpenCue와 Google Cloud 사이에서 VM을 쉽게 추적할 수 있습니다.
  • Load(부하) %: 호스트의 부하 평균으로, 머신 사용량을 잘 보여주는 지표입니다.
  • Mem(메모리): 호스트 메모리 할당입니다.
  • Tags(태그): 호스트에 등록된 리소스입니다.

Monitor Hosts 창 살펴보기

  1. Refresh(새로고침)를 클릭하거나 Auto-refresh(자동 새로고침) 체크박스를 선택합니다.
  2. IP Address(IP 주소)를 클릭하여 렌더링 호스트를 선택합니다.
  3. 렌더링 호스트를 마우스 오른쪽 버튼으로 클릭하여 Delete Host(호스트 삭제), Add or Remove Tags(태그 추가 또는 삭제) 등의 추가 옵션을 표시합니다.

    태그를 사용한 리소스 관리에 대한 자세한 내용은 문서를 참조하세요.

  4. 호스트를 더블클릭하여 속성을 확인합니다.

  5. alloclocal.general로 설정되어 있습니다.

  6. 태그가 general 및 호스트의 IP 주소인 것을 확인합니다.

Attributes 창 열기

  • Views/Plug-ins(뷰/플러그인) > Other(기타) > Attributes(속성)를 선택합니다.

Attributes 창 정보

Attributes(속성) 창은 렌더링 호스트, 레이어 또는 작업의 세부정보 목록을 제공합니다. 각각의 예시는 다음과 같습니다.

OpenCue의 Attributes 창

각 창에는 호스트, 레이어 또는 작업과 관련된 정보가 포함됩니다. Job Attributes(작업 속성)facility local 태그와 Layer Attributes(레이어 속성)general 태그는 이 제출의 핵심 요구사항 지표입니다. 이 작업의 프레임은 이러한 두 태그가 모두 할당된 렌더링 호스트만 선택합니다. Host Attributes(호스트 속성)alloctags 줄에서 이러한 태그가 할당된 것을 확인할 수 있습니다.

Attributes 창 살펴보기

  1. Monitor Hosts(호스트 모니터링) 창에서 렌더링 호스트의 IP address(IP 주소)를 클릭하여 속성을 로드합니다.
  2. Attributes(속성) 창에서 alloctags 설정을 확인합니다.
  3. Monitor Job Details(작업 세부정보 모니터링) 창에서 Succeeded(성공) 프레임을 클릭하여 속성을 로드합니다.
  4. Attributes(속성) 창에서 minMemorytags 설정을 살펴봅니다.
  5. Monitor Jobs(작업 모니터링) 창에서 작업을 클릭합니다.
  6. Attributes(속성) 창에서 facilityminCores 설정을 살펴봅니다.

더 자세한 내용은 CueGUI 참조에서 확인하세요.

렌더링된 프레임 확인

여러 가지 방법으로 렌더링 중인 프레임을 확인하거나 완료 후 로컬에 복사할 수 있습니다. 이 가이드에서는 애니메이션 미리보기 도구의 설치를 다루지 않습니다. 하지만 Cloud Console을 사용하여 개별 프레임을 미리 보거나 로컬에 다운로드하여 원하는 이미지 보기 애플리케이션으로 확인할 수 있습니다.

  1. Cloud Console에서 버킷의 객체 목록을 확인하거나 브라우저에서 미리보기 이미지를 확인합니다.

    Cloud Storage 페이지로 이동

  2. [YOUR_BUCKET_NAME]을 클릭한 후 renderimages를 클릭하여 프레임 목록을 확인합니다.

  3. 이미지(예: sh_05_lores.00650.jpg)를 클릭하여 브라우저 창에 미리보기를 표시합니다.

  4. 로컬 셸을 사용하여 출력 디렉터리의 이미지를 나열합니다.

      ls /shots/renderimages
    

    파일을 로컬에 복사하거나 원하는 보기 도구에서 파일을 열 수도 있습니다.

  5. gsutil을 사용하여 버킷의 객체를 나열합니다.

    gsutil ls gs://[YOUR_BUCKET_NAME]/renderimages
    
  6. gsutil을 사용하여 버킷의 모든 객체를 로컬 디렉터리([LOCAL_DIRECTORY])에 복사합니다.

    mkdir ~/[LOCAL_DIRECTORY]
    gsutil -m rsync -r gs://[YOUR_BUCKET_NAME]/renderimages ~/[LOCAL_DIRECTORY]
    

작업 완료 확인

렌더링이 아직 처리 중인 경우 완료되기를 기다렸다가 OpenCue를 더 살펴볼 수도 있고, Monitor Jobs(작업 모니터링) 창에서 렌더링을 중지할 수도 있습니다.

OpenCue에서 작업을 중지하는 방법은 다음과 같습니다.

  1. Monitor Jobs(작업 모니터링) 창을 엽니다.
  2. [Your Job]을 선택하고 Kill Job(작업 중지) 버튼을 클릭합니다.
  3. 'Are you sure you want to kill these jobs?'(작업을 종료하시겠어요?)라는 팝업 메시지가 표시됩니다.
  4. OK(확인)를 클릭하여 작업을 중지합니다.

(선택사항) 렌더링 작업장 옵션 살펴보기

이 가이드에서는 총 vCPU 개수를 8개 이하로 유지하기 위해 렌더링 작업에 적당한 규모의 렌더링 호스트를 몇 개 배포했습니다. 작업을 빠르게 완료하거나 극장 상영용 애니메이션을 제작하는 것이 목표라면 더 많은 CPU를 탑재한 다수의 리소스를 배포할 수 있습니다. 이렇게 하려면 n1-highcpu-4 vCPU 이상을 사용하도록 기존 인스턴스 템플릿을 수정하고 관리형 인스턴스 그룹을 만들어 작업에 사용 가능한 렌더링 호스트의 총 개수를 제어합니다.

다음과 같은 저해상도 장면 파일을 n1-standard-2 VM에서 프레임당 1분 정도의 속도로 렌더링했습니다.

  • 장면 파일:

    gs://[YOUR_BUCKET_NAME]/robotdanceparty/sh_05/sh_05_lores.blend
    
  • 결과 이미지:

    로봇 댄스 파티의 저해상도 이미지

    가이드 버킷에 포함된 고해상도 장면 파일을 n1-highcpu-4 VM을 사용하여 렌더링하면 위와 비슷한 이미지가 약 8분만에 렌더링됩니다.

    OpenCue에서 다른 옵션을 사용해 보려면 이 고해상도 파일을 참조하도록 CueSubmit 명령어를 업그레이드합니다.

  • 장면 파일:

    gs://[YOUR_BUCKET_NAME]/robotdanceparty/sh_05/sh_05.blend
    
  • 결과 이미지:

    같은 로봇의 해상도가 약간 더 높은 이미지

(선택사항) 할당량 변경 요청

렌더링 호스트의 수를 늘리거나 대형 VM을 사용하려면 프로젝트의 할당량을 높여야 합니다.

  1. 할당량 페이지로 이동합니다.

    할당량 페이지로 이동

  2. 할당량 페이지에서 변경할 할당량을 선택합니다.

  3. 페이지 상단의 할당량 수정 버튼을 클릭합니다.

  4. 수정하려는 서비스의 체크박스를 선택합니다.

  5. 이름, 이메일, 전화번호를 입력하고 다음을 클릭합니다.

  6. 할당량 증가를 위한 요청 내용을 입력하고 다음을 클릭합니다.

  7. 요청을 제출합니다.

문제해결


문제: Docker 빌드 프로세스에 문제가 있습니다.

해결책: --no-cache 플래그와 함께 Dockerfile을 빌드하여 Docker가 모든 단계에서 최신 데이터를 사용하도록 강제합니다. Docker 빌드 옵션에 대한 자세한 내용은 해당 문서를 참조하세요.


문제: CueSubmit 또는 CueGUI를 시작할 때 셸에서 Connect Failed 오류가 발생합니다. 일반적으로 다음과 비슷합니다.

Encountered a server error. StatusCode.UNAVAILABLE : Connect Failed

해결책: SSH 터널이 작동하는지 확인하고 CueSubmit 또는 CueGUI를 다시 시작합니다.

  1. 로컬 셸에서 프로세스 상태 명령어를 실행하여 SSH 터널이 열려 있는지 확인합니다.

    ps aux | grep ssh.
    

    프로세스 목록이 표시됩니다. 출력 중 하나는 다음과 비슷한 형식으로 [USER_NAME], [PROJECT_NAME], OS를 포함해야 합니다.

    [USER_NAME]     75335   0.0  0.3  4392464  54736 s002  T     3:03PM   0:00.84  /usr/local/Cellar/python@2/2.7.15_1/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python -S /Users/[USER_NAME]/google-cloud-sdk/lib/gcloud.py compute ssh cuebot --project [PROJECT_NAME] --zone us-central1-a -- -N -L 8443:127.0.0.1:8443
    
  2. [USER_NAME], [PROJECT_NAME], --zone, 이름(cuebot)이 배포에 적합한지 확인합니다.

  3. SSH 프로세스를 중지하고 이 문서의 'SSH 전달 설정' 섹션의 단계를 다시 실행하여 새 SSH 터널을 엽니다.


문제: CueSubmit 또는 CueGUI가 열리지만 실행 셸에 오류가 출력됩니다.

해결책: Cloud SQL 인스턴스에 연결하고 스키마 및 예제 데이터가 입력되었는지 확인합니다. 결과가 예상에서 벗어나는 경우 Cloud SQL Database 만들기 섹션에 따라 파일을 다시 가져옵니다. '데이터베이스 스키마 및 데모 데이터 가져오기' 단계를 참조하세요.

  1. Cloud Console에서 Cloud Shell로 이동하고 다음 명령어를 실행하여 Cloud SQL 인스턴스를 업데이트합니다. 여기서 [CLOUD_SQL_INSTANCE_ID]를 인스턴스 이름으로 바꿉니다.

    gcloud sql connect [CLOUD_SQL_INSTANCE_ID] --user=postgres
    
  2. 메시지가 나타나면 [DATABASEPASSWORD]를 업데이트하고 Enter 키를 누릅니다.

    [DATABASEPASSWORD]
    
  3. 다음 명령어를 입력하고 Enter 키를 누릅니다.

    \c cuebot
    
  4. 메시지가 나타나면 비밀번호를 다시 입력하고 Enter 키를 누릅니다.

    [DATABASEPASSWORD]
    
  5. 다음 명령어를 입력합니다.

    \d+
    

    예상 출력은 다음과 같습니다.

    >
    List of relations
    Schema | Name     | Type  | Owner    | Size       | Description
    -------+----------+-------+----------+------------+-------------
    public | action   | table | postgres | 8192 bytes |
    public | alloc    | table | postgres | 8192 bytes |
    public | comments | table | postgres | 8192 bytes |
    public | config   | table | postgres | 8192 bytes |
    public | deed     | table | postgres | 0 bytes    |
    public | depend   | table | postgres | 0 bytes    |
    public | dept     | table | postgres | 8192 bytes |
    

문제: CueSubmit 또는 CueGUI 셸에서 오류가 발생하며 도구가 실행되지 않습니다.

해결책: 다음 변수를 확인하여 CueBot과 데이터베이스 간의 연결이 정상적으로 작동하는지 확인합니다.

  1. Cloud SQL 인스턴스 만들기 섹션의 '네트워크' 단계에서 [RESERVED_STATIC_IP_ADDRESS]를 올바르게 입력했는지 확인합니다.
  2. Cuebot VM 구성 및 프로비저닝 섹션의 '명령어 인수' 단계에서 [CLOUD_SQL_IP_ADDRESS][DATABASEPASSWORD]를 올바르게 입력했는지 확인합니다.
  3. Cuebot VM 구성 및 프로비저닝 섹션의 '네트워크 설정 구성' 단계에서 예약된 외부 IP 주소를 올바르게 입력했는지 확인합니다.

문제: 시작된 작업이 OpenCue에 나열되지만 렌더링 호스트가 선택되지 않습니다.

해결책: Job Facility(작업 시설)Job Layer(작업 레이어) 태그가 할당된 Render Host(렌더링 호스트) 태그와 일치하며 최소 리소스 요구사항이 충족되는지 확인합니다. 자세한 내용은 OpenCue 렌더링 문제 해결배포 문제 해결 문서를 참조하세요.


문제: CueGui에서 렌더링 호스트가 표시되지 않습니다.

해결책: 호스트가 표시되지 않는 원인에는 여러 가지가 있을 수 있습니다. 가장 흔한 경우는 렌더링 호스트 인스턴스 템플릿을 배포할 때 Cuebot의 내부 IP 주소를 잘못 입력한 경우입니다. 자세한 내용은 배포 문제 해결 문서를 참조하세요.

삭제

이 가이드에서 사용된 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 리소스가 포함된 프로젝트를 삭제하거나 프로젝트를 유지하고 개별 리소스를 삭제하세요.

  1. Cloud Console에서 리소스 관리 페이지로 이동합니다.

    리소스 관리로 이동

  2. 프로젝트 목록에서 삭제할 프로젝트를 선택하고 삭제를 클릭합니다.
  3. 대화상자에서 프로젝트 ID를 입력한 후 종료를 클릭하여 프로젝트를 삭제합니다.

다음 단계