Övning – Paketera ett NVIDIA DeepStream Graph Composer-program i en containerbaserad arbetsbelastning
Du har sett hur NVIDIA DeepStream Graph Composer kan hjälpa dig att utveckla IVA-program. Nu ska vi visa hur extra verktyg kan hjälpa till att distribuera dessa program till datacenter- och gränsmiljöer.
Containerisering ger också många fördelar under utveckling och testning. Exempel:
- Konsekvens i beteendet när du kör en arbetsbelastning på homogen maskinvara.
- Inkrementella uppdateringar på grund av skiktning av filsystem, vilket kan minska tiden till distribution.
- Rensa dokumentationen om beroenden på grund av självdokumentation.
För att uppnå dessa fördelar använder du verktyget container-builder för att paketera föregående exempel som en container.
Innan du börjar måste du konfigurera ett konto med NGC-tjänsten (NVIDIA GPU Containers). Den här tjänsten är NVIDIA:s officiella lagringsplats för distribution av GPU-accelererade containrar. Din arbetsbelastning kräver åtkomst till den här lagringsplatsen för att hämta deepstream-bascontainern, som vår containerbaserade arbetsbelastning använder. Information om hur du skapar ett konto eller loggar in med ett befintligt konto finns på NVIDIA NGC-inloggningssidan.
Logga in eller skapa ett nytt konto genom att gå till NVIDIA NGC-inloggningssidan. När du har loggat in på NVIDIA NGC väljer du ditt användarnamn i det övre högra hörnet och väljer Konfigurera. Du ser följande alternativ:
Välj Hämta API-nyckel. På skärmen som visas väljer du Generera API-nyckel uppe till höger. Välj sedan Bekräfta i den resulterande prompten.
Ange autentiseringsuppgifterna för Docker-körningen genom att köra följande kommandon i en terminal på värddatorn:
sudo docker login nvcr.io
När du uppmanas att ange användarnamn anger du $oauthtoken exakt som visas. När du uppmanas att ange lösenord anger du värdet för din genererade API-nyckel. Du bör få meddelandet "Inloggningen lyckades".
Nu när du har åtkomst till nvcr.io kan du börja skapa containrar som använder basavbildningarna som tillhandahålls via NVIDIA NGC. Verktyget container-builder kan skapa avbildningar genom att förse det med en konfigurationsfil. Du använder ett av exemplen i referensdiagrampaketet.
Om du vill anropa containerbyggaren för att paketera deepstream-test1-programmet kör du följande kommandon på värddatorn:
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
När det har slutförts bör du se utdata som innehåller meddelandet "Har taggats deepstream_test1_dgpu:senaste".
Kommentar
Om du får felet "docker.errors.DockerException" när du kör föregående kommandon kan det tyda på att du inte har Docker-körningen installerad på värddatorn. Du kan fortsätta genom att läsa anvisningarna i avsnittet "Installera NVIDIA DeepStream Graph Composer Dependencies" i den här modulen om hur du installerar Docker.
Kommentar
Om du får "docker.errors.BuildError: unauthorized: authentication required" anger det här meddelandet att du kanske inte har autentiserat ditt NVIDIA NGC-konto för användning med Docker korrekt.
Innan du kör den här containerbaserade arbetsbelastningen måste du bevilja åtkomst till X11-visningsmiljön när den körs från en container på grund av arbetsbelastningen med hjälp av en utdatamottagare av typen EGL (typ = 2).
Kör följande kommandon från en terminal på värddatorn för att aktivera åtkomst till X11-tjänsterna:
sudo xhost +
Bekräfta att den containerbaserade arbetsbelastningen körs som förväntat genom att köra följande kod i en terminal på värddatorn:
sudo docker run -it --rm --gpus all -v /tmp/.X11-unix/:/tmp/.X11-unix/ -e DISPLAY=:0 deepstream_test1_dgpu
Det här kommandot startar en instans av containeravbildningen
deepstream_test1_dgpu
och ger den åtkomst till all tillgänglig GPU-maskinvara på datorn samtidigt som den ger åtkomst till X11-socketen och den aktuellaDISPLAY
. Du bör se utdata som liknar den tidigare körningen som anropades med hjälpexecute_graph.sh
av .
Nu är du redo att publicera din fungerande containerbaserade arbetsbelastning i ett säkert containerregister för distribution.