Menjalankan bukti konsep render farm hybrid


Dokumen ini menunjukkan cara menjalankan bukti konsep (PoC) untuk membangun render farm hybrid di Google Cloud. Dokumen ini merupakan pendamping untuk Membangun render farm hibrid dan dirancang untuk memfasilitasi pengujian dan benchmark rendering untuk animasi, film, iklan, atau video game di Google Cloud.

Anda dapat menjalankan PoC untuk hybrid render farm di Google Cloud jika Anda mempersempit cakupan pengujian pada komponen penting saja. Berbeda dengan merancang solusi end-to-end, pertimbangkan tujuan PoC berikut:

  • Menentukan cara mereproduksi lingkungan rendering lokal di cloud.
  • Mengukur perbedaan performa rendering dan jaringan antara render worker lokal dengan instance cloud.
  • Menentukan perbedaan biaya antara workload lokal dan cloud.

Berikut tugas yang kurang penting yang dapat Anda tunda atau bahkan hapus dari PoC

  • Menentukan cara aset disinkronkan (jika ada) antara fasilitas Anda dengan cloud.
  • Menentukan cara men-deploy tugas ke render worker cloud dengan menggunakan software pengelolaan antrean.
  • Menentukan cara terbaik untuk terhubung ke Google Cloud.
  • Mengukur latensi antara fasilitas Anda dengan pusat data Google.

Konektivitas

Untuk PoC rendering, Anda tidak memerlukan konektivitas tingkat perusahaan ke Google. Koneksi melalui internet publik pun sudah cukup. Kecepatan koneksi, latensi, dan bandwidth tidak terlalu penting untuk performa rendering.

Anda dapat memperlakukan konektivitas sebagai PoC terpisah karena dalam mengatur Dedicated Interconnect atau Partner Interconnect PoC memerlukan waktu, yang dapat juga dilakukan serentak dengan pengujian rendering.

Tujuan

  • Membuat instance Compute Engine dan menyesuaikannya untuk berfungsi sebagai render worker.
  • Membuat image kustom.
  • Men-deploy render worker.
  • Menyalin aset ke render worker.
  • Menjalankan tolok ukur render.
  • Menyalin render pengujian dari render worker ke workstation lokal untuk dievaluasi.

Biaya

Saat Anda memperkirakan proyeksi penggunaan, perkirakan juga perbedaan biaya antara render worker lokal dengan yang berbasis cloud.

Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang dapat ditagih berikut:

Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda, gunakan kalkulator harga. Pengguna baru Google Cloud mungkin memenuhi syarat untuk mendapatkan uji coba gratis.

Setelah menyelesaikan tugas yang dijelaskan dalam dokumen ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat. Untuk mengetahui informasi selengkapnya, lihat Pembersihan.

Sebelum memulai

  1. Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
  2. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  3. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  4. Menginstal Google Cloud CLI.
  5. Untuk initialize gcloud CLI, jalankan perintah berikut:

    gcloud init
  6. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  7. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  8. Menginstal Google Cloud CLI.
  9. Untuk initialize gcloud CLI, jalankan perintah berikut:

    gcloud init
  10. Di konsol Google Cloud, aktifkan Cloud Shell.

    Aktifkan Cloud Shell

    Di bagian bawah Google Cloud Console, Cloud Shell sesi akan terbuka dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi sesi.

  11. Dalam dokumen ini, Anda biasanya menggunakan Cloud Shell untuk menjalankan langkah-langkah tersebut, tetapi menyalin data dari mesin lokal ke Cloud Storage mengharuskan Anda menjalankan Google Cloud CLI di komputer tersebut.

Menyiapkan lingkungan Anda

  • Di Cloud Shell, tetapkan zona Compute Engine:

    gcloud config set compute/zone [ZONE]
    

    Dengan [ZONE] adalah zona tempat semua resource Anda dibuat.

Men-deploy instance

Untuk PoC, Anda sebaiknya membuat kembali hardware worker render lokal Anda. Meskipun Google Cloud menawarkan sejumlah platform CPU yang mungkin cocok dengan hardware Anda, arsitektur virtual machine berbasis cloud berbeda dengan render blade bare metal dalam render farm lokal.

