注:等我摸完鱼再把链接补上
可以关注我的B站号工具人呵呵的个人空间,后期会考虑出视频教程,务必催更,以防我变身鸽王。
第一章 昇腾Altas 200 DK上手
第二章 下载昇腾案例并运行
第三章 官方模型适配工具使用
第四章 炼丹炉的搭建(基于Ubuntu23.04 Desktop)
第五章 Ubuntu远程桌面配置
第六章 下载yolo源码及样例运行验证
第七章 转化为昇腾支持的om离线模型
第八章 jupyter lab的使用
第九章 yolov5在昇腾上推理
第十章 yolov5在昇腾上应用
未完待续…
注:本文基于Ubuntu23.04编写,本人踩过的坑都写在这里面了,不同系统版本入口可能存在差异
我们在使用时最好不要直接用root用户,血的教训,相信我,嘎嘎刺激。
从这开始,我们要养成使用个人用户的习惯,我下面给出的内容也是按照普通用户的权限写的。
我的主机已经在“锻炼”了,所以下文用虚拟机做演示。
首先,这里是ubuntu官网,咱就说,能官网下的,真的,别去小站下了,小心p2p下崽器啊。
这里,墙裂建议使用桌面版,就大了没多少,你要真硬件吃紧,赶紧升级硬件吧。servers的分区很容易带走所有数据,血的教训。
下载慢的话可以去镜像站下载,往下找到中国的,前面几个速度都还不错。这里直接给一个清华23.04desktop的镜像地址
一般不要使用太新的系统,因为解决软件依赖真的很麻烦。截至发文,更新到23.10了。23年暑假的时候,23.04必须新建虚拟环境才能pip安装软件,我记得20和18是不用的,当时折腾死我了,那时还找不到解决方法。
所以我下面用的还是23.04去写这个教程。
8G以上的,也别太大,免得到时候引导不了。一般32和64的,没几块钱。制作启动盘的时候会清空数据。
工具挺多的,如果你以后想用这个盘做pe,那就用微pe这些工具创建启动盘,然后把下载的镜像丢进去。
但是,你要是就是为了装一个ubuntu,像大白菜,u启动这些总所周知的原因,用这些工具安装过win的就知道,我不建议使用。
最简单粗暴的方法,格式化U盘为fat32,然后把镜像解压到U盘根目录。
我也使用过Raspberry Pi Imager,嗯,就这个,真的好使。
其他的像BalenaEtcher、UltraISO也都可以。
首先,断网!断网!断网!,因为我们没有换源,系统安装的过程中会更新一些软件,服务器又在国外,你可能得等几个小时。
拔掉网线,插入上一步制作的启动盘,在BOIS中将U盘设为第一启动项,之后便会引导进入如下界面。
我们选择第一个按下回车进去,或者等待30s自动进入(如果有网络记得断掉,如果你不想睡个午觉的话)
开机后变会自动进入这个安装界面。没有跳出来的话,在桌面双击这个图标进入。
直接拉到最下面,选择中文。
一路下一步,直到这里,把这个选上,虽然后面会重新打显卡驱动。(最下面那个钩也可以选,但我不知为啥,识别不到我的网络,所以我选不了)
下一步我们来到这里,如果是是新机且一块硬盘,那么直接无脑下一步,不然建议选择第二个。
这里我是虚拟机,就随意配置一下,大家自行修改配置。建议sda1不低于128G。
然后一路下一步到时区,选择上海。
之后就是设置账户,注意两点
开启自动登录不然每次开机后都需要物理键盘本地输入密码后才能使用远程桌面,设置一个简单的密码不要折磨自己!!!不然在系统图形化界面中不允许设置简单密码,安装软件,改配置,重启服务等都需要输入这个密码。
又是无脑下一步,接着去和杯咖啡吧。
说来也奇挂,我用vm17到最后一步安装时,点安装直接就完成了,重点是卸载了引导光盘,能成功启动,也就是确实安装完了。
首先打开软件更新,点这里,选择其他
如果你有特殊的需求那就选那个,不然直接让系统自行选择就好了
这里的更新记得更改下,如果你不想一觉醒来不兼容了的话。
关闭窗口后,等待系统自动更新软件源就可以了。一般5-10分钟吧。
在主文件夹下执行
mkdir .pip
cd .pip
vim pip.conf
输入以下内容
[global]
index-url = http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host = mirrors.aliyun.com
到这里如果使用pip install命令的话应该会报错,大意是需要新建一个虚拟环境,这个等下一节中我们安装anaconda之后就可以了。
这个应该是算一个比较好用的应用管理器,能方便的安装和删除软件。
在ubuntu最近的长期支持版里已经预装了新立得软件包管理器。没用的话,可以通过这个命令安装。
sudo apt-get install synaptic
首先使用Ubuntu主机(win访问会直接下载win版的)访问官网下载页面,点击下载,你会得到一个.sh的文件。
直接右键作为程序运行或者在终端中输入:
bash Anaconda3-2023.07-2-Linux-x86_64.sh #这里不要用root用户运行,不然使用起来麻烦
然后就是疯狂回车,看完许可。当然,你可以直接按Q跳过
直到出现这个问题
Do you accept the license terms? [yes | no]
默认是no,别再傻乎乎的按回车了,输入yes
之后等待,碰到yes|no 的就输入yes,其他的直接回车,比如安装路径。
vim .bashrc
#在最下面添加
export PATH="/home/ai/anaconda3/bin:$PATH" #如果保持默认路径的话,你只需要修改用户名
source ~/.bashrc
如果你的conda下载异常,请先检查源,然后删除重新添加
conda config --show channels # 查看镜像源
conda config --remove-key channels #删除添加源,恢复默认源
全新安装的跳过上一步,直接添加镜像源
#添加镜像源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/pro
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
#终端显示包从哪个channel下载,以及下载地址是什么
conda config --set show_channel_urls yes
这里可以在base环境,但我不建议。主要是其他环境造坏了,重建就行,base就有点麻烦了。
conda create --name origin python=3.10.0 #创建名为origin的虚拟环境,并同时安装python3.10.0,cann有版本要求
conda activate origin #进入源环境
pip install --upgrade pip #更新pip
#接下来就安装一些你常用的包就可以了。
这里也给出一些conda常用指令
conda info -e #查看当前虚拟环境列表
conda create --name a --clone origin #从origin复制一个名为a的环境
conda activate a #激活a环境
conda deactivate #退出环境,会回到base,再次执行才退出conda环境
conda remove --name a --all #删除a环境
到这就属于提升体验部分了,没有远程需求的就可以跳过了。
注意,系统是没有预装的,虽然设置里确实有这个选项。
sudo apt install openssh-server #安装ssh服务端
sudo service sshd start #开启ssh服务
现在我们就可以使用ssh远程连接了。这里我用的是mobaxterm。
如果需要使用密钥免密登录的,请看下方问题区。
系统共享里的文件共享指的是媒体共享,想要舒服的共享文件,还是得用samba,至少是我目前用的最舒服的。
sudo apt-get install samba
sudo vim /etc/samba/smb.conf
#在末尾添加
[data] #这个是共享的名字
comment = share folder with usrname and passwd
path = /media/ai/data #共享目录
available = yes
browseable = yes
# public = yes
writeable = yes
read only = no
#添加后保存退出
sudo smbpasswd -a ai #添加smb用户ai
sudo service smbd restart
然后在win下使用\\ip
访问即可。
第一次需要输入刚才新建的用户和密码登录,进来后,右键映射网络驱动器,之后直接在此电脑中访问就可以了。
应该是全文最复杂的部分,因为你需要考虑所有的兼容性。显卡驱动(决定了cuda最高版本)、pytorch、cuda、cudnn这四兄弟要找个能一起住的“家”还真有点麻烦。
pytorch官网在发稿前显示仅支持cuda11.8和12.1,再根据cuda文档,我们的驱动版本应该在450.80.02以上。至于版本的选择就看你框架的要求了。
务必注意你要跑的框架对cuda版本的要求
比如百度飞桨各个版本有严格的版本限制,必须按照下表安装对应的,且支持到CUDA12.0。
如果你使用的是安培架构(消费级里3090是首发)的 GPU,推荐使用 CUDA11 以上。如果你使用的是非安培架构的 GPU,推荐使用 CUDA10.2,性能更优。
CUDA | cuDNN | TensorRT(如需使用 PaddleTensorRT 推理) |
---|---|---|
10.2 | 7.6.5 | 7.0.0.11 |
11.2 | 8.2.1 | 8.0.3.4 |
11.6 | 8.4.0 | 8.4.0.6 |
11.7 | 8.4.1 | 8.4.2.4 |
11.8 | 8.6.0 | 8.5.1.7 |
12.0 | 8.9.1 | 8.6.1.6 |
好,是不是到这头大了,别放弃,这才到哪呀,下面可有的折腾呢!
例如死亡掉驱动,根本没有预兆,只是重启了一下,甚至上一秒还能运行,下一秒运行报错,提示没有cuda。真玄学问题。
我下面翻车了好几次,一直不对,才发现是偷懒使用了ubuntu自带附加驱动,换成官网下载的驱动运行就正常了
nouveau是一个由爱好者组织的针对NVIDIA显卡开发的第三方开源3D驱动的共同项目,并且nouveau是在完全没有得到NVIDIA任何支持的情况下进行开发的,与NVIDIA驱动存在冲突,并且会影响GPU运行的可靠性,建议使用NVIDIA GPU前先禁用该驱动。
sudo vim /etc/modprobe.d/blacklist.conf
#在最下面加入
blacklist nouveau
options nouveau modeset=0
#保存后运行命令生效
sudo update-initramfs -u
首先查询你的显卡型号
ubuntu-drivers devices
然后访问下载页面下载驱动,建议使用最新的,这样可以使用尽可能新的cuda版本。
选择你的显卡,系统选择linux,默认是Windows
然后点击搜索,然后跳转后下载就可以了。
cd到你存放驱动的目录,运行以下指令进行安装
sudo chmod a+x NVIDIA-Linux-x86_64-535.113.01.run #修改权限
sudo ./NVIDIA-Linux-x86_64-535.113.01.run #运行
一路回车就完事
这个库我装不上,但是也能跑
选择yes
这里可能会遇到提示关闭图形界面后才能继续(我装过x11vnc就出现了,应该是lightdm的问题)
Ctrl+Alt+F1关闭图形界面
Ctrl+Alt+F7开启图形界面
安装完成后,在软件和更新中应该是这样的。
使用这个指令,查询驱动版本号
nvidia-smi
注意,右上角的cuda version指的是当前驱动支持的最高cuda版本而不是现在安装的版本
这里给出官网安装指南,真碰到我没写到的玄学bug就去翻下,碰碰运气。
lspci | grep -i nvidia #如果结果为空,表示不支持或需要更新数据库
update-pciids #更新linux维护的PCI数据库
uname -m && cat /etc/*release
这里考虑到各个框架的兼容性,我选择11.8版本进行安装。需要其他版本的点这里。进不去的用手机流量试试,我基本可以秒进。
选择我们需要的版本,这里可以使用wget命令,也可以使用迅雷等工具下载run文件。
wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run
运行这个命令,还是老规矩,全选yes,路径直接回车
sudo sh cuda_11.8.0_520.61.05_linux.run
nvcc --version
vim .bashrc
#添加如下内容,这里是默认路径
export PATH=/usr/local/cuda-11.8/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64:$LD_LIBRARY_PATH
#生效环境变量
source ~/.bashrc
这里给出官网安装指南,真碰到我没写到的玄学bug就去翻下,碰碰运气
以下是官方文档中的步骤,但是,很不幸,你大概率会被卡在下载(看运气,有时我用流量可以访问,大部分时候进不去)
要下载 cuDNN,请确保您已注册 NVIDIA 开发者计划。
所以,不如直接跳到第五步,使用直达链接进行下载,就是不知道能用多久
链接在这里,注意版本。
不要点击,右键复制链接,然后新建下载就可以了。这里我用的是迅雷。
直接双击deb软件包,点击安装就可以了
cp -r /usr/src/cudnn_samples_v8/ $HOME #将 cuDNN 示例复制到可写路径。
cd $HOME/cudnn_samples_v8/mnistCUDNN #转到可写路径。
make clean && make #编译示例
./mnistCUDNN #运行示例
如果 cuDNN 已正确安装并在 Linux 系统上运行,您将看到类似于以下内容的消息:
Test passed!
安装conda后,每次打开终端,都会进入base环境,切换到我们的生产环境还得输入命令,很麻烦。我们只需要修改一下环境变量
vim .bashrc
#在最下面添加
conda activate ascend #修改成你需要启动的环境
source ~/.bashrc
sudo swapon -s #查看当前swap分区的分配情况
sudo fallocate -l 8G /swapfile #创建一个8G的交换文件,位于跟目录
sudo mkswap /swapfile #初始化为swap文件
sudo swapon /swapfile #启用交换文件
sudo swapon -s #再次查看当前swap分区的分配情况
sudo vim /etc/fstab #添加以下内容
/swapfile none swap sw 0 0
sudo swapon -a #关闭swap分区
sudo rm /swapfile #删除交换文件,文件路径通过swapon -s指令查看
有桌面的同学直接使用磁盘工具创建分区即可
没有桌面的同学就按照下面的指令进行操作(因为原先这块硬盘在win上使用,win保留那个分区忘记格掉了,所以设备显示的是sda2,大家根据自己的情况来)
注意只有最后使用w指令才会保存修改,随时都可以通过q指令退出
sudo fdisk /dev/sda
#接下来依次输入
m #查看帮助
n #添加新分区
p #设置为扩展分区
1 #磁盘分区的挂载选项,默认即可
#两次回车,也就是默认全部的空间
w
y #保存分区,确认
sudo mkfs -t ext4 /dev/sda #格式化新建的分区
ext4在win下不能直接查看,要安装一个补丁,但是使用ntfs会发生samba共享文件时速度慢的问题,稳定20Mb/s,也许是我用树莓派做服务器导致的
mkdir /media/ai/data #新建挂载点,我的硬盘挂在这下面
sudo mount -t ext4 /dev/sda2/data #挂载硬盘
df -lh #检查挂载是否成功
这里我以sda2挂载到/media/ai/date/目录做演示
sudo blkid /dev/sda2 #查询UUID
sudo vim /etc/fstab #修改配置文件,添加以下内容
/dev/disk/by-uuid/4376d64b-cc1e-427e-8363-xxxxxxxxxxxx /media/ai/data ext4 defaults 0 0
上面那行是系统安装时自动生成的,我们按照他的样式填写就可以了。
参数说明
dev/disk/by-uuid/
之后填写上一步查询到的UUID,理论上可以使用/dev/sda2
代替,但是不如UUID安全,至少id是不会变的。/media/ai/data
etx4
defaults
0
0
。如果你需要开启检查,注意这个表示次序,因此上面有1了,我们就不能写1,要写2。重启后使用df -h
查看是否已经挂载,没有的话应该是/etc/fstab
这个文件写错了。要按照这个文件上面已经有的格式写。
我的状况:我的是千兆内网,电脑使用wifi连接路由器,主机通过网线连接路由器,samba甚至跑不到200Mbps。
我电脑只支持wifi5,也就是上限是780M(这里有大坑,问题也确实出在这)
虽然是1000M但还是建议对网线测试,换个设备测速试试。我这里是千兆外网,拓展坞接手机可以跑满千兆。大家可以尝试内网测速试试。
sudo apt-get install hdparm
sudo hdparm -Tt /dev/sda2 #改成你自己的设备
我电脑手机都跑不到200M,现在只能怀疑协议有问题。
首先访问一次远程服务器,来建立连接,然后使用管理员身份打开powershell,输入以下指令查询客户端smb版本,Dialect下的就是当前连接的smb协议版本。
Get-SMBConnection
如果显示的是1.0那么往下看,否则跳过当前小节。
把这两个钩去掉,然后重启。让win不能使用smb1协议。
再次查询客户端smb版本,我这已经是3.1.1了。
还不行,那就在samba配置文件[global]最后添加以下配置
min protocol = SMB2 #我的手机不支持smb3,因此我锁在smb2。
aio read size = 0 #关闭异步读取,不然可能会出现上下传不对等的情况
win7及以前的系统只支持smb1,min protocol应该设置为NT1(不是smb1哦)。
重启samba服务后,我的手机已经可以跑满了,但是,我的win电脑还是只有200M不到。
启用大型MTU以提升大文件的传输速度,并关闭带宽限制。 以管理员身份打开powershell,在命令中输入:
Set-SmbClientConfiguration -EnableBandwidthThrottling 0 -EnableLargeMtu 1
#不行的话再加这两条,重启试试
netsh int tcp set global autotuninglevel=restricted
netsh interface tcp set heuristics disabled
这里尝试了全网几乎所有的设置,像什么聚合,助推器啥的,根本没用。详细的直接站内搜smb速度慢
就能找到。
折腾了一晚上,第二天才发现问题其实很简单。是我的无线网卡的问题,插上网线能跑到800M左右,比我手机慢一点点。差不多能发挥出我千兆内网90%的性能了。
首先生成公钥和私钥
在客户端电脑运行
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa
一直回车就可以。
生成的密钥在C:\Users\工具人呵呵\.ssh
,替换成你自己的用户名,linux在主目录的.ssh
目录下
之后把生成的公钥重命名为authorized_keys
,并上传到服务端主机的.ssh文件夹中。如果存在这个文件,就把公钥内容加到authorized_keys文件下一行。
chmod 700 ~/.ssh #设置.ssh文件权限
chmod 600 ~/.ssh/authorized_keys #设置authorized_keys文件权限
su -
vim /etc/ssh/sshd_config
#去除PubkeyAuthentication 前的“#”
systemctl restart sshd.service #重启远程服务器的ssh服务
现在就可以使用私钥登录服务器了。
#删除 CUDA 工具包
sudo apt-get --purge remove "*cuda*" "*cublas*" "*cufft*" "*cufile*" "*curand*" "*cusolver*" "*cusparse*" "*gds-tools*" "*npp*" "*nvjpeg*" "nsight*" "*nvvm*"
#删除 NVIDIA 驱动程序
sudo apt-get --purge remove "*nvidia*" "libxnvctrl*"
#清理卸载
sudo apt-get autoremove
这个坑属于是我为了偷懒给自己挖的,结果自己掉进去两天才发现。
重要的事情说三遍。
检查是否使用了Ubuntu自带的附加驱动,也就是软件更新里面显示的!
检查是否使用了Ubuntu自带的附加驱动,也就是软件更新里面显示的!
检查是否使用了Ubuntu自带的附加驱动,也就是软件更新里面显示的!
一定要去官网下载linux驱动,自己安装呀。
对于linux,可劲折腾。等哪天你能连续跑好几天不报错了,你就真“入门”了。
1、23.12.7补充六、1、3
图,问就是我又掉驱动了,顺手补个图