1. 从零开始为什么需要一个专属的Jetson工作空间如果你刚拿到一块reComputer Jetson开发板无论是小巧的Nano、性能均衡的Orin NX还是旗舰级的AGX Orin兴奋地开机、点亮屏幕之后第一个扑面而来的问题往往不是跑通某个炫酷的AI模型而是一个更基础也更现实的问题“我该把代码、数据集、模型文件放在哪里”很多新手会习惯性地把文件随手丢在用户主目录/home/nvidia下或者直接放在根目录的某个文件夹里。这么干一两天没问题但当你开始折腾YOLOv5、YOLOv11的环境配置尝试在Docker里部署服务或者编译自定义内核时混乱就开始了。一个混乱的工作空间会带来一系列连锁反应环境依赖冲突、项目文件难以管理、系统更新或重置时数据丢失、多项目切换时路径混乱。更头疼的是Jetson平台基于ARM架构很多在x86服务器上“一键安装”的包在这里需要从源码编译编译过程中产生的临时文件、构建目录如果管理不当会迅速吞噬掉本就有限的存储空间尤其是Jetson Nano。我见过不少朋友在Jetson Nano上部署YOLOv5几次失败的尝试后/目录就红了连基本的apt操作都无法进行。因此为你的reComputer Jetson规划并建立一个结构清晰、易于维护的“工作空间”不是可有可无的“最佳实践”而是保证后续所有开发、实验、部署工作能顺利进行的基础设施。这个工作空间不仅仅是一个文件夹它是一套包含目录规范、环境隔离、数据管理、工具配置在内的系统工程。它能让你清晰地知道每一个文件的作用快速在不同项目间切换并且当系统崩溃需要重置比如搜索词里提到的“NVIDIA Jetson Orin NX 重置系统”时你的核心资产——代码、模型、配置——能安然无恙。2. 工作空间的核心架构设计与目录规划建立一个高效的工作空间第一步不是创建文件夹而是进行顶层设计。我们需要根据Jetson开发中最常见的活动来划分区域。以下是我经过多个项目迭代后总结出的一套目录结构它兼顾了通用性和Jetson平台的特殊性。我建议在/home/nvidia目录下创建一个名为workspace或你喜欢的任何名字如dev的根目录作为所有工作的起点。其核心子目录结构如下/home/nvidia/workspace/ ├── projects/ # 核心项目区 ├── datasets/ # 数据集仓库 ├── models/ # 模型仓库 ├── tools/ # 工具与脚本库 ├── environments/ # 虚拟环境/容器配置 └── logs/ # 实验日志与输出现在我们来逐一拆解每个目录的职责和具体操作。2.1projects/项目代码的沙盒这是你存放所有源代码、实验脚本的地方。关键在于每个项目独立成区互不干扰。projects/ ├── yolov5_detection/ # 一个具体的YOLOv5项目 │ ├── src/ # 项目源代码 │ ├── configs/ # 配置文件如模型参数、训练超参 │ ├── weights/ # 存放训练好的.pt权重文件可软链接到../models/ │ ├── runs/ # 训练/验证/测试的输出TensorBoard日志、预测结果图 │ └── README.md # 项目说明 ├── docker_deploy/ # 另一个项目Docker部署 │ ├── Dockerfile │ ├── docker-compose.yml │ └── app/ └── ...操作与技巧使用版本控制在每个项目根目录如yolov5_detection/初始化Git仓库。即使只是个人开发Git也能帮你追踪更改、创建实验分支。处理runs目录像YOLOv5这类框架会自动生成runs目录存放训练日志和结果。这个目录会变得非常大。我建议修改代码或通过环境变量将runs目录的路径指向/workspace/logs/yolov5_runs/实现日志的统一管理和避免污染项目目录。权重文件管理项目内的weights/文件夹最好只存放当前实验正在使用的或最新的权重。将历史权重、预训练模型统一归档到顶层的models/仓库然后在项目内使用符号链接ln -s来引用例如ln -s ../../models/yolov5s.pt weights/。2.2datasets/与models/资产仓库的管理哲学Jetson的存储空间是宝贵资源数据集和模型文件动辄几个GB必须集中管理避免重复存储。datasets/按数据集名称和版本创建子目录。例如datasets/coco2017/,datasets/custom_objects_v1/。在每个数据集目录下可以再细分为images/,labels/,annotations/等。如果使用SSD或高速SD卡作为扩展存储可以将这个目录挂载到外部存储设备上。models/这里存放所有模型文件。按框架和用途分类models/yolov5/,models/trt_engines/TensorRT引擎models/onnx/。对于同一个模型的不同版本如yolov5s_v6.0.pt,yolov5s_v6.2.pt也要清晰命名。关键经验在Jetson上从PyTorch或TensorFlow模型转换到TensorRT引擎.plan或.engine文件是提升推理速度的关键步骤。这个转换过程耗时较长且生成的引擎文件与具体的Jetson型号、CUDA版本、TensorRT版本强相关。因此务必在模型文件名中包含这些关键信息例如yolov5s_jetpack5.1.2_trt8.5.2.2_fp16.engine。这样当你升级JetPack或重置系统后能快速判断哪些引擎文件需要重新生成。2.3tools/与environments/提升效率的武器库tools/这个目录存放你积累的各种实用脚本和工具。例如setup_jetson.sh一个自动化脚本用于在新系统或重置后安装常用工具如jtop、vim、htop。fan_control.py手动控制Jetson风扇转速的脚本对Nano尤其有用。check_gpu.sh快速检查GPU状态、显存占用的脚本。download_models.py自动从云端下载常用预训练模型的脚本。 将这些工具集中管理并加入系统PATH例如在~/.bashrc中添加export PATH$PATH:/home/nvidia/workspace/tools能极大提升日常操作效率。environments/环境隔离是Python开发的基石。在Jetson上由于很多包需要编译安装污染系统Python环境是灾难性的。虚拟环境为每个项目创建独立的虚拟环境使用virtualenv或venv。将环境创建在这里例如environments/yolov5_py38/。并记录下安装所有依赖的命令pip freeze requirements.txt放在项目根目录。Docker如果你使用Docker如“jetson docker中部署”将每个服务的Dockerfile和构建上下文放在projects/下但可以将常用的Docker镜像构建脚本和docker-compose.yml模板存放在tools/docker/下。2.4logs/记录每一次实验的足迹这个目录专门存放所有应用程序、训练过程、系统监控产生的日志文件。结构化存放便于后期分析。logs/ ├── system/ # 系统日志如长期运行的GPU温度监控日志 ├── training/ # 训练日志按项目和日期分文件夹 │ └── yolov5_20231027/ │ └── events.out.tfevents... # TensorBoard文件 ├── inference/ # 推理服务的访问日志、性能日志 └── benchmarks/ # 性能测试结果使用jtop进行监控搜索词中提到了“jetson 安装jtop”。jtop是Jetson上不可或缺的系统监控工具。你可以让它以服务形式运行并将日志输出到logs/system/jtop.log用于长期观察系统在负载下的状态CPU/GPU频率、温度、功耗这对调试“jetson中的gpu在训练的时候的以致无法使用”这类问题至关重要。3. 针对高频任务的专项工作空间配置有了基础架构我们来看如何用它来高效应对搜索词中提到的那些具体任务。3.1 YOLO系列环境配置与部署YOLOv5, YOLOv11这是Jetson上最经典的应用场景。以“jetson orin nano yolo11环境配置”和“jetson nano部署yolov5”为例你的工作流应该是这样的项目初始化在projects/下创建yolo11_ortin_nano。环境隔离在environments/下创建虚拟环境yolo11_py310并激活。代码管理克隆YOLOv11官方仓库到项目src/目录。关键一步不要急着安装requirements.txt。先根据JetPack版本用apt-cache show nvidia-jetpack查看和 官方文档 确定PyTorch和TorchVision的特定版本。通常需要从NVIDIA官网下载对应的wheel文件进行安装而不是直接用pip install torch。依赖安装在安装好PyTorch后再安装YOLO的其他依赖。过程中可能会遇到需要编译的包如pycocotools确保系统已安装python3-dev等编译工具。数据准备在datasets/下准备你的数据集然后在项目内通过符号链接或修改配置文件中的路径指向它。训练与日志开始训练。通过修改代码或设置环境变量将训练生成的runs目录重定向到logs/training/yolo11_20231027/。模型转换与归档训练完成后将最好的权重文件复制到models/yolo11/下并尝试转换为TensorRT引擎引擎文件也存入models/。避坑点“jetson orin nano 编译核心 输出目录”这个搜索词可能指的是编译内核模块。如果你确实需要自定义内核强烈建议在workspace之外例如/usr/src的一个独立位置进行并确保有足够的交换空间swap。编译内核是高风险操作最好在理解了确切需求后再进行。3.2 Docker化部署对于“jetson docker中部署”工作空间的价值在于提供清晰的构建上下文和配置管理。项目结构在projects/下创建my_ai_service。Docker配置项目根目录放置Dockerfile和docker-compose.yml。Dockerfile的COPY指令应该清晰地只复制必要的项目文件src/,configs/而不是整个workspace。数据卷挂载在docker-compose.yml中通过volumes将宿主机Jetson的datasets/和models/目录挂载到容器内。这样容器内的应用可以直接访问这些资产而无需打包进镜像实现了数据与应用的解耦。日志持久化同样将容器内应用产生的日志目录挂载到宿主机的logs/inference/下。3.3 系统监控与日常维护jtop如前所述安装并配置好jtop让其日志输出到工作空间。磁盘空间监控在tools/下写一个check_disk.sh脚本定期检查/和/home/nvidia/workspace的磁盘使用情况防止空间爆满。浏览器问题搜索词中“jetson的浏览器怎么打开”是个有趣的问题。Jetson默认带有Chromium浏览器。如果遇到问题可以尝试在终端输入chromium-browser --no-sandbox注意安全风险。更佳实践是对于无头无显示器的Jetson我们通常通过SSH远程访问根本不需要在Jetson本机使用图形化浏览器。4. 工作空间的备份、迁移与灾难恢复精心搭建的工作空间是你生产力的核心必须做好备份。版本控制是关键确保projects/下的所有代码、tools/下的脚本都提交到了Git仓库可以是本地Git也可以是远程私有仓库。.gitignore文件要写好忽略模型权重、数据集、日志、虚拟环境等二进制文件和中间文件。资产备份策略代码/脚本通过Git备份。配置文件projects/*/configs/和environments/*.txt纳入Git。数据集和模型这些是“重型资产”。建议使用外部硬盘、NAS或云存储进行定期备份。可以使用rsync命令进行增量备份例如rsync -avz /home/nvidia/workspace/datasets/ /media/usb-hdd/backup/datasets/。系统重置后的恢复当你的Jetson需要“重置系统”时恢复工作流如下重新安装基础系统和JetPack。克隆你的工具脚本仓库到临时位置运行setup_jetson.sh安装基础工具。从备份中恢复workspace目录结构。根据各项目的requirements.txt或Dockerfile重新构建环境。因为模型路径可能含有绝对路径检查并更新项目配置文件中的路径引用。建立一个结构化的reComputer Jetson 工作空间初期会花费你一些时间但它带来的长期收益是巨大的清晰的思路、高效的协作即使是与自己过去的协作、可复现的实验以及面对系统故障时的从容。这不仅仅是文件管理这是嵌入式AI开发者的专业素养体现。当你养成了将所有工作都纳入这个体系下的习惯后你会发现无论是尝试最新的YOLO模型还是部署复杂的Docker服务栈都变得有条不紊事半功倍。