如果觉得我的分享有一定帮助,欢迎关注我的微信公众号 “码农的科研笔记”,了解更多我的算法和代码学习总结记录。或者点击链接扫码关注【竞赛/TPU】算能TPU编程竞赛总结
Ubuntu操作系统中有很多不同的文件夹,每个文件夹都有不同的用途和内容。以下是Ubuntu中常见的文件夹列表及其用途:
/:根目录,也称为“文件系统根”。所有其他文件夹都是在此根目录下的子目录。
/bin:存放基本系统命令的二进制文件,如ls、cp、mkdir等。
/boot:存放启动引导程序和内核镜像文件。
/dev:存放设备文件,包括硬件设备文件和虚拟设备文件。
/etc:存放系统配置文件,如网络配置、用户和组配置、安全配置等。
/home:存放用户主目录,每个用户都有一个与其用户名相同的文件夹。
/lib:存放系统共享库文件。
/media:用于挂载可移动媒体设备(如CD、DVD、USB驱动器)的挂载点。
/mnt:用于挂载其他文件系统的挂载点。
/opt:用于存放可选应用程序的文件夹。
/proc:虚拟文件系统,用于访问系统内核信息。
/root:超级用户(root)的主目录。
/run:存放系统运行时文件,例如PID文件和套接字文件。
/sbin:存放系统管理命令的二进制文件,例如reboot和shutdown。
/srv:用于存放本地服务的数据,例如Web服务器的网站内容。
/sys:虚拟文件系统,用于访问系统硬件信息。
/tmp:用于存放临时文件的文件夹。
/usr:用于存放系统应用程序和数据的文件夹,包括bin、lib、share等子文件夹。
/var:存放系统运行时文件和日志文件,例如日志文件、数据库文件、邮件文件等。
这些文件夹不仅在Ubuntu中存在,也存在于其他基于Linux的操作系统中,并且是基本的文件系统结构。
https://tpumlir.org/docs/developer_manual/06_quantization.html
INT8对称量化模型和非对称量化模型都是用于优化神经网络模型的计算速度和内存占用的技术。
对称量化模型指的是量化范围以0为中心对称分布的模型。例如,对于8位整数,范围是-128到127。这意味着模型只能表示在这个范围内的整数值,并且0值是最精确的。因为它是对称的,因此在某些硬件上实现时,可以使用一些优化技术,例如位移和异或等来加速计算。
非对称量化模型指的是量化范围不对称的模型。例如,范围是0到255,这意味着模型可以表示0到255之间的整数值,并且128值是最精确的。非对称量化模型可以更好地适应具有不同权重分布的不同神经网络模型。
对称量化模型相对于非对称量化模型来说,具有更高的计算效率和更简单的实现方式。但是,非对称量化模型可以提供更高的精度和更广泛的数值表示范围。在选择量化方法时,需要考虑具体的应用场景和要求。
以图像分类任务为例,假设我们使用一个预训练好的卷积神经网络(CNN)模型来对图像进行分类。CNN模型通常具有大量的参数,因此在部署到嵌入式设备等资源受限的环境中时,需要将模型的计算速度和内存占用进行优化。在这种情况下,可以使用量化技术来优化模型。如果我们选择使用对称量化模型,将模型参数量化为8位整数,并且量化范围为-128到127。在这种情况下,所有的权重和激活值都将被量化为8位整数,并且量化范围是对称的。这种方法可以提高计算效率和内存利用率,并且可以使用硬件优化技术来加速计算。如果我们选择使用非对称量化模型,将模型参数量化为8位整数,并且量化范围为0到255。在这种情况下,所有的权重和激活值都将被量化为8位整数,并且量化范围是非对称的。这种方法可以提供更高的精度和更广泛的数值表示范围,但可能会导致一些硬件实现的复杂性。
在将神经网络模型转换为INT8格式之前,需要进行量化校准(calibration),以便确定量化范围和量化参数。量化校准是指将模型输入的数据集输入到模型中,并收集模型在这些数据上的激活值,然后基于这些激活值计算出一个量化参数表。这是因为在INT8量化模型中,模型中的权重和激活值都被量化为8位整数。但是,对于每个模型,量化参数都需要在实际数据上进行校准,以确保量化后的模型在精度上没有过多损失。因为在量化时,通过将浮点数值映射到整数值,会引入一些不可避免的误差,因此需要根据具体的模型和数据集来确定量化参数,以最小化精度损失。
量化校准通常包括以下步骤:
将数据集输入到模型中,收集模型在数据集上的激活值。
对激活值进行统计分析,以确定量化范围和量化参数。
根据量化参数生成一个量化表(Quantization Table),包括每个层的量化参数和量化范围。
将量化表应用到模型中,以将权重和激活值量化为8位整数。
量化校准是将模型从浮点数格式转换为INT8格式的关键步骤。通过量化校准,我们可以确保在进行INT8量化后,模型的精度仍然可以得到保持,从而可以在嵌入式设备等资源受限的环境中高效地部署模型。
参赛地址:https://www.sophgo.com/competition/introduction.html?id=3
【第一步】购买云主机 ubuntu 18.04 64位,Putty连接服务器并登录
镜像: Ubuntu 20.04 64位
CPU: 16核
内存: 128G
系统盘总容量: 20GB
数据盘总容量: 0GB
【第二步】修改ubuntu用户名权限
Ubuntu系统默认用户是ubuntu,需要修改配置文件启动root
【第三步】安装docker环境
sudo apt install docker.io
sudo systemctl start docker
sudo systemctl enable docker
sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker
【第四步:配置环境】首先从比赛官网下载tpu-mlir_v0.8.13-g327ff6dc-20230113以及unet.zip
sudo apt-get install tmux
tmux new -s mlir
mkdir worksplace
docker pull sophgo/tpuc_dev:latestdocker run --privileged=true --restart always -td -v /root/../home/ubuntu/worksplace:/workspace --name mlir sophgo/tpuc_dev:latest bashdocker exec -it mlir bash
mv tpu-mlir_v0.8.13-g327ff6dc-20230113 tpu-mlir
cd tpu-mlir
chmod -R +x ../tpu-mlir
source envsetup.sh
cd ..
mkdir competition
cd competition/unet/script
【第五步:检测环境是否编译成功】
python3
import pyruntime_bm
import pymlir
exit()
【第六步:MLIR转F32模型】
unzip unet.zip
cd unet/script
sh run1.sh
sudo sh run.sh
sudo run.sh
【第六步:MLIR转INT8模型】
python3 ../../../tpu-mlir/python/tools/run_calibration.py ../model/unet_scale0.5.mlir \
--dataset ../data/test_hq \
--input_num 200 \
-o unet_scale0.5_cali_table
python3 ../../../tpu-mlir/python/tools/model_deploy.py \
--mlir ../model/unet_scale0.5.mlir \
--quantize INT8 \
--calibration_table unet_scale0.5_cali_table \
--chip bm1684x \
--tolerance 0.85,0.45 \
--model ../model/unet_scale0.5_int8.bmodel;
【第七步:结果输出】
python3 mlir_tester.py --img_dir ../data/test_hq --out_dir ../data/result --model ../model/unet_scale0.5.mlir
问题1
ImportError: /workspace/tpu-mlir/lib/libdnnl.so.2: file too short
替换libdnnl.so.2为其中对应的文件,并命名为libdnnl.so.2
问题2
ModuleNotFoundError: No module named ‘torchsummary’
直接运行:pip install torchsummary
问题3
fail to load cmodel: libcmodel.so
替换并覆盖
问题4
INFO:cpu_lib ‘libbmcpu.so’ is loaded.
问题5
ubuntu@10-60-205-99:~$ apt-get install tmux
E: Could not open lock file /var/lib/dpkg/lock-frontend - open (13: Permission denied)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), are you root?
sudo apt-get install tmux
问题6
权限不够解决办法, 通过 chmod -R +x ../bin
命令重新进一次该文件夹,bin
就代表当前文件夹。