Oefening: Platformoverschrijdende DeepStream-containerinstallatiekopieën bouwen en publiceren
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.
Om te beginnen moet u de
qemu-user-static
enbinfmt-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
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
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 hetds_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
enparameters.yaml
bestanden. Het invoerpunt van de afbeelding start de deepstream-test4-grafiek en overschrijft deze met de waarden die aanwezig zijn inparameters.yaml
. Daarom moeten we dit bestand ook bijwerken voordat we de container daadwerkelijk bouwen.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
in1
. 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 inNvDsInferVideo
.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
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.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
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.