Dalam Google Cloud, resource divirtualisasikan dan tidak bergantung pada resource lainnya. Virtual machine (instance) terdiri atas komponen-komponen utama berikut:

  • CPU Virtual (vCPU)
  • Memori (RAM)
  • Disk

    • Boot disk dan OS tamu
    • Disk penyimpanan tambahan
  • GPU NVIDIA Tesla (opsional)

Anda juga dapat mengontrol aspek resource lainnya, seperti jaringan, aturan firewall, dan akses pengguna. Namun, untuk tujuan PoC, Anda hanya perlu memperhatikan empat komponen yang telah disebutkan sebelumnya.

Membuat instance

  1. Di Cloud Shell, buatlah prototipe instance render worker Anda:

    gcloud compute instances create [INSTANCE_NAME] \
        --machine-type [MACHINE_TYPE] \
        --image-project [IMAGE_PROJECT] \
        --image-family [IMAGE_FAMILY] \
        --boot-disk-size [SIZE]
    

    Dengan keterangan:

    • [INSTANCE_NAME] adalah nama instance Anda.
    • [MACHINE_TYPE] dapat berupa jenis mesin yang telah ditetapkan atau jenis mesin kustom dengan format custom-[NUMBER_OF_CPUS]-[NUMBER_OF_MB] dimana jumlah vCPU dan jumlah memori untuk jenis mesin ditentukan.
    • [IMAGE_PROJECT] adalah project image dari kelompok image tersebut.
    • [IMAGE_FAMILY] adalah flag opsional yang menentukan kelompok image image ini berasal.
    • [SIZE] adalah ukuran boot disk dalam GB.

    Contoh:

    gcloud compute instances create render-worker-proto \
        --machine-type custom-24-32768 \
        --image-project centos-cloud \
        --image-family centos-7 \
        --boot-disk-size 100
    

    Perintah sebelumnya membuat instance CentOS 7 dengan 24 vCPU, RAM 32 GB, dan boot disk standar sebesar 100 GB. Instance dibuat di dalam zona yang Anda tetapkan sebelumnya sebagai zona komputasi default.

Anda dapat membuat VM dengan ukuran apa pun, hingga 96 vCPU (jika Anda membutuhkan lebih banyak, coba jenis ultramem), lebih dari 624 GB RAM, atau beberapa GPU NVIDIA Tesla. Kemungkinannya tidak terbatas, tapi berhati-hatilah untuk tidak berlebihan; Anda ingin merancang render farm berbasis cloud yang hemat biaya, skalabel, dan cocok untuk berbagai ukuran pekerjaan.

Login ke sebuah instance

  1. Di Cloud Shell, terhubunglah ke instance Anda menggunakan SSH:

    gcloud compute ssh [INSTANCE_NAME]
    
  2. Instal dan lisensikan software pada instance seperti yang Anda lakukan dengan render worker lokal.

Mem-build image default

Kecuali Anda memiliki software uji khusus yang memerlukan hal-hal seperti kernel Linux kustom atau OS dengan versi lama, kami rekomendasi untuk memulai dengan salah satu dari disk image publik kami dan menambahkan perangkat lunak yang akan Anda gunakan.

Jika Anda memilih untuk mengimpor image sendiri, configure image ini dengan menginstal library tambahan agar OS tamu dapat berkomunikasi dengan Google Cloud.

Menyiapkan render worker

  1. Di Cloud Shell, pada instance yang Anda buat sebelumnya, siapkan render worker seperti yang Anda lakukan di worker lokal dengan menginstal software dan library.

  2. Menghentikan instance:

    gcloud compute instances stop [INSTANCE_NAME]
    

Membuat image kustom

  1. Di Cloud Shell, tentukan nama boot disk VM Anda:

    gcloud compute instances describe [INSTANCE_NAME]
    

    Output-nya berisi nama boot disk instance Anda:

    mode: READ_WRITE
    source:https://www.googleapis.com/compute/v1/projects/[PROJECT]/zones/[ZONE]/disks/[DISK_NAME]
    

    Dengan keterangan:

    • [PROJECT] adalah nama project Google Cloud Anda
    • [ZONE] adalah zona tempat disk berada.
    • [DISK_NAME] adalah nama boot disk yang terpasang pada instance Anda. Nama disk biasanya sama (atau mirip) dengan nama instance Anda.
  2. Membuat image dari instance Anda:

    gcloud compute images create [IMAGE_NAME] \
        --source-disk [DISK_NAME] \
        --source-disk-zone [ZONE]
    

    Dengan keterangan:

    • [IMAGE_NAME] adalah nama untuk image baru.
    • [DISK_NAME] adalah disk tempat Anda ingin membuat image baru.
    • [ZONE] adalah zona tempat disk berada.

