2. 开发环境介绍

2.1. RKNN开发环境

broken

在PC端主要是进行模型训练和模型转换等, 可以选择Windows系统,或者Windows上的虚拟机ubuntu,Docker的linux系统,或者云服务器等等。

在PC端需要安装常用软件和库,比如pycharm、Python、交叉编译器等, 安装一些深度学习框架,比如Pytorch,TensorFlow,PaddlePaddle等等。 各种软件的使用,建议创建虚拟环境来隔离,常用Python 虚拟环境和Anaconda或者Miniconda。

在鲁班猫板卡上,系统使用Ubuntu或者debian,内核默认适配rknn驱动,其他rknn相关组件均包含,如果需要更新请参考后面相关教程。 另外,还有一些常用的软件和库,例如python,cmake,make,gcc,opencv等等。

后面教程测试,PC端是使用 WSL2 (可以结合pycharm使用等等), 进行模型训练和转换,鲁班猫板卡系统是以Debian11、ubuntu20.04为主,进行部署推理测试。

2.2. RKNN开发流程

broken

深度学习模型工作流程大致可分为训练和推理,而在板块上部署模型,具体的步骤如下:

  • 模型训练,模型训练前需要根据具体项目问题,选择模型,数据采集,然后使用适合的深度学习框架进行模型训练, 其中关于RKNN模型算子的支持请参考 RKNN_Compiler_Support_Operator_List

  • 模型转换,将训练的深度学习模型会被转化为RKNN格式的模型。

  • 模型评估,将使用RKNN-Toolkit2工具量化和分析模型性能,包括精度、连板推理性能和内存占用等关键指标, 根据模型的评估尝试修改和优化模型,一些模型的优化可以参考下 RKNPU_User_Guide_RKNN_SDK

  • 板端推理,将转换的RKNN模型部署到板卡上,具体可以查看下rknpu运行库和 RKNN-Toolkit-lite2 的使用。

2.3. 相关软件安装

以下软件和工具都是在个人电脑上安装。

2.3.1. Anaconda安装

Anaconda是可以便捷获取包且对包能够进行管理,同时对环境可以统一管理的发行版本。Anaconda包含了conda、Python在内的众多流行的科学计算、数据分析包。

Anaconda安装可以从官网网页直接下载,打开 https://www.anaconda.com/download#downloads ,根据系统选择不同的版本安装, 教程测试使用ubuntu20.04,选择linux的安装包:

broken

或者使用下面命令直接获取安装包:

wget https://repo.anaconda.com/archive/Anaconda3-2023.07-2-Linux-x86_64.sh

如果下载很慢,安装包也可以从镜像源获取,打开网址 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ ,选择对应的版本。 获取安装包后,在linux系统中使用默认shell执行下面命令安装:

./Anaconda3-2023.07-2-Linux-x86_64.sh

然后回车,一直往下滑动看完license,最后输入yes后,继续按下回车,然后进入安装,安装完成后输入yes初始化anaconda3:

# ...省略
The following packages listed on https://www.anaconda.com/cryptography are included in the repository accessible through Anaconda Distribution
that relate to cryptography.

Last updated February 25, 2022

Do you accept the license terms? [yes|no]
[no] >>> yes

Anaconda3 will now be installed into this location:
/home/llh/anaconda3

- Press ENTER to confirm the location
- Press CTRL-C to abort the installation
- Or specify a different location below

[/home/llh/anaconda3] >>>
PREFIX=/home/llh/anaconda3
Unpacking payload ...

Installing base environment...

Downloading and Extracting Packages

Downloading and Extracting Packages

Preparing transaction: done
Executing transaction: |

    Installed package of scikit-learn can be accelerated using scikit-learn-intelex.
    More details are available here: https://intel.github.io/scikit-learn-intelex

    For example:

        $ conda install scikit-learn-intelex
        $ python -m sklearnex my_application.py

done
installation finished.
Do you wish the installer to initialize Anaconda3
by running conda init? [yes|no]
[no] >>> yes
no change     /home/llh/anaconda3/condabin/conda
no change     /home/llh/anaconda3/bin/conda
no change     /home/llh/anaconda3/bin/conda-env
no change     /home/llh/anaconda3/bin/activate
no change     /home/llh/anaconda3/bin/deactivate
no change     /home/llh/anaconda3/etc/profile.d/conda.sh
no change     /home/llh/anaconda3/etc/fish/conf.d/conda.fish
no change     /home/llh/anaconda3/shell/condabin/Conda.psm1
no change     /home/llh/anaconda3/shell/condabin/conda-hook.ps1
no change     /home/llh/anaconda3/lib/python3.11/site-packages/xontrib/conda.xsh
no change     /home/llh/anaconda3/etc/profile.d/conda.csh
modified      /home/llh/.bashrc

==> For changes to take effect, close and re-open your current shell. <==

If you'd prefer that conda's base environment not be activated on startup,
set the auto_activate_base parameter to false:

conda config --set auto_activate_base false

Thank you for installing Anaconda3!

重启系统或者使用命令source ~/.bashrc 后打开终端会进入默认anaconda环境里(命令行提示符前面有一个base),就可以使用conda来创建虚拟环境和包管理:

# 重启或者使用命令source ~/.bashrc进入anaconda环境
source ~/.bashrc

# 下面列出一些常用conda命令,更多命令参考conda --help
# 创建一个环境,env_name是环境名称,后面可以指定python的版本等等
conda create -n env_name ....

# 列出创建的虚拟环境
#conda env list
conda info --envs

# 激活环境,不指定env_name时,默认进入base环境
conda activate env_name

# 移除环境,其中env_name是环境名称
conda remove -n env_name --all

# 退出当前conda环境
conda deactivate

# 每次开启终端都会默认进入anaconda环境,使用下面命令后重启就不会默认启动虚拟环境
conda config --set auto_activate_base false

默认Anaconda安装会带很多默认的库,要轻量版的可以使用 Miniconda , 默认只包含了python和conda,通过pip和conda来安装所需要的包。可以点击 链接 去下载安装,安装和使用操作类似。

Anaconda配置使用国内镜像源(可选):

# 查看默认的源
conda config --show 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/r

conda config --set custom_channels.auto https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/

conda config --set show_channel_urls yes

Anaconda清华源的使用请参考下:https://mirrors.tuna.tsinghua.edu.cn/help/anaconda

2.3.2. rknn-toolkit2安装

RKNN Toolkit2 开发套件运行在PC (x86_64/arm64)平台上,提供了模型转换、量化功能、模型推理、性能和内存评估、量化精度分析、模型加密等功能。

rknn-toolkit2安装可以参考下后面 RKNN Toolkit2介绍 章节, 或者参考下这里使用Anaconda(教程测试时toolkit2的版本是1.6.0):

# 创建一个名为toolkit2_1.6的环境,并指定python版本,
conda create -n toolkit2_1.6 python=3.8
conda activate toolkit2_1.6

# 拉取toolkit2源码
git clone https://github.com/airockchip/rknn-toolkit2

# 配置pip源
pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple/

# pip安装指定版本的库(教程测试时toolkit2版本是1.6.0,请根据python版本选择文件安装)
cd rknn-toolkit2
pip3 install -r packages/requirements_cp38-1.6.0.txt

# 需要根据python版本和rknn_toolkit2版本选择whl文件,例如这里创建的是python3.8环境,使用带”cp38”的whl文件。
pip3 install packages/rknn_toolkit2-1.6.0+81f21f4d-cp38-cp38-linux_x86_64.whl

安装成功后会显示Successfully,我们也可以简单测试下:

(toolkit2_1.6) llh@YH-LONG:/xxx$ python
Python 3.8.18 (default, Sep 11 2023, 13:40:15)
[GCC 11.2.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from rknn.api import RKNN
>>> rknn = RKNN()
W __init__: rknn-toolkit2 version: 1.6.0+81f21f4d
>>>

2.3.3. Jupyter Notebook安装

Jupyter Notebook是基于网页的用于交互计算的应用程序。 Jupyter Notebook以网页的形式打开,能够在每条命令编写好后,实时地查看到代码执行后的数据变化, 如在编程过程中需要编写说明文档,可在同一个页面中直接编写,便于作及时的说明和解释。

教程中一些章节有Jupyter Notebook文件,可以使用conda命令安装Jupyter Notebook,然后查看或者操作。

# 在一个环境中安装Jupyter
conda install jupyter notebook

也可以使用pip3安装:

# 安装Jupyter
pip3 install jupyter -i https://pypi.tuna.tsinghua.edu.cn/simple

详细修改配置,可以参考下 Jupyter官网 或者 参考下 https://doc.embedfire.com/linux/rk356x/Python/zh/latest/toolpackages/jupyter.html

2.3.4. 一些深度学习框架的安装

下面将演示一些深度学习框架的安装,具体详情可以参考下深度学习框架对应的官网。

1、paddlepaddle的安装

这里演示conda安装paddlepaddle,具体命令参考下 官网 选择对应的版本,操作系统,conda安装方式以及计算平台,就可得到对应的安装命令:

broken
# 使用conda创建一个名为paddle的环境,并指定python版本
conda activate
conda create -n paddle python=3.8

# 进入环境
conda activate paddle

# 安装最新版本的paddlepaddle计算平台是cpu(测试安装时最新版本是2.5.1)
conda install paddlepaddle==2.5.1 --channel https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/Paddle/

# 验证安装成功,检测版本
python3 -c "import paddle;paddle.utils.run_check()"

如果要安装gpu版本,英伟达GPU,先使用命令nvidia-smi查看cuda支持的最高版本, 如果没有该命令需要更新或者安装下 显卡驱动

PS C:\Users\Administrator> nvidia-smi
Thu Sep  7 16:45:29 2023
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 474.14       Driver Version: 474.14       CUDA Version: 11.4     |
|-------------------------------+----------------------+----------------------+
| GPU  Name            TCC/WDDM | Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ... WDDM  | 00000000:01:00.0 N/A |                  N/A |
| 40%    0C    P0    N/A /  N/A |    715MiB /  2048MiB |     N/A      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

提示

如果是WSL2,只需要windows下安装最新的nvidia显卡驱动,就可以在WSL2中使用nvidia-smi命令,在WSL2中安装CUDA,请参考下 NVIDIA CUDA in WSL

查看上面显示支持的最高版本CUDA,然后找paddlepaddle支持该CUDA版本以下的安装命令,然后安装paddlepaddle:

# 使用conda创建一个名为paddle_gpu的环境,并指定python版本
conda create -n paddle_gpu python=3.8

# 进入环境
conda activate paddle_gpu

# 安装gpu版本的paddlepaddle,cuda版本为11.2
conda install paddlepaddle-gpu==2.5.1 cudatoolkit=11.2 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/Paddle/ -c conda-forge

# 验证安装成功,检测版本
python3 -c "import paddle;paddle.utils.run_check()"

也可以自行安装CUDA和cudnn(这时需要注意实际使用的是Conda中安装cuda和自己安装cuda), 参考下网址:https://developer.nvidia.com/cuda-toolkit-archivehttps://developer.nvidia.com/rdp/cudnn-archive

2、TensorFlow安装

可以使用python3-venv或者anaconda创建一个虚拟环境,然后使用pip安装。

使用python虚拟环境:

# 安装python,更新pip,需要使用Python 3.6-3.9 和 pip 19.0及更高版本
sudo apt update
sudo apt install python3-dev python3-pip python3-venv
sudo python3 -m pip install pip --upgrade

# 一般都创建一个虚拟环境使用
sudo python3 -m venv  .tensorflow_venv

#  激活环境
source .tensorflow_venv/bin/activate

# 直接命令安装最新稳定版tensorfolw,也可以指定下以前版本(GPU和CPU版本已经合并),
# GPU版本使用需要安装CUDA和cudnn,参考下前面链接
pip3 install tensorflow

# 验证安装成功,查看版本
python3 -c "import tensorflow as tf;print(tf.__version__)"

或者使用conda创建一个虚拟环境:

# 使用conda创建一个名为paddle的环境,并指定python版本
conda create -n TensorFlow python=3.8

# 进入环境
conda activate TensorFlow

# 直接命令安装最新稳定版tensorfolw,也可以指定下以前版本(GPU和CPU版本已经合并),
# GPU版本使用需要安装CUDA和cudnn,参考下前面链接
pip3 install tensorflow

# 验证安装成功,查看版本
python3 -c "import tensorflow as tf;print(tf.__version__)"

更多安装参考下 https://tensorflow.google.cn/install?hl=zh-cn

提示

使用pip3安装包时可能很慢,可以设置下源,使用命令 pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

3、pytorch安装

安装pytorch,可以参考下 官网,选择对应版本,系统,语言,cuda,然后查看安装命令:

broken

没有符合要求的,也可以点击上面的安装以前的版本。下面用Conda创建虚拟环境,然后使用pip安装pytorch:

# 使用conda创建一个名为pytorch的环境,并指定python版本
conda create -n pytorch python=3.8

# 进入环境
conda activate pytorch

# 这里使用pip3安装最新版本的pytorch计算平台是gpu,你也可以查看pytorch官网,根据自己系统环境选择安装命令
pip3 install torch torchvision torchaudio

# 验证安装成功,检测版本,也可以使用conda list查看
python3 -c "import torch;print(torch.__version__)"

# 如果是安装gpu版本的,检测是否可用,正常就输出True
python3 -c "import torch;print(torch.cuda.is_available())"