【学习AI-相关路程-工具使用-自我学习-jetsoncudapytorch-开发工具尝试-基础样例 (3)】

news2024/11/25 5:32:38

【学习AI-相关路程-工具使用-自我学习-jetson&cuda&pytorch-开发工具-安装尝试-基础样例 (3)】

  • 1、前言
  • 2、环境说明
  • 3、自我总结
    • (1)了解整体过程
        • 阶段 1: 硬件设置
        • 阶段 2: 软件准备
        • 阶段 3: 数据准备
        • 阶段 4: 模型设计和训练
        • 阶段 5: 优化和部署
        • 阶段 6: 应用集成
        • 阶段 7: 监控和维护
    • (2)pytorch了解
    • (3)安装流程了解
  • 4、实验过程
    • (1)自己系统确认
        • 1.查询JetPack版本
        • 2. 查看系统文件
        • 3. 使用 Jetson Stats 工具
    • (2)问题解决-设置环境路径
    • (2)下载工具
    • (3)安装环境-PyTorch依赖
    • (4)代码编写
    • (6)实验过程中的记录
  • 5、实验代码
  • 6、细节部分
      • 1、官方博客
      • 2、插线和硬件
  • 7、总结

1、前言

我们之前在ubuntu上安装了cuda和visco,并且尝试了一个demo文件,并且调用相应cuda库,相当编写了一个hello world 一样。

本篇,我们在jetson orin NX 上也同样运行下,但是不一样的是,我们安装pytorch,通过网上了解到,这是一个深度学习框架,我们之后部署也要在jetson,或者至少不会部署在我们使用的,研发那台电脑上。但jetson本身可以看做一个电脑,相关也可以进行实验。

2、环境说明

我们使用是还是要注意环境,环境不一样,很多指令和配置都可能需要调整,请根据自己实际jetson进行调试,当然自己也不好说配置一定是最新的,但想要说明的是,可能环境不一样,配置情况可能就不同,但思路应该差不多。
在这里插入图片描述

3、自我总结

(1)了解整体过程

自己也是一点点学的,也在探索中,不敢说自己的整个流程全对,但是安装自己规划的步骤走,至少有个方向,我们开始配置环境,其实就是在打地基,然后一定的,去做,去找知识开,但是学习理论和实际操作可能完全不一样,这里自己上网查了一些知识,请教了一些人,总结以下流程,让你有个大概认知。

实际对于AI的应用,可能和学习AI完全不一样。学习知识,是了解AI内部运作原理,而实际调试的时候,是另一条路如下,之前其实就是做了一部分,我们一点点学习吧。

阶段 1: 硬件设置
  • 准备Jetson Orin设备:确保设备有适当的电源和散热设施。
  • 安装操作系统:通常使用NVIDIA提供的JetPack SDK来安装一个预配置的Linux操作系统。
  • 连接必要的外设:包括显示器、键盘、鼠标等。
  • 网络连接:为设备配置网络连接,以便下载软件和更新。
阶段 2: 软件准备
  • 更新系统和驱动:确保所有的系统软件和GPU驱动都是最新的。
  • 安装开发工具:安装Python、CUDA Toolkit、cuDNN等必要的开发工具。
  • 安装深度学习框架:根据你的选择安装TensorFlow, PyTorch或其他深度学习框架。

本篇,我们就是在这个安装深度学习框架阶段,至于之后,也需要慢慢来,一点点学习。

阶段 3: 数据准备
  • 数据收集:收集大量电脑开机和非开机的图像数据。
  • 数据标注:如果你正在做对象检测,需要在图像中标注出开机界面的位置。
  • 数据预处理:格式化图像数据,如调整大小,归一化像素值等。
阶段 4: 模型设计和训练
  • 选择模型架构:可以使用预训练的模型如MobileNet, VGG, ResNet等作为起点。
  • 模型训练:使用收集的数据训练CNN模型。这可能需要几天时间,具体取决于数据集的大小和模型的复杂性。
  • 模型评估:使用测试数据集评估模型的性能。
阶段 5: 优化和部署
  • 模型优化:为了在Jetson Orin上获得更好的性能,可以使用TensorRT来优化模型。
  • 部署模型:将优化后的模型部署到Jetson Orin设备上。
  • 创建推理脚本:编写脚本来加载模型,处理输入图像,并输出识别结果。