Men-deploy render worker

Setelah image kustom siap beserta OS, software, dan library yang dibutuhkan, Anda dapat men-deploy instance render worker menggunakan image kustom, daripada menggunakan image publik.

  • Di Cloud Shell, buatlah instance render worker. Tambahkan cakupan devstorage.read_write agar Anda dapat menulis ke Cloud Storage dari instance ini.

    gcloud compute instances create [WORKER_NAME] \
        --machine-type [MACHINE_TYPE] \
        --image [IMAGE_NAME] \
        --scopes https://www.googleapis.com/auth/devstorage.read_write \
        --boot-disk-size [SIZE]
    

    Dengan [WORKER_NAME] adalah nama untuk render worker.

Memberi lisensi software

Anda dapat menggunakan server lisensi lokal untuk menyediakan lisensi selama PoC, karena Anda tidak perlu menerbitkan ulang lisensi untuk server lisensi berbasis cloud yang baru. Untuk terhubung dengan aman ke server lisensi lokal dari instance cloud Anda, buat sebuah aturan firewall yang hanya mengizinkan traffic melalui port yang diperlukan. Aturan firewall ini juga mengizinkan traffic dari alamat IP gateway internet lokal atau server lisensi itu sendiri.

Anda mungkin perlu mengonfigurasi gateway internet dari fasilitas Anda untuk mengizinkan traffic dari instance Google Cloud menjangkau server lisensi lokal Anda.

Menggunakan server lisensi lokal

Anda dapat mengizinkan traffic ke jaringan Virtual Private Cloud (VPC) Anda dengan membuat sebuah aturan firewall.

  • Di Cloud Shell, buatlah aturan firewall:

    gcloud compute firewall-rules create [RULE_NAME] \
       --direction=INGRESS \
       --priority=1000 \
       --network=default \
       --action=ALLOW \
       --rules=[PROTOCOL]:[PORT] \
       --source-ranges=[IP_ADDRESS]
    

Dengan keterangan:

  • [RULE_NAME] adalah nama untuk aturan firewall.
  • [PROTOCOL] adalah protokol untuk traffic.
  • [PORT] adalah port yang dilalui traffic.
  • [IP_ADDRESS] adalah alamat IP server lisensi lokal Anda.

Menggunakan server lisensi berbasis cloud

Server lisensi berbasis cloud tidak memerlukan konektivitas ke jaringan lokal Anda, dan berjalan pada jaringan VPC yang sama dengan render worker Anda. Karena penyajian lisensi merupakan tugas yang relatif ringan, instance kecil (2-4 vCPU, RAM 6-8 GB) dapat menangani beban kerja penyajian lisensi ke beberapa render worker.

Bergantung pada jenis software yang perlu dilisensikan, Anda mungkin perlu memberi key ulang lisensi Anda menggunakan nomor ID hardware yang unik, seperti alamat MAC dari server lisensi. Pengelola lisensi lainnya dapat memvalidasi lisensi software dari host yang terhubung ke internet. Ada banyak pengelola lisensi, lihat dokumentasi pemberian lisensi produk Anda untuk mendapatkan petunjuk.

Mengizinkan komunikasi antar-instance

