Esegui una proof of concept di una farm di rendering ibrida


Questo documento mostra come eseguire un proof of concept (PoC) per creare una farm di rendering ibrida su Google Cloud. Questo documento è un'integrazione alla Creazione di una farm di rendering ibrida ed è progettato per facilitare i test e il benchmarking di rendering per animazioni, film, spot pubblicitari o videogiochi su Google Cloud.

Puoi eseguire un PDC per la tua farm di rendering ibrida su Google Cloud se restringi l'ambito dei test solo ai componenti essenziali. Invece di progettare un'intera soluzione end-to-end, considera i seguenti scopi di un PDC:

  • Determina come riprodurre il tuo ambiente di rendering on-premise nel cloud.
  • Misura le differenze nelle prestazioni di rendering e networking tra i worker di rendering on-premise e le istanze cloud.
  • Determina le differenze di costo tra i carichi di lavoro on-premise e cloud.

Di minore importanza sono le seguenti attività che puoi posticipare o persino eliminare da un PDC:

  • Determinare in che modo gli asset vengono sincronizzati (se non del tutto) tra la tua struttura e il cloud.
  • Determina come eseguire il deployment dei job sui worker di rendering nel cloud utilizzando un software di gestione delle code.
  • Stabilisci il modo migliore per connetterti a Google Cloud.
  • Misura la latenza tra la tua struttura e i data center di Google.

Connettività

Per un PDC di rendering, non è necessaria una connettività di livello aziendale a Google. È sufficiente una connessione alla rete internet pubblica. Velocità di connessione, latenza e larghezza di banda sono di importanza secondaria rispetto alle prestazioni di rendering.

Puoi trattare la connettività come un PoC separato perché l'organizzazione di Dedicated Interconnect o Partner Interconnect per un PoC può richiedere tempo e può essere eseguita in contemporanea ai test di rendering.

Obiettivi

  • Creare un'istanza Compute Engine e personalizzarla per fungere da worker di rendering.
  • Crea un'immagine personalizzata.
  • Esegui il deployment di un worker di rendering.
  • Copia gli asset nel worker di rendering.
  • Esegui benchmark di rendering.
  • Copia i rendering di test dal worker di rendering alla tua workstation locale per la valutazione.

Costi

Quando stimi l'utilizzo previsto, fai una stima della differenza di costo tra i worker di rendering on-premise e basati su cloud.

In questo documento vengono utilizzati i seguenti componenti fatturabili di Google Cloud:

Per generare una stima dei costi in base all'utilizzo previsto, utilizza il Calcolatore prezzi. I nuovi utenti di Google Cloud possono essere idonei a una prova senza costi aggiuntivi.

Una volta completate le attività descritte in questo documento, puoi evitare la fatturazione continua eliminando le risorse che hai creato. Per ulteriori informazioni, consulta la pagina Pulizia.

Prima di iniziare

  1. Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
  2. Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  3. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  4. Installa Google Cloud CLI.
  5. Per initialize gcloud CLI, esegui questo comando:

    gcloud init
  6. Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  7. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  8. Installa Google Cloud CLI.
  9. Per initialize gcloud CLI, esegui questo comando:

    gcloud init
  10. Nella console Google Cloud, attiva Cloud Shell.

    Attiva Cloud Shell

    Nella parte inferiore della console Google Cloud viene avviata una sessione di Cloud Shell che mostra un prompt della riga di comando. Cloud Shell è un ambiente shell con Google Cloud CLI già installato e con valori già impostati per il progetto attuale. L'inizializzazione della sessione può richiedere alcuni secondi.

  11. In questo documento usi principalmente Cloud Shell per eseguire i passaggi, ma per copiare i dati da una macchina on-premise a Cloud Storage è necessario che Google Cloud CLI sia in esecuzione su quella macchina.

Configurazione dell'ambiente

  • In Cloud Shell, imposta la zona di Compute Engine:

    gcloud config set compute/zone [ZONE]
    

    Dove [ZONE] è la zona in cui vengono create tutte le risorse.

Deployment di un'istanza

Per il tuo PDC, potresti voler ricreare l'hardware di worker per il rendering on-premise. Sebbene Google Cloud offra una serie di piattaforme CPU che potrebbero corrispondere al tuo hardware, l'architettura di una macchina virtuale basata su cloud è diversa da un blade di rendering bare metal in una farm di rendering on-premise.

Su Google Cloud, le risorse sono virtualizzate e indipendenti da altre risorse. Le macchine virtuali (istanze) sono composte dai seguenti componenti principali:

  • CPU virtuali (vCPU)
  • Memoria (RAM)
  • Dischi

    • Disco di avvio e sistema operativo guest
    • Dischi di archiviazione aggiuntivi
  • GPU NVIDIA Tesla (facoltative)

