Oefening: Platformoverschrijdende DeepStream-containerinstallatiekopieën bouwen en publiceren

Voltooid

Het DeepStream 6.0-pakket container-builder kan platformoverschrijdende containerinstallatiekopieën bouwen. U moet deze mogelijkheid gebruiken om een container te bouwen die compatibel is met de ARM64-CPU op uw ingesloten NVIDIA-doelapparaat.

Voer de volgende stappen uit op een op x86 gebaseerde hostcomputer waarop DeepStream 6.0 Graph Composer is geïnstalleerd met Docker. In de stappen wordt ervan uitgegaan dat u de stappen hebt voltooid die worden beschreven in Het instellen en configureren van een NVIDIA DeepStream-ontwikkelomgeving en inleiding tot NVIDIA DeepStream Graph Composer met Azure.

  1. Om te beginnen moet u de qemu-user-static en binfmt-support pakketten installeren. De pakketten zijn afhankelijkheden die nodig zijn voor platformoverschrijdende ondersteuning in Docker. Voer de volgende opdrachten uit in een terminal op de host om deze stap uit te voeren:

    sudo apt install qemu-user-static binfmt-support
    
  2. Wanneer de installatie is voltooid, voert u de volgende opdrachten uit op de host om platformoverschrijdende ondersteuning in Docker te configureren:

    sudo docker run --rm --privileged multiarch/qemu-user-static --reset --persistent yes --credential yes 
    
  3. Vervolgens maakt u een container-builder configuratie die een op ARM64 gebaseerde container produceert ter ondersteuning van de deepstream-test4-grafiek. Ga eerst naar /opt/nvidia/deepstream/deepstream/reference_graphs/deepstream-test4 en open het ds_test4_container_builder_jetson.yaml bestand met:

        cd /opt/nvidia/deepstream/deepstream/reference_graphs/deepstream-test4
        sudo vi ds_test4_container_builder_jetson.yaml
    

    De inhoud van het ongewijzigde ds_test4_container_builder_jetson.yaml bestand wordt hieronder weergegeven:

        %YAML 1.2
        ################################################################################
        # Copyright (c) 2021, NVIDIA CORPORATION. All rights reserved.
        #
        # NVIDIA Corporation and its licensors retain all intellectual property
        # and proprietary rights in and to this software, related documentation
        # and any modifications thereto.  Any use, reproduction, disclosure or
        # distribution of this software and related documentation without an express
        # license agreement from NVIDIA Corporation is strictly prohibited.
        #
        ################################################################################
        ---
        # final stage
        unique_stage: final_image
        base_image: auto
        stage_model: clean_stage
    
        local_copy_files:
        - src: "/opt/nvidia/graph-composer/graph_composer-1.0.0_arm64.deb"
          dst: "/tmp/"
        - src: "parameters.yaml"
          dst: "/workspace/deepstream-test4/" # ends with '/' is folder
    
        custom_runs:
         - "apt install -y /tmp/graph_composer-1.0.0_arm64.deb && rm -rf /tmp/graph-composer-1.0.0_arm64.deb"
    
        work_folder: /workspace/deepstream-test4/
    
        env_list:
          PATH: "/opt/nvidia/graph-composer/:$PATH"
          LD_LIBRARY_PATH: "/opt/nvidia/graph-composer/:$LD_LIBRARY_PATH"
          DISPLAY: ":0"
    
        # Setup entrypoint
        entrypoint:
        - "gxe"
        - "--manifest"
        - "deepstream-test4_manifest.yaml"
        - "--app"
        - "deepstream-test4.yaml,parameters.yaml"
        ---
        # Container Builder Config
        container_builder: main # required
        graph:
          graph_files: [ deepstream-test4.yaml ]
          graph_dst: /workspace/deepstream-test4/
          manifest_dst: /workspace/deepstream-test4/deepstream-test4_manifest.yaml
          ext_install_root: /workspace/deepstream-test4/
        docker_build:
            image_name: <docker-container-registry>:deepstream-test4-jetson
    

    Notitie

    Hier volgen enkele tips voor het gebruik van de vi-editor wanneer u het bestand ds_test4_container_builder_jetson.yaml bewerkt:

    • Als u de invoegmodus wilt openen, selecteert u i. Vervolgens kunt u wijzigingen aanbrengen.
    • Als u de invoegmodus wilt afsluiten en wilt terugkeren naar de normale modus, selecteert u Esc.
    • Als u het bestand wilt opslaan en afsluiten, selecteert u x en selecteert u Vervolgens Enter.
    • Als u het bestand wilt opslaan, selecteert u w en selecteert u Vervolgens Enter.
    • Als u vi wilt afsluiten, voert u Afsluiten in en selecteert u Enter.

    Noteer de laatste regel van dit bestand, omdat hiervoor een wijziging is vereist:

    image_name: <docker-container-registry>:deepstream-test4-jetson
    

    Werk deze sectie bij om er als volgt uit te zien:

    image_name: deepstream-test4-jetson
    

    Notitie

    Als u deze sectie niet wijzigt, wordt in latere stappen geprobeerd om de platformoverschrijdende installatiekopieën te bouwen, de volgende fout: ConnectionResetError: [Errno 104] Connection reset by peer

    Houd er rekening mee dat deze specificatie gebruikmaakt van een basisinstallatiekopieën uit nvcr.io en kopieën in de deepstream-test4.yaml en parameters.yaml bestanden. Het invoerpunt van de afbeelding start de deepstream-test4-grafiek en overschrijft deze met de waarden die aanwezig zijn in parameters.yaml. Daarom moeten we dit bestand ook bijwerken voordat we de container daadwerkelijk bouwen.

  4. Ga terug naar de map van de deepstream-test4-referentiegrafieken en bewerk het bestand parameters.yaml :

    cd /opt/nvidia/deepstream/deepstream/reference_graphs/deepstream-test4
    sudo vi parameters.yaml
    

    Wijzig de waarde van msg-broker-proto-lib in /opt/nvidia/deepstream/deepstream/lib/libnvds_azure_edge_proto.so.

    Wijzig ook de waarde van msg-conv-payload-type in 1. Met deze parameter bepaalt u hoe de resulterende berichtuitvoer is opgemaakt. Als u deze parameter niet wijzigt, gebruikt de uitvoer een in code vastgelegde indeling die is opgegeven in de NVIDIA-voorbeelden. De indeling vertegenwoordigt mogelijk niet uw objectdetectieklassen als u het model bijwerkt dat wordt gebruikt in NvDsInferVideo.

    De uiteindelijke inhoud van parameters.yaml moet eruitzien als in het volgende voorbeeld:

    ################################################################################
    # Copyright (c) 2021, NVIDIA CORPORATION. All rights reserved.
    #
    # NVIDIA Corporation and its licensors retain all intellectual property
    # and proprietary rights in and to this software, related documentation
    # and any modifications thereto. Any use, reproduction, disclosure or
    # distribution of this software and related documentation without an express
    # license agreement from NVIDIA Corporation is strictly prohibited.
    #
    ################################################################################
    
    components:
    - name: nv_ds_single_src_input39..3c18
      parameters:
        uri: file:///opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h264.mp4
    name: NvDsSingleSrcInput..1b00
    ---
    components:
    - name: nv_ds_stream_mux42..36d8
      parameters:
        batch-size: 1
        height: 1080
        width: 1920
    name: NvDsStreamMux..16d8
    ---
    components:
    - name: nv_ds_msg_conv_broker61..4748
      parameters:
        msg-broker-conn-str: 127.0.0.1;9092;test-topic
        msg-broker-proto-lib: /opt/nvidia/deepstream/deepstream/lib/libnvds_azure_edge_proto.so
        msg-conv-config: /opt/nvidia/deepstream/deepstream/sources/apps/sample_apps/deepstream-test4/dstest4_msgconv_config.txt
        msg-conv-payload-type: 1
        topic: test-topic
        name: NvDsMsgConvBroker..bb00
    
  5. Bouw de platformoverschrijdende installatiekopie op de hostcomputer door de volgende opdracht uit te voeren in een terminal:

    cd /opt/nvidia/deepstream/deepstream/reference_graphs/deepstream-test4
    sudo container_builder -c ds_test4_container_builder_jetson.yaml -d /opt/nvidia/graph-composer/config/target_aarch64.yaml
    

    Nadat de code is uitgevoerd, wordt de uitvoer met het bericht Successfully tagged deepstream-test4-jetson:latest weergegeven.

  6. U kunt deze installatiekopieën nu publiceren naar het containerregister dat u in de vorige module hebt gemaakt. Voer de volgende code uit in een terminal op de host om de installatiekopie te taggen met een naam die de indeling volgt die u eerder hebt gebruikt. Gebruik <voor aanmeldingsserver> de URL van uw containerregister.

    sudo docker tag deepstream-test4-jetson <Login Server>/deepstream_test4_jetson:v1
    
  7. Als uw installatiekopie nu correct is gelabeld, pusht u de installatiekopie naar uw containerregister in Azure door de volgende opdracht uit te voeren in een terminal op de host. Gebruik <voor aanmeldingsserver> de URL van uw containerregister.

    sudo docker push <Login Server>/deepstream_test4_jetson:v1
    

Nu uw platformoverschrijdende installatiekopieën nu zijn gepubliceerd naar het Azure-containerregister, bent u klaar om uw NVIDIA embedded hardware in te richten voor de IoT Edge-runtime en deze workload te implementeren als een IoT Edge-module.