Pekerja render dan instance server lisensi perlu berkomunikasi satu sama lain. Aturan firewall default-allow-internal memungkinkan semua instance dalam project Anda untuk saling berkomunikasi. Aturan firewall ini dibuat saat Anda membuat project baru. Jika menggunakan project baru, Anda dapat melewati bagian ini. Jika menggunakan project yang sudah ada, Anda perlu menguji apakah aturan firewall masih ada di project Google Cloud.

  1. Di Cloud Shell, periksa apakah aturan firewall ada dalam project Anda:

    gcloud compute firewall-rules list \
        --filter="name=default-allow-internal"
    

    Jika aturan firewall ada dalam project, Anda akan melihat output seperti berikut:

    NAME                   NETWORK DIRECTION PRIORITY ALLOW DENY                   DISABLED
    default-allow-internal default INGRESS   65534m   tcp:0-65535,udp:0-65535,icmp False
    

    Jika aturan firewall tidak ada dalam project Anda, output tidak akan menampilkan apapun.

  2. Jika Anda perlu membuat aturan firewall, gunakan perintah berikut:

    gcloud compute firewall-rules create default-allow-internal \
        --direction=INGRESS \
        --priority=65534 \
        --network=default \
        --action=ALLOW \
        --rules=tcp:0-65535,udp:0-65535,icmp \
        --source-ranges=0.0.0.0/0
    

Menyimpan aset

Pipeline render dapat sangat berbeda, bahkan dalam satu perusahaan sekalipun. Untuk menerapkan PoC dengan cepat dan dengan konfigurasi yang minimal, Anda dapat menggunakan boot disk dari instance render worker untuk menyimpan aset. PoC Anda seharusnya tidak mengevaluasi sinkronisasi data atau solusi penyimpanan yang lebih canggih. Anda dapat mengevaluasi opsi tersebut di PoC terpisah.

Ada sejumlah opsi penyimpanan yang tersedia di Google Cloud, tetapi sebaiknya ujilah solusi penyimpanan bersama yang skalabel di PoC terpisah.

Jika Anda menguji beberapa konfigurasi render worker dan memerlukan sistem file bersama, Anda dapat membuat volume Filestore dan memasangnya menggunakan NFS ke render worker. Filestore adalah layanan penyimpanan file terkelola yang dapat dipasang untuk membaca/menulis di banyak instance, bertindak sebagai sebuah server file.

Mendapatkan data ke Google Cloud

Untuk menjalankan PoC render, Anda perlu mendapatkan file scene, cache, dan aset ke render worker Anda. Untuk set data yang lebih besar (>10 GB), Anda dapat menggunakan gsutil untuk menyalin data ke Cloud Storage, lalu ke render worker Anda. Untuk set data yang lebih kecil (<10 GB), Anda dapat menggunakan gcloud CLI untuk menyalin data secara langsung ke path di render worker Anda (khusus Linux).

Membuat direktori tujuan pada render worker

  1. Di Cloud Shell, hubungkan ke render worker Anda menggunakan SSH:

    gcloud compute ssh [WORKER_NAME]
    

    Dengan [WORKER_NAME] adalah nama render worker Anda.

  2. Membuat direktori tujuan untuk data Anda:

    mkdir [ASSET_DIR]
    

    Dengan [ASSET_DIR] adalah direktori lokal di mana saja pada render worker Anda.

Menggunakan gsutil untuk menyalin data dalam jumlah besar

Jika Anda mentransfer set data besar ke render worker, gunakan gsutil dengan Cloud Storage sebagai langkah perantara. Jika Anda mentransfer set data yang lebih kecil, Anda dapat langsung ke bagian berikutnya dan menggunakan gcloud CLI untuk mentransfer data dalam jumlah yang lebih kecil.

  1. Pada workstation lokal, buat bucket Cloud Storage:

    gsutil mb gs://[BUCKET_NAME_ASSETS]
    

    Dengan [BUCKET_NAME_ASSETS] merepresentasikan nama bucket Cloud Storage untuk file atau direktori yang ingin disalin.

  2. Menyalin data dari direktori lokal Anda ke bucket:

    gsutil -m cp -r [ASSETS] gs://[BUCKET_NAME_ASSETS]
    

    Dengan [ASSETS] adalah daftar file atau direktori yang akan disalin ke bucket Anda.

  3. Menghubungkan ke render worker Anda menggunakan SSH:

    gcloud compute ssh [WORKER_NAME]
    
  4. Menyalin konten bucket Anda ke render worker:

    gsutil -m cp -r gs://[BUCKET_NAME_ASSETS]/* [ASSET_DIR]
    

Menggunakan gcloud CLI untuk menyalin data dalam jumlah kecil