阶段 6: 应用集成
  • 实时测试:连接到实际的电脑屏幕,使用摄像头实时测试模型的识别效果。
  • 性能调优:根据实际的应用场景调整模型参数,优化推理时间和准确率。
阶段 7: 监控和维护
  • 监控系统:监控模型的实时性能,确保稳定运行。
  • 模型更新:定期重新训练和更新模型以适应新的数据和场景。

(2)pytorch了解

这里问了自己伙伴,虽然网上有很多学习框架,但是推荐使用pytorch,大家用这个还挺多的,所以没什么可说的,本次也是安装pytorch。
在这里插入图片描述如下是维基百科显示的,可以先了解下。

连接地址:https://zh.wikipedia.org/zh-cn/PyTorch
在这里插入图片描述
然后我们可以去官网再去了解下。
连接地址:https://pytorch.org/

在这里插入图片描述

(3)安装流程了解

不过我们其实没有从pytorch官网上下载,而是在英伟达官网上找的pytorch,其实这部分,英伟达已经有现成的包,专门为jeston 设计的,这极大方便了我们。
链接:https://developer.nvidia.com/embedded/downloads#?search=pytorch

在这里插入图片描述
当然你没有登录的话,直接点击链接,进入界面可能和我这个不太一样,可能是如下样子的,多点点就找到了。
在这里插入图片描述

整个按照流程,其实你经过了ubuntu那么繁琐的尝试后,你基本大致了解,比ubuntu要简单,相当于套件一样,安装更方便,或者还是那一套流程,如下就在 >>> 4、实验过程中细说了。

4、实验过程

在经历过使用SDK对jeston 刷机和cuda安装后,我们还需要一些配置的,对这块不了解,可以看看之前文章。

【学习AI-相关路程-工具使用-NVIDIA SDK MANAGER==NVIDIA-jetson刷机工具安装使用 】

(1)自己系统确认

我们都是需要先确认自己的设备能哪个版本,之后再去找对应的版本安装的,否则直接安装最高版本,是不行的。使用如下命令,我们可以获取一些信息。

1.查询JetPack版本

输入以下命令来查询安装的JetPack相关包的版本:

dpkg -l | grep nvidia-jetpack

这个指令的目的是,列出与JetPack相关的所有包,以及它们的版本信息。一般来说会包括一个总体的JetPack元包,显示了整体的JetPack版本

2. 查看系统文件

不确定是不是所有系统,都可以通过查看系统文件来获取,但确实看到网上说使用如下指令,这个指令确实可用获取信息,但应该无法得到想要的信息感觉,如下指令。

cat /etc/nv_tegra_release
3. 使用 Jetson Stats 工具

如果你的设备安装了Jetson Stats工具,那么有个方便的方法来查看JetPack以及其他硬件和软件的详细信息
没有的话可以先安装下。

sudo -H pip install jetson-stats

运行指令如下

jetson_release

上述几种办法,均可以可以去确定版本,但第三种,给到信息是最多的。

在这里插入图片描述
如上,上图就是我试验是的截图,其中 Jetpack 5.1.2这条信息,就是我需要的,可以帮我们确定版本的信息,不过还要去官方核对下,如第三种方式,直接告诉你了。
1在这里插入图片描述

(2)问题解决-设置环境路径

(1)我们虽然使用工具SDK给jetson刷好了,但是实际上,还需要一些配置,否则在使用如下指令的时候,就会出现找不到命令的报错,其实就是找不到。

nvcc --version

在这里插入图片描述
(2)我们可以去如下路径确认下,到底有没有安好cuda,如下图,这里还是有的.

在这里插入图片描述
(3)那么一般来说,我们都是缺少环境路径,在文件~/.bashrc 内添加如下内容。
这里注意,根据自己实际cuda版本更改。

export PATH=/usr/local/cuda-11.x/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-11.x/lib64:$LD_LIBRARY_PATH

(4)如下在最后一行进行添加。
在这里插入图片描述
(5)如下,添加完,在用指令运行下。相关指令放在下边了

sudo vim ~/.bashrc  //打开编辑~/.bashrc 文件
source ~/.bashrc    //允许在当前shell环境中执行文件中的命令。它对于加载环境变量、定义函数和别名、执行初始化脚本等任务非常有用。
nvcc --version

如下为自己执行过程
在这里插入图片描述
(6)当然我们也有其它方式确认环境变量

echo $PATH
echo $LD_LIBRARY_PATH

(2)下载工具

