Esercizio: Creare un pacchetto di un'applicazione del Graph Composer NVIDIA DeepStream in un carico di lavoro in contenitori

Completato

Si è visto come Graph Composer NVIDIA DeepStream può aiutare a sviluppare applicazioni IVA. Ora verrà illustrato come gli strumenti aggiuntivi possono aiutare a distribuire queste applicazioni nel data center e negli ambienti perimetrali.

La containerizzazione offre anche molti vantaggi durante lo sviluppo e il test. Alcuni esempi:

  • Coerenza del comportamento quando si esegue un carico di lavoro su hardware omogeneo.
  • Aggiornamenti incrementali a causa della disposizione su livelli del file system, che può ridurre il tempo di distribuzione.
  • Documentazione chiara delle dipendenze a causa della natura di autodocumentazione.

Per ottenere questi vantaggi, si userà lo strumento generatore di contenitori per creare un pacchetto dell'esempio precedente come contenitore.

  1. Prima di iniziare, è necessario configurare un account con il servizio NGC (NVIDIA GPU Containers). Questo servizio è il repository ufficiale di NVIDIA per la distribuzione di contenitori con accelerazione GPU. Il carico di lavoro richiede l'accesso a questo repository per eseguire il pull nel contenitore di base DeepStream, che verrà usato dal carico di lavoro in contenitori. Per creare un account o accedere con un account esistente, vedere la pagina di accesso NVIDIA NGC.

    1. Accedere o creare un nuovo account passando alla pagina di accesso NVIDIA NGC. Dopo aver eseguito l'accesso a NVIDIA NGC, selezionare il nome utente nell'angolo in alto a destra e selezionare Configura. Verranno visualizzate le opzioni seguenti:

      Screenshot that shows the NGC setup process.

    2. Selezionare Ottieni chiave API. Nella schermata visualizzata selezionare Genera chiave API in alto a destra. Selezionare quindi Conferma nel prompt risultante.

      Screenshot that shows the NGC Generate API Key screen.

    3. Fornire le credenziali al runtime Docker eseguendo i comandi seguenti in un terminale nel computer host:

      sudo docker login nvcr.io
      
    4. Quando viene richiesto il nome utente, immettere $oauthtoken esattamente come illustrato. Quando viene richiesta la password, immettere il valore della chiave API generata. Verrà visualizzato il messaggio "Accesso riuscito".

  2. Dopo avere eseguito l'accesso a nvcr.io, è possibile iniziare a creare contenitori che usano le immagini di base fornite tramite NVIDIA NGC. Lo strumento generatore di contenitori può creare immagini fornendo un file di configurazione. Si userà uno degli esempi forniti nel pacchetto dei grafi di riferimento.

    1. Per richiamare il generatore di contenitori per creare un pacchetto dell'applicazione deepstream-test1, eseguire i comandi seguenti nel computer host:

      cd /opt/nvidia/deepstream/deepstream-6.0/reference_graphs/deepstream-test1
      sudo container_builder -c ds_test1_container_builder_dgpu.yaml -d /opt/nvidia/graph-composer/config/target_x86_64_cuda_11_4.yaml
      
    2. Al completamento, verrà visualizzato l'output contenente il messaggio in cui viene confermata la corretta assegnazione del tag "Successfully tagged deepstream_test1_dgpu:latest".

    Nota

    Se viene visualizzato un errore "docker.errors.DockerException" quando si eseguono i comandi precedenti, ciò potrebbe indicare che il runtime Docker non è installato nel computer host. Per procedere, vedere le istruzioni nella sezione "Installare le dipendenze di Graph Composer NVIDIA DeepStream" di questo modulo su come installare Docker.

    Nota

    Se viene visualizzato "docker.errors.BuildError: non autorizzato: autenticazione richiesta", questo messaggio indica che potrebbe non essere stata eseguita correttamente l'autenticazione dell'account NVIDIA NGC per l'uso con Docker.

  3. Prima di eseguire questo carico di lavoro in contenitori, è necessario concedere l'accesso all'ambiente di visualizzazione X11 quando viene eseguito da un contenitore a causa del carico di lavoro usando un sink di output di tipo EGL (tipo = 2).

    Eseguire i comandi seguenti da un terminale nel computer host per abilitare l'accesso ai servizi X11:

    sudo xhost +
    
  4. Verificare che il carico di lavoro in contenitori venga eseguito come previsto eseguendo il codice seguente in un terminale nel computer host:

    sudo docker run -it --rm --gpus all -v /tmp/.X11-unix/:/tmp/.X11-unix/ -e DISPLAY=:0 
    deepstream_test1_dgpu
    

    Questo comando avvia un'istanza dell'immagine del contenitore deepstream_test1_dgpu e le fornisce l'accesso a tutto l'hardware GPU disponibile nel computer, fornendo anche l'accesso al socket X11 e all'oggetto DISPLAY corrente. Verrà visualizzato l'output simile all'esecuzione precedente richiamata tramite execute_graph.sh.

    Screenshot that shows the NVIDIA DeepStream Graph Composer Test1 running.

È ora possibile pubblicare il carico di lavoro in contenitori in un registro contenitori sicuro per la distribuzione.