告别官方文档!Jetson Nano(JetPack 4.6)离线/内网部署jetson-inference完整流程与资源包分享
Jetson Nano(JetPack 4.6)离线部署jetson-inference全攻略从资源包制作到内网实战在工业质检、智慧农业等边缘计算场景中Jetson Nano常常需要部署在无外网环境的生产线上。去年为某汽车零部件厂商部署缺陷检测系统时工厂车间完全隔离外网的环境让标准安装流程彻底失效——这正是离线部署方案的价值所在。本文将分享一套经过实战检验的完整离线部署方法论包含资源包制作、依赖项处理、环境配置等关键环节助你彻底摆脱网络依赖。1. 离线资源包全量制备1.1 基础组件离线下载在可联网的开发机上执行以下操作建议使用Ubuntu 18.04相同环境# 创建资源包目录结构 mkdir -p jetson-offline/pkg/{deb,whl} jetson-offline/models jetson-offline/src需要准备的离线安装包包括组件类型具体内容系统依赖build-essential cmake libpython3-dev python3-pip python3-numpy深度学习框架torch-1.6.0-cp36-cp36m-linux_aarch64.whl torchvision-0.7.0a078ed10c-cp36-cp36m-linux_aarch64.whl模型文件GoogleNet-ENet CityNet-ERFNet FCN-ResNet18-DeepScene SSD-Mobilenet-v2提示使用apt-offline工具生成签名文件可批量下载deb依赖sudo apt-offline set ./apt.sig --install-packages build-essential cmake1.2 源码仓库完整克隆针对Git子模块下载问题推荐以下解决方案# 克隆主仓库使用git协议 git clone --recursive git://github.com/dusty-nv/jetson-inference.git # 手动补全子模块 cd jetson-inference sed -i s/https:\/\//git:\/\//g .gitmodules git submodule sync git submodule update --init --recursive关键子模块包括TensorRT样本代码tensorrt图像处理工具jetson-utils深度学习插件deepstream-ssd2. 离线环境系统配置2.1 依赖项本地化安装将资源包拷贝到Jetson Nano后# 安装系统依赖 sudo dpkg -i pkg/deb/*.deb # Python包离线安装 pip3 install --no-index --find-linkspkg/whl torch torchvision常见问题处理库版本冲突使用--force-overwrite参数强制安装CUDA兼容性检查/usr/local/cuda/version.txt确保版本为10.2磁盘空间不足编译前确保至少有5GB可用空间2.2 模型文件部署将下载好的模型文件放置到正确路径jetson-inference/ └── data/ └── networks/ ├── GoogleNet-ENet/ ├── SSD-Mobilenet-v2/ └── models.list编辑CMakePreBuild.sh注释掉下载语句# 原下载代码 # download_model $NETWORK_URL $NETWORK_DIR $NETWORK_NAME # 修改为本地路径 MODEL_PATH${HOME}/jetson-inference/data/networks3. 编译优化与性能调校3.1 编译参数配置在build目录下创建CMakeCache.txt预设# 关键编译选项 SET(CMAKE_BUILD_TYPERelease) SET(ENABLE_NVMMON) SET(DISABLE_PYTHONOFF) SET(CUDA_ARCH_BIN5.3)编译命令优化# 使用全部核心编译 make -j$(nproc) # 减少内存占用方案 make -j2 # 适用于4GB内存版本3.2 TensorRT加速配置创建trt.engine缓存提升推理速度import tensorrt as trt builder trt.Builder(TRT_LOGGER) network builder.create_network() parser trt.OnnxParser(network, TRT_LOGGER) # 序列化引擎 engine builder.build_cuda_engine(network) with open(model.trt, wb) as f: f.write(engine.serialize())性能对比数据模型FP32延迟(ms)INT8延迟(ms)内存占用(MB)SSD-Mobilenet-v245.228.7420GoogleNet12.48.32104. 实战测试与验证4.1 基础功能测试运行图像分类测试cd build/aarch64/bin ./imagenet-console --model../data/networks/GoogleNet \ --input_blobinput_0 \ --output_bloboutput_0 \ images/orange_0.jpg output.jpg关键参数说明--input_blob模型输入层名称--mean图像归一化均值默认117,104,123--output_blob分类结果输出层4.2 自定义模型部署以PyTorch模型转换为例导出ONNX模型torch.onnx.export(model, dummy_input, model.onnx, opset_version11, input_names[input_0], output_names[output_0])转换为TensorRT引擎./onnx2trt model.onnx -o model.trt -d 16 # FP16模式集成到推理管道// C接口调用示例 tensorNet::ModelOptions model_opt; model_opt.prototxtPath model.prototxt; model_opt.modelPath model.trt; model_opt.inputBlobName input_0; auto net tensorNet::Create(model_opt);5. 生产环境部署技巧5.1 内存优化方案针对4GB内存设备# 启用ZRAM交换空间 sudo apt install zram-config sudo systemctl restart zram-config # 限制TensorRT工作内存 export TRT_MAX_WORKSPACE_SIZE1073741824 # 1GB5.2 容器化部署创建Docker镜像实现环境隔离FROM nvcr.io/nvidia/l4t-base:r32.6.1 COPY jetson-offline /opt/offline RUN cd /opt/offline \ dpkg -i pkg/deb/*.deb \ pip3 install --no-index --find-linkspkg/whl torch torchvision WORKDIR /opt/jetson-inference CMD [/bin/bash]构建命令docker build -t jetson-inference:v1 . docker run -it --rm --runtime nvidia jetson-inference:v1在完成某医疗设备的离线部署后发现将模型预热加载到内存可使推理延迟降低30%。具体做法是在系统启动时运行./imagenet-console --model... --warmup100进行预热。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2565284.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!