之后我们去英伟达官网下载对应版本。需要先登录。
(1)链接:https://developer.nvidia.com/embedded/downloads#?search=pytorch

在这里插入图片描述
这里还可以看到其他版本,如下图,我们只需要找到合适我们的版本就可以了。
在这里插入图片描述

(3)安装环境-PyTorch依赖

在下载的时候,我们需要先配置一些环境,给pytorch的依赖。

(1)我们可用先更新下,如下指令

sudo apt-get update
sudo apt-get upgrade

(2)然后安装pytorch依赖

sudo apt-get install python3-pip libopenblas-base libopenmpi-dev libomp-dev

如下图为自己执行过程。
在这里插入图片描述

(2)增加交换空间
看到网上说,jetson设备的内存可能不足以处理一些大型编译任务,因此要增加交换空间,为以下指令。

sudo fallocate -l 8G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

在这里插入图片描述
(3)长久有效,增加指令如下
配合“增加交换空间”长久使用,输入以下指令。

echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

(4)配置好后,并且下载好了后,如下指令安装。

pip3 install torch-2.1.0a0+41361538.nv23.06-cp38-cp38-linux_aarch64.whl

(4)代码编写

之后就是代码编写,如下,我们找个简单代码,使用类似python脚本一样的方式运行。创建文件什么的这里不惜细讲了。

import torch
import torch.nn as nn

def test_pytorch():
    # 创建一个简单的线性层
    linear = nn.Linear(10, 5)
    # 创建一个随机数据张量,用于模型输入
    inputs = torch.randn(1, 10)
    # 执行前向传递
    outputs = linear(inputs)
    print("Outputs of the linear layer:", outputs)

if __name__ == "__main__":
    test_pytorch()

(2)如下是代码调试过程,编写文件,再使用python3运行

wjl-linux@ubuntu:~/Desktop/cuda-pytorch-work$ vim dome1_pytorch.py

[1]+  Stopped                 vim dome1_pytorch.py
wjl-linux@ubuntu:~/Desktop/cuda-pytorch-work$ vim dome1_pytorch.py
wjl-linux@ubuntu:~/Desktop/cuda-pytorch-work$ python3 dome1_pytorch.py 
tensor([[ 0.3456, -0.1262, -0.5047,  0.8887, -0.7778]],
       grad_fn=<AddmmBackward0>)
wjl-linux@ubuntu:~/Desktop/cuda-pytorch-work$ 
wjl-linux@ubuntu:~/Desktop/cuda-pytorch-work$ ls
dome1_pytorch.py  dome-pytorch
wjl-linux@ubuntu:~/Desktop/cuda-pytorch-work$ cd dome-pytorch/
wjl-linux@ubuntu:~/Desktop/cuda-pytorch-work/dome-pytorch$ ls
wjl-linux@ubuntu:~/Desktop/cuda-pytorch-work/dome-pytorch$ vim dome2_pytorch.py
wjl-linux@ubuntu:~/Desktop/cuda-pytorch-work/dome-pytorch$ python3 dome2_pytorch.py 
Outputs of the linear layer: tensor([[ 0.6604, -0.0789, -1.4292,  0.3906, -0.4852]],
       grad_fn=<AddmmBackward0>)
wjl-linux@ubuntu:~/Desktop/cuda-pytorch-work/dome-pytorch$

以下为整改截图。
在这里插入图片描述

(6)实验过程中的记录

整改过程,其实也尝试了很多东西,没有说一步到位的,都是不断反复尝试指令,如下为指令记录。

//环境配置部分
  540  nvcc --versin
  541  nvcc --version
  542  find / -name deviceQuery
  543  sudo nvcc -V
  544  clear
  545  nvcc --version
  546  ls /usr/local/cuda
  547  nano ~/.bashrc
  548  cat ~/.bashrc
  549  sudo vim ~/.bashrc
  550  source ~/.bashrc
  551  nvcc --version
  552  sudo apt-get update
  553  sudo apt-get upgrade
  554  sudo apt-get install python3-pip libopenblas-base libopenmpi-dev libomp-dev
  555  sudo fallocate -l 8G /swapfile
  556  sudo chmod 600 /swapfile
  557  sudo mkswap /swapfile
  558  sudo swapon /swapfile
  559  echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
  560  dpkg -l | grep nvidia-jetpack
  561  cat /etc/nv_tegra_release
  562  clear
  563  dpkg -l | grep nvidia-jetpack
  564  cat /etc/nv_tegra_release
  565  sudo -H pip install jetson-stats
  566  jetson_release
  567  nvcc-smi
  568  nvidia-smi
  569  history