Puoi anche controllare altri aspetti delle risorse, come networking, regole firewall e l'accesso degli utenti. Tuttavia, ai fini del tuo PDC, devi prestare attenzione solo ai quattro componenti menzionati in precedenza.

Creazione di un'istanza

  1. In Cloud Shell, crea la tua istanza worker di rendering del prototipo:

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

    Dove:

    • [INSTANCE_NAME] è un nome della tua istanza.
    • [MACHINE_TYPE] è un tipo di macchina predefinita o un tipo di macchina personalizzata che utilizza il formato custom-[NUMBER_OF_CPUS]-[NUMBER_OF_MB], con cui definisci il numero di vCPU e la quantità di memoria per il tipo di macchina.
    • [IMAGE_PROJECT] è il progetto di immagini di quella famiglia di immagini.
    • [IMAGE_FAMILY] è un flag facoltativo che specifica a quale famiglia di immagini appartiene l'immagine.
    • [SIZE] è la dimensione del disco di avvio in GB.

    Ad esempio:

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

    Il comando precedente crea un'istanza CentOS 7 con 24 vCPU, 32 GB di RAM e un disco di avvio standard da 100 GB. L'istanza viene creata nella zona impostata in precedenza come zona di computing predefinita.

Puoi scegliere di creare una VM di qualsiasi dimensione, fino a 96 vCPU (se te ne occorrono di più, prova i tipi ultramem), oltre 624 GB di RAM o più GPU NVIDIA Tesla. Le possibilità sono infinite, ma fai attenzione all'overprovisioning: vuoi progettare una farm di rendering economica, scalabile e basata su cloud, adatta per job di qualsiasi dimensione.

Accesso a un'istanza

  1. In Cloud Shell, connettiti all'istanza tramite SSH:

    gcloud compute ssh [INSTANCE_NAME]
    
  2. Installa e concedi in licenza il software sulla tua istanza come faresti con un worker di rendering on-premise.

Creazione dell'immagine predefinita in corso...

A meno che tu non abbia software personalizzati da testare che richiedono elementi come un kernel Linux personalizzato o versioni precedenti del sistema operativo, ti consigliamo di iniziare con una delle nostre immagini del disco pubbliche e di aggiungere il software che intendi utilizzare.

Se scegli di importare un'immagine personalizzata, devi configure installando librerie aggiuntive per consentire al sistema operativo guest di comunicare con Google Cloud.

Configurare il worker di rendering

  1. In Cloud Shell, nell'istanza creata in precedenza, configura il worker di rendering come faresti con il worker on-premise installando il software e le librerie.

  2. Arresta l'istanza:

    gcloud compute instances stop [INSTANCE_NAME]
    

Creare un'immagine personalizzata

  1. In Cloud Shell, determina il nome del disco di avvio della VM:

    gcloud compute instances describe [INSTANCE_NAME]
    

    L'output contiene il nome del disco di avvio dell'istanza:

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

    Dove:

    • [PROJECT] è il nome del tuo progetto Google Cloud.
    • [ZONE] è la zona in cui si trova il disco.
    • [DISK_NAME] è il nome del disco di avvio collegato all'istanza. Il nome del disco è in genere uguale (o simile) al nome dell'istanza.
  2. Crea un'immagine dalla tua istanza:

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

    Dove:

    • [IMAGE_NAME] è un nome per la nuova immagine.
    • [DISK_NAME] è il disco da cui vuoi creare la nuova immagine.
    • [ZONE] è la zona in cui si trova il disco.

Deployment di un worker di rendering

Ora che hai un'immagine personalizzata pronta con il sistema operativo, il software e le librerie che ti servono, puoi eseguire il deployment di un'istanza worker di rendering utilizzando la tua immagine personalizzata, invece di utilizzare un'immagine pubblica.

  • In Cloud Shell, crea un'istanza worker di rendering. Aggiungi l'ambito devstorage.read_write in modo da poter scrivere in Cloud Storage da questa istanza.

    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]
    

    dove [WORKER_NAME] è un nome per il worker di rendering.

Software per licenze

Puoi utilizzare il tuo server licenze on-premise per fornire le licenze durante un PDC, in quanto non è necessario riemettere le licenze per i nuovi server di licenze basati su cloud. Per connetterti in modo sicuro al server delle licenze on-premise dalla tua istanza cloud, crea una regola firewall che consenta il traffico solo sulle porte necessarie. Questa regola firewall consente anche il traffico dall'indirizzo IP del gateway internet on-premise o del server delle licenze stesso.