Jika Anda mentransfer set data yang lebih kecil, Anda dapat menyalin langsung dari workstation lokal ke render worker Linux yang sedang berjalan menggunakan gcloud CLI.

  • Di workstation lokal, salin data antara direktori lokal dengan render worker Anda:

    gcloud compute scp --recurse [ASSETS] [INSTANCE_NAME]:[ASSET_DIR]
    

    Dengan keterangan:

    • [ASSETS] adalah daftar file atau direktori yang akan disalin ke bucket Anda.
    • [INSTANCE_NAME] adalah nama render worker Anda.
    • [ASSET_DIR] adalah path lokal di render worker Anda.

Menjalankan pengujian render

Setelah Anda menginstal dan melisensikan software render serta menyalin data scene, Anda siap menjalankan pengujian render. Proses ini sepenuhnya bergantung pada cara pipeline render Anda dalam menjalankan perintah render.

Peralatan benchmark

Jika Anda ingin membandingkan resource cloud dengan hardware lokal, Anda dapat menggunakan Perfkit Benchmarker untuk mengukur statistik dari hal-hal seperti bandwidth jaringan dan performa disk.

Beberapa software rendering memiliki alat benchmark sendiri, seperti V-Ray, Octane, atau Maxon, yang mungkin ingin Anda jalankan baik di infrastruktur lokal maupun di cloud untuk membandingkan konfigurasi render umum.

Mendapatkan data dari Google Cloud

Setelah Anda melakukan pengujian render dan ingin melihat hasilnya, Anda harus menyalin hasil render ke workstation lokal. Bergantung pada ukuran set data yang akan ditransfer, Anda dapat menggunakan gsutil atau gcloud CLI.

Membuat direktori tujuan di workstation lokal

  • Di workstation lokal, buatlah direktori untuk render Anda:

    mkdir [RENDER_DIR]
    

    Dengan [RENDER_DIR] adalah path lokal di render worker Anda.

Menggunakan gsutil untuk menyalin data dalam jumlah besar

Jika Anda mentransfer set data besar, gunakan gsutil. Jika tidak, lanjutkan ke bagian berikutnya untuk menggunakan gcloud CLI. Untuk menyalin data dari render worker ke bucket Cloud Storage, buatlah bucket Cloud Storage terpisah agar render tetap terpisah dari data aset.

  1. Di workstation lokal, buatlah bucket Cloud Storage baru:

    gsutil mb gs://[BUCKET_NAME_RENDERS]
    

    Dengan [BUCKET_NAME_RENDERS] merepresentasikan nama bucket Cloud Storage untuk data yang dirender.

  2. Menghubungkan ke render worker Anda menggunakan SSH:

    gcloud compute ssh [WORKER_NAME]
    
  3. Menyalin data yang dirender ke bucket Anda:

    gsutil -m cp -r [RENDERS] gs://[BUCKET_NAME_RENDERS]
    

    Dengan keterangan:

    • [RENDERS] adalah daftar file atau direktori yang akan disalin ke bucket Anda.
  4. Pada workstation lokal Anda, salinlah file dari bucket Cloud Storage ke direktori lokal:

    gsutil -m cp -r gs://[BUCKET_NAME_RENDERS]/* [RENDER_DIR]
    

Menggunakan gcloud CLI untuk menyalin data dalam jumlah kecil

Jika Anda menyalin set data yang lebih kecil, Anda dapat menyalin langsung dari render worker ke workstation lokal Anda.

  • Di workstation lokal, salinlah hasil render ke direktori tujuan Anda:

    gcloud compute scp --recurse [WORKER_NAME]:[RENDERS] [RENDER_DIR]
    

    Dengan [RENDERS] adalah daftar file atau direktori yang akan disalin ke workstation lokal.

Pembersihan

Agar tidak perlu membayar biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.

Menghapus project

  1. Di konsol Google Cloud, buka halaman Manage resource.

    Buka Manage resource

  2. Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
  3. Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.

Menghapus resource satu per satu

  1. Hapus instance:
    gcloud compute instances delete INSTANCE_NAME
  2. Hapus bucket:
    gcloud storage buckets delete BUCKET_NAME

Langkah selanjutnya