//安装pytorch部分
  535  nvcc -version
  536  nvcc --version
  537  nvcc --version
  538  pip3 install torch-2.1.0a0+41361538.nv23.06-cp38-cp38-linux_aarch64.whl 
  539  python3 -c "import torch; print(torch.__version__); print('CUDA available:', torch.cuda.is_available())"
  540  hisory
  541  history

//测试代码脚本部分
 538  vim dome1_pytorch.py
  539  python3 dome1_pytorch.py 
  540  ls
  541  cd dome-pytorch/
  542  ls
  543  vim dome2_pytorch.py
  544  python3 dome2_pytorch.py

(2)以下为截图
在这里插入图片描述

5、实验代码

本次代码还是比较简单的,如有需要在下边自取吧。
代码链接:https://download.csdn.net/download/qq_22146161/89338813

6、细节部分

1、官方博客

大部分情况,我们都可以去官方博客去找。

链接:https://forums.developer.nvidia.com/c/agx-autonomous-machines/jetson-embedded-systems/70

在这里插入图片描述

2、插线和硬件

我们在调试软件的时候,要保证我们硬件是可用调试,没有问题呢的,如果硬件不稳定,调试的时候都是问题。

7、总结

一步步探索与前进。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1694281.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在Spring 当中存在的八大模式

在Spring 当中存在的八大模式 文章目录 在Spring 当中存在的八大模式每博一文案1. 简单工厂模式2. 工厂方法模式3. 单例模式4. 代理模式5. 装饰器模式6. 观察者模式7. 策略模式8. 模板方法模式最后&#xff1a; 每博一文案 我认为 “知世故而不世故” 才是真正意义上的成熟。回…

Python功能强大的构建系统库之buildout使用详解

概要 在软件开发过程中,管理项目依赖和构建环境是一项复杂而重要的任务。Python buildout库是一种强大的构建系统,能够帮助开发者自动化地管理项目的依赖、生成可重复的开发环境,并简化部署过程。本文将详细介绍buildout库,包括其安装方法、主要特性、基本和高级功能,以及…

csdn的insCode怎么用IDE和linux终端

1.进入insCode&#xff0c;选择工作台 找到我的项目&#xff0c;没有项目的话可以新建一个。 选择在IDE中编辑&#xff0c;界面如下&#xff1a; 右边有个终端&#xff0c;点击即可出现linux的xterm终端。

区块链技术和应用

文章目录 前言 一、区块链是什么&#xff1f; 二、区块链核心数据结构 2.1 交易 2.2 区块 三、交易 3.1 交易的生命周期 3.2 节点类型 3.3 分布式系统 3.4 节点数据库 3.5 智能合约 3.6 多个记账节点-去中心化 3.7 双花问题 3.8 共识算法 3.8.1 POW工作量证明 总结 前言 学习长…

算法:树状数组

文章目录 面试题 10.10. 数字流的秩327. 区间和的个数315. 计算右侧小于当前元素的个数 树状数组可以理解一种数的存储格式。 面试题 10.10. 数字流的秩 假设你正在读取一串整数。每隔一段时间&#xff0c;你希望能找出数字 x 的秩(小于或等于 x 的值的个数)。 请实现数据结构…

Volatile的内存语义

1、volatile的特性 可见性&#xff1a;对一个volatile变量的读&#xff0c;总能够看到任意一个线程对这个volatile变量的写入。 原子性&#xff1a;对任意单个volatile变量的读/写具有原子性&#xff0c;但类似于volatile这种复合操作不具有原子性。 接下来我们用程序验证。…

如何用Java实现SpringCloud Alibaba Sentinel的熔断功能?

在Java中使用Spring Cloud Alibaba Sentinel实现熔断功能的步骤如下&#xff1a; 添加依赖 在项目的pom.xml文件中添加Spring Cloud Alibaba Sentinel的依赖&#xff1a; <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud…

强烈推荐 20.7k Star!企业级商城开源项目强烈推荐!基于DDD领域驱动设计模型,助您快速掌握技术奥秘,实现业务快速增长

更多资源请关注纽扣编程微信公众号 1 项目简介 商城是个从零到一的C端商城项目&#xff0c;包含商城核心业务和基础架构两大模块,推出用户、消息、商品、订单、优惠券、支付、网关、购物车等业务模块&#xff0c;通过商城系统中复杂场景&#xff0c;给出对应解决方案。使用 …