Potresti dover configurare il gateway internet della tua struttura per consentire al traffico dell'istanza di Google Cloud di raggiungere il server delle licenze on-premise.

Utilizza il server di licenze on-premise

Puoi consentire il traffico nella tua rete Virtual Private Cloud (VPC) creando una regola firewall.

  • In Cloud Shell, crea la regola firewall:

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

Dove:

  • [RULE_NAME] è un nome per la regola firewall.
  • [PROTOCOL] è il protocollo per il traffico.
  • [PORT] è il porto su cui passa il traffico.
  • [IP_ADDRESS] è l'indirizzo IP del tuo server di licenze on-premise.

Usa un server di licenze basato su cloud

Un server di licenze basato su cloud non richiede la connettività alla rete on-premise e viene eseguito sulla stessa rete VPC del worker di rendering. Poiché la gestione delle licenze è un'attività relativamente leggera, un'istanza di piccole dimensioni (2-4 vCPU, 6-8 GB di RAM) è in grado di gestire il carico di lavoro delle licenze per pochi worker di rendering.

A seconda del tipo di software da acquisire in licenza, potrebbe essere necessario assegnare nuovamente le licenze a un ID hardware univoco, ad esempio l'indirizzo MAC del server delle licenze. Altri gestori di licenze possono convalidare le licenze software da qualsiasi host connesso a Internet. Esistono molti gestori di licenze, quindi consulta la documentazione relativa alle licenze dei prodotti per le istruzioni.

Consenti la comunicazione tra le istanze

I lavoratori di rendering e le istanze dei server delle licenze devono comunicare tra loro. La regola firewall default-allow-internal consente a tutte le istanze nel progetto di comunicare tra loro. Questa regola firewall viene creata quando crei un nuovo progetto. Se utilizzi un nuovo progetto, puoi saltare questa sezione. Se utilizzi un progetto esistente, devi verificare se la regola firewall è ancora nel tuo progetto Google Cloud.

  1. In Cloud Shell, controlla se la regola firewall è presente nel tuo progetto:

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

    Se la regola firewall è nel tuo progetto, vedrai il seguente output:

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

    Se la regola firewall non è nel tuo progetto, l'output non mostra nulla.

  2. Se devi creare la regola firewall, utilizza il seguente comando:

    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
    

Archiviazione degli asset

Le pipeline di rendering possono variare notevolmente, anche all'interno di una singola azienda. Per implementare il tuo PDC in modo rapido e con una configurazione minima, puoi utilizzare il disco di avvio dell'istanza worker di rendering per archiviare gli asset. Il tuo PDC non deve ancora valutare la sincronizzazione dei dati o soluzioni di archiviazione più avanzate. Puoi valutare queste opzioni in un PDC separato.

Su Google Cloud sono disponibili numerose opzioni di archiviazione, ma consigliamo di testare una soluzione di archiviazione condivisa scalabile in un PDC separato.

Se stai testando più configurazioni dei worker di rendering e hai bisogno di un file system condiviso, puoi creare un volume Filestore e montarlo utilizzando NFS sui worker di rendering. Filestore è un servizio di archiviazione di file gestito che può essere montato per la lettura/scrittura su molte istanze, agendo come un file server.

Trasferimento dei dati a Google Cloud

Per eseguire un PDC del rendering, devi trasferire i file di scena, le cache e gli asset ai worker di rendering. Per set di dati di dimensioni maggiori (> 10 GB), puoi utilizzare gsutil per copiare i dati in Cloud Storage e poi sui worker di rendering. Per set di dati più piccoli (< 10 GB), puoi utilizzare gcloud CLI per copiare i dati direttamente in un percorso sui worker di rendering (solo Linux).

Crea una directory di destinazione sul worker di rendering

  1. In Cloud Shell, connettiti al worker di rendering tramite SSH:

    gcloud compute ssh [WORKER_NAME]
    

    Dove [WORKER_NAME] è il nome del worker di rendering.

  2. Crea una directory di destinazione per i tuoi dati:

    mkdir [ASSET_DIR]
    

    Dove [ASSET_DIR] è una directory locale in qualsiasi punto del worker di rendering.

Utilizza gsutil per copiare grandi quantità di dati

Se stai trasferendo set di dati di grandi dimensioni al tuo worker di rendering, utilizza gsutil con Cloud Storage come passaggio intermedio. Se stai trasferendo set di dati di piccole dimensioni, puoi passare alla sezione successiva e utilizzare gcloud CLI per trasferire quantità minori di dati.

  1. Sulla workstation locale, crea un bucket Cloud Storage:

    gsutil mb gs://[BUCKET_NAME_ASSETS]
    

    Dove [BUCKET_NAME_ASSETS] rappresenta il nome del bucket Cloud Storage dei file o delle directory da copiare.

  2. Copia i dati dalla tua directory locale nel bucket:

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

    dove [ASSETS] è un elenco di file o directory da copiare nel bucket.

  3. Connettiti al worker di rendering tramite SSH:

    gcloud compute ssh [WORKER_NAME]
    
  4. Copia i contenuti del bucket nel worker di rendering:

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

Utilizza gcloud CLI per copiare piccole quantità di dati

Se stai trasferendo set di dati più piccoli, puoi copiarli direttamente dalla tua workstation locale a un worker di rendering Linux in esecuzione utilizzando gcloud CLI.

  • Sulla workstation locale, copia i dati tra la directory locale e il worker di rendering:

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

    Dove:

    • [ASSETS] è un elenco di file o directory da copiare nel bucket.
    • [INSTANCE_NAME] è il nome del worker di rendering.
    • [ASSET_DIR] è un percorso locale sul worker di rendering.

Esecuzione di rendering di test

Dopo aver installato e concesso in licenza il software di rendering e copiato i dati delle scene, puoi eseguire i test di rendering. Questo processo dipende interamente dal modo in cui la pipeline di rendering esegue i comandi.

Strumenti di benchmark

Se vuoi confrontare le risorse cloud con il tuo hardware on-premise, puoi utilizzare Perfkit Benchmarker per misurare le statistiche riguardanti, ad esempio, la larghezza di banda della rete e le prestazioni del disco.

Alcuni software di rendering dispongono di propri strumenti di benchmarking, come V-Ray, Octane o Maxon, che potresti voler eseguire sia on-premise che nel cloud per confrontare le configurazioni di rendering più comuni.

Ottenere dati da Google Cloud

Dopo aver eseguito i test di rendering e aver voglia di vedere i risultati, devi copiare i rendering risultanti sulla workstation locale. A seconda delle dimensioni del set di dati da trasferire, puoi utilizzare gsutil o gcloud CLI.

Crea una directory di destinazione sulla workstation locale

  • Sulla workstation locale, crea una directory per i tuoi rendering:

    mkdir [RENDER_DIR]
    

    Dove [RENDER_DIR] è un percorso locale sul worker di rendering.

Utilizza gsutil per copiare grandi quantità di dati

Se stai trasferendo set di dati di grandi dimensioni, utilizza gsutil. In caso contrario, passa alla sezione successiva per utilizzare gcloud CLI. Per copiare i dati dal worker di rendering in un bucket Cloud Storage, crea un bucket Cloud Storage separato per mantenere i rendering separati dai dati degli asset.

  1. Sulla workstation locale, crea un nuovo bucket Cloud Storage:

    gsutil mb gs://[BUCKET_NAME_RENDERS]
    

    Dove [BUCKET_NAME_RENDERS] rappresenta il nome del bucket Cloud Storage per i dati sottoposti a rendering.

  2. Connettiti al worker di rendering tramite SSH:

    gcloud compute ssh [WORKER_NAME]
    
  3. Copia i dati sottoposti a rendering nel bucket:

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

    Dove:

    • [RENDERS] è un elenco di file o directory da copiare nel bucket.
  4. In un ambiente di lavoro locale, copia i file dal bucket Cloud Storage a una directory locale:

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

Utilizza gcloud CLI per copiare piccole quantità di dati

Se copi set di dati più piccoli, puoi copiarli direttamente dal worker di rendering alla workstation locale.

  • Sulla workstation locale, copia il rendering nella directory di destinazione:

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

    Dove [RENDERS] è un elenco di file o directory da copiare sulla workstation locale.

Esegui la pulizia

Per evitare che al tuo Account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo tutorial, elimina il progetto che contiene le risorse oppure mantieni il progetto ed elimina le singole risorse.

Elimina il progetto

  1. Nella console Google Cloud, vai alla pagina Gestisci risorse.

    Vai a Gestisci risorse

  2. Nell'elenco dei progetti, seleziona il progetto che vuoi eliminare, quindi fai clic su Elimina.
  3. Nella finestra di dialogo, digita l'ID del progetto e fai clic su Chiudi per eliminare il progetto.

Elimina singole risorse

  1. Elimina l'istanza:
    gcloud compute instances delete INSTANCE_NAME
  2. Elimina il bucket:
    gcloud storage buckets delete BUCKET_NAME

Passaggi successivi