Linux_应用篇(08) 信号-基础

本章将讨论信号&#xff0c;虽然信号的基本概念比较简单&#xff0c;但是其所涉及到的细节内容比较多&#xff0c;所以本章篇幅也会相对比较长。 事实上&#xff0c;在很多应用程序当中&#xff0c;都会存在处理异步事件这种需求&#xff0c;而信号提供了一种处理异步事件的方法…

使用VirtualBox+vagrant创建CentOS7虚拟机

1.VirtualBox 1.1.什么是VirtualBox VirtualBox 是一款开源虚拟机软件。VirtualBox 是由德国 Innotek 公司开发&#xff0c;由Sun Microsystems公司出品的软件&#xff0c;使用Qt编写&#xff0c;在 Sun 被 Oracle 收购后正式更名成 Oracle VM VirtualBox。 1.2.下载Virtual…

优先级队列(堆)的实现

1.什么是优先级队列 队列是一种先进先出(FIFO)的数据结构&#xff0c;但有些情况下&#xff0c;操作的数据可能带有优先级&#xff0c;一般出队 列时&#xff0c;可能需要优先级高的元素先出队列&#xff0c;该中场景下&#xff0c;使用队列显然不合适&#xff0c;比如&#x…

Atlas 200I DK A2安装MindSpore Ascend版本

一、参考资料 mindspore快速安装 二、重要说明 经过博主多次尝试多个版本&#xff0c;Atlas 200I DK A2无法安装MindSpore Ascend版本。 也有其他博主测试&#xff0c;也未尝成功&#xff0c;例如&#xff1a;【MindSpore易点通漫游世界】在Atlas 200I DK A2 (CANN6.2.RC2)…

【汽车之家注册/登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 1. 暴力破解密码&#xff0c;造成用户信息泄露 2. 短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉 3. 带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造…

构建php环境

目录 php简介 官网php安装包 选择下载稳定版本 &#xff08;建议使用此版本&#xff0c;文章以此版本为例&#xff09; 安装php解析环境 准备工作 安装依赖 zlib-devel 和 libxml2-devel包。 安装扩展工具库 安装 libmcrypt 安装 mhash 安装mcrypt 安装php 选项含…

Java——简易图书管理系统

本文使用 Java 实现一个简易图书管理系统 一、思路 简易图书管理系统说白了其实就是 用户 与 图书 这两个对象之间的交互 书的属性有 书名 作者 类型 价格 借阅状态 而用户可以分为 普通用户 管理员 使用数组将书统一管理起来 用户对这个数组进行操作 普通用户可以进…

BUUCTF靶场[Web] [极客大挑战 2019]Havefun1、[HCTF 2018]WarmUp1、[ACTF2020 新生赛]Include

[web][极客大挑战 2019]Havefun1 考点&#xff1a;前端、GET传参 点开网址&#xff0c;发现是这个界面 点击界面没有回显&#xff0c;老规矩查看源代码&#xff0c;看到以下代码 代码主要意思为&#xff1a; 用get传参&#xff0c;将所传的参数给cat&#xff0c;如果catdog…

c++中的命名空间与缺省参数

一、命名空间 1、概念&#xff1a;在C/C中&#xff0c;变量、函数和后面要学到的类都是大量存在的&#xff0c;这些变量、函数和类的名称将都存 在于全局作用域中&#xff0c;可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化&#xff0c; 以避免命名冲突或…

【介绍下Pwn,什么是Pwn?】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

汽车R155法规中,汽车获取到的VTA证书,E后面的数字表示什么意思?

标签&#xff1a; 汽车R155法规中&#xff0c;汽车获取到的VTA证书&#xff0c;E后面的数字表示什么意思&#xff1f;&#xff1b; 汽车&#xff1b;VTA认证; 有些厂商汽车拿到的VTA证书上面写着E9&#xff0c; 有些厂商汽车拿到的VTA证书上面写着E5&#xff0c;E9与E5有什么差…

华为机考入门python3--(29)牛客29-字符串加解密

分类&#xff1a;字符变换 知识点&#xff1a; 字符是字母 char.isalpha() 字符是小写字母 char.islower() 字符是数字 char.isdigit() b变C chr((ord(b) - ord(a) 1) % 26 ord(A)) 题目来自【牛客】 # 加密 def encrypt_string(s):result ""for ch…