×

签到

分享到微信

打开微信,使用扫一扫进入页面后,点击右上角菜单,

点击“发送给朋友”或“分享到朋友圈”完成分享

【CN-环境2】基础软件平台部署 小飞人2023-07-06 12:01:50 回复 查看 社区交流 干货资源
【CN-环境2】基础软件平台部署
分享到:

原文链接:https://zhuanlan.zhihu.com/p/592956350

 

【CN-环境2】基础软件平台部署

1、寒武纪基础软件平台简介

1 结构介绍

 



 

2 组件及功能介绍

注意:

·       表格中标记蓝色字体的模块是本课程会进行安装部署的模块,其他模块的安装请参考相应手册

·       软件平台各模块的详细介绍请参考使用手册

·       目前软件平台版本已经更新,最新的版本可以看文末连接2

3 操作系统版本要求

目前寒武纪基础软件平台已经支持主流 Linux 发行版

CentOS 系统支持:
CentOS 7.4(3.10.0‑693)
CentOS 7.6(3.10.0‑957)
针对 CentOS 寒武纪提供了 rpm 包,用户可采用 rpm 方式或 yum 方式进行安装部署
 
Ubuntu 系统支持:
Ubuntu 16.04(4.4.0‑112)
Ubuntu 18.04(4.15.0‑32)
针对 Ubuntu 寒武纪提供了 deb 包,用户可采用 dpkg 方式或 apt 方式进行安装部署


4 部署方式

寒武纪基础软件平台的部署方式有两种:


·       物理机上逐个安装各个软件模块

·       主机端安装驱动之后,使用寒武纪提供的已预装软件栈的 docker 镜像创建 docker 容器


 

2、物理机部署寒武纪基础软件平台

Linux 开发环境依赖包

1 Driver 安装

1)检查硬件资源分配

·       使用 root 权限执行命令:lspci -v -d:0370

·       查看板卡是否正常分配到资源,下图即为分配到资源:


注意:若未能分配到正确资源,会出现Memory at <ignored> (64-bit, non-prefetchable)

此时请参考 Cambricon-Driver-User-Guide 对应章节: 10.4 装机时需要注意的设置,或参考上一门。

2)安装驱动包

 

# 安装驱动之前需要安装 dkms,安装 dkms 之前要先安装 epel-release
$ sudo yum install -y epel-release
$ sudo yum install -y dkms
# 安装本地驱动包
$ sudo yum install -y cambricon-mlu-driver-centos7-4.20.6-1.x86_64.rpm


 

 

3)检验安装结果

驱动安装完成之后执行 cnmon 命令,若驱动已被正确安装,可以看到 MLU 的相关信息如右图所示。若想获取更多 MLU 相关信息可执行 cnmon --help 命令获取使用指导

 

2 CNToolkit 安装

1)安装前准备

# a. 查看 Driver 是已经安装
$ cnmon
 
# b. 检查安装环境中的 GCC。用户用 BANG 语言开发时,由于 CNToolkit 中的编译⼯具链只负责编译 *.mlu ⽂件描述的 Device 端程序源码,⽤⼾ Host 端的 C 和 C++ 源码仍然需要 Host 端环境中的 GCC 来编译,需要确认 GCC 已经安装成功。
$ which gcc
/usr/bin/gcc
$ gcc --version
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
# c. 选择合适的安装方式:CNToolkit 基于 X86_64 平台提供了 rpm、 Deb、 Runfile 三种发布包,本教程基于 CentOS 系统演示,这里我们选择 rpm 包进行安装


2)CentOS 7 系统上执行安装流程

# 安装第三⽅ EPEL 源,⽅便后续解决依赖包的安装问题。例如 cmake3 等软件包只在 EPEL 源中存在。  $ sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
# 安装依赖包并设置环境
$ sudo yum update
$ sudo yum install cmake3
$ sudo yum install centos-release-scl
$ sudo yum install devtoolset-7
$ sudo scl enable devtoolset-7 bash
# 安装本地 CNToolkit 包
$ sudo rpm --install cntoolkit-2.7.3-1.el7.x86_64.rpm
# 安装 CNToolkit 中全部组件
$ sudo yum install cntoolkit-cloud       # 对于边缘侧设备应该为 cntoolkit-edge,相关安装方法请参考 Cambricon-CNToolkit-Installation-And-Updation-Guide


打印结果:

 

3)检查是否安装成功

# 查看 CNToolkit 版本。注意:/usr/local/neuware/ 是寒武纪基础软件平台的默认安装路径
$ cat /usr/local/neuware/version.txt
# RPM 包管理器查询各模块是否安装成功
$ rpm -qa | grep -E “cnbin|cncc|cnas|cncodec|cndev|cndrv|cngdb|cnpapi|cnperf|cnrt|cnrtc|cnstudio|llvm-mm|cnpx|cnvs“


打印结果:

 

4)安装后配置

# 配置环境变量
# 寒武纪基础软件平台使⽤环境变量 NEUWARE_HOME 来存储根⽬录路径。默认如下,也可以⾃定义为其他已安装⽬录
$ export NEUWARE_HOME=“/usr/local/neuware”
$ export PATH="${NEUWARE_HOME}/bin:${PATH}“
$ export LD_LIBRARY_PATH=“${NEUWARE_HOME}/lib64:${LD_LIBRARY_PATH}”
 
# 查看各组件安装位置及版本号
$ which cncc
$ which cnas
$ which cngdb
$ which cnperf-cli
$ which cnvs
$ cncc --version
$ cnas --version
$ cngdb --version
$ cnvs --version
$ cnperf-cli --version
 
# 当需要安装并使⽤ LLVM-MM 组件时,需要⽤如下命令配置 LD_LIBRARY_PATH 和 PATH 环境变量
$ export PATH="${NEUWARE_HOME}/lib/llvm-mm/bin":$PATH
$ export LD_LIBRARY_PATH="${NEUWARE_HOME}/lib/llvm-mm/lib:${LD_LIBRARY_PATH}“
 
# 当⼀台主机上安装了多张 MLU 加速卡,可以通过 MLU_VISIBLE_DEVICES 环境变量指定使用部分板卡,或清除该环境变量使能所有 MLU 板卡,确保程序执⾏在期望的设备上
$ export MLU_VISIBLE_DEVICES=0, 1         # 仅使能第0、1 张加速卡(假设本机板卡数量大于等于两张)
$ unset MLU_VISIBLE_DEVICES                   # 清除该环境变量使能本机所有 MLU 板卡


3 MagicMind 安装

1)MagicMind 安装包介绍

MagicMind 支持 C++ 和 Python 两种编程接口。软件栈同时提供了 C++ 安装包和 Python 安装包

 

2)MagicMind 安装前准备

安装前准备 —— 安装依赖包

MaigcMind 依赖软件栈以下组件:
Driver (前面章节已安装)
CNToolkit(前面章节已安装)
CNNL
CNNL_Extra
CNLight
# 安装 CNNL、CNNL_Extra 及 CNLight 本地安装包。更多内容可参考相应手册。
$ sudo yum install cnnl-1.9.3-1.el7.x86_64.rpm
$ sudo yum install cnnlextra-0.12.0-1.el7.x86_64.rpm
$ sudo yum install cnlight-0.11.0-1.abiold.el7.x86_64.rpm


3)MagicMind C++ 安装包安装

① 安装前准备 —— 确认 gcc 版本

MagicMind 在不同的操作系统上有不同的 gcc 版本依赖:

 


 

# CentOS 7 默认 gcc 版本为 4.8.5,需要手动安装 gcc >= 7.3
$ sudo yum install devtoolset-8-gcc-c++.x86_64
$ sudo yum install devtoolset-8-gcc.x86_64
$ export PATH=/usr/local/neuware/bin/:/opt/rh/devtoolset-8/root/usr/bin/:$PATH
 
# 查看版本
$ gcc --version
gcc (GCC) 8.3.1 20190311 (Red Hat 8.3.1-3)
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


② 安装前准备 —— 安装 LibTorch 及 CMake

C++ 安装包需要在系统中安装:

·       CMake(version == v3.5,前面章节已安装)

·       LibTorch(version ==v1.6)

备注:预计下一个版本会将 LibTorch 打包在 MagicMind 中,而不再需要手动安装。详情请关注新版本的 Release-Notes )

# 下载 LibTorch-1.6.0 并解压
$ wget https://download.pytorch.org/libtorch/cpu/libtorch-shared-with-deps-1.6.0%2Bcpu.zip
$ unzip libtorch-shared-with-deps-1.6.0+cpu.zip
 
# 将 LibTorch-1.6.0 的路径加入 LD_LIBRARY_PATH 环境变量
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:your_unzip_path/libtorch/lib/


③ 执行安装

# 安装 MagicMind 本地安装包
$ sudo yum install magicmind-0.9.2-1.el7.x86_64.rpm
 
# 查看安装结果
$ ls /usr/local/neuware/include/  # 该路径下包含了 MagicMind 相关 .h 文件 interface_*.h
$ ls /usr/local/neuware/lib64/    # 该路径下包含了 MagicMind 相关 so 文件 libmagicmind_*.so
 
# MagicMind C++ API 请参考 《Cambricon-MagicMind-CPP-Developer-Guide》


4)MagicMind Python 包安装

① 安装前准备 —— 安装 Python3.7

Wheel 包部署需要系统中安装 Python == v3.7.8

# 使⽤ wheel 包部署需要物理机安装 Python>= v3.7.8
# 下载 Python3.7.8 压缩包
$ wget https://www.python.org/ftp/python/3.7.8/Python-3.7.8.tar.xz
# 解压
$ xz Python-3.7.8.tar.xz; tar -xvf Python-3.7.8.tar
# 编译和安装
$ cd Python-3.7.8
$ ./configure
$ make
$ sudo make install    # 默认安装路径为 /usr/local/bin/,用 sudo 确保拥有该目录权限
# 检查是否安装成功
$ which python3.7
/usr/local/bin/python3.7
# (可选)将 python3.7 设置为默认 python 版本
$ sudo ln -sf /usr/local/bin/python3.7 /usr/bin/python


② 安装 MagicMind Python 包

# 安装本地 wheel 包
$ python3.7 -m pip install magicmind-0.9.2-cp37-cp37m-linux_x86_64.whl
# 验证安装结果
$ python3.7 -c "import magicmind; print(magicmind.__version__)"
0.9.2
 
# MagicMind Python API 请参考 《Cambricon-MagicMind-Python-Developer-Guide》


4 Cambricon PyTorch 安装

1)Cambricon PyTorch 源码包介绍

寒武纪提供了 Cambricon PyTorch 源代码:

·       pytorch-v1.2.1-torch1.6.tar.gz

·       pytorch-v1.2.1-torch1.9.tar.gz

这里我们以解压和编译 pytorch-v1.2.1-torch1.6.tar.gz 为例来介绍 Cambricon PyTorch 的编译安装流程

 

2)Cambricon PyTorch 依赖环境

Cambricon PyTorch 依赖如下:
 
Python >= 3.6
CMake >= 3.5.0
CNToolkit
CNNL
CNNL_Extra
CNLight
MagicMind
CNCL
# 以上列举的依赖中除 CNCL 之外,其他模块均已在前面的步骤安装完毕
# 安装本地 CNCL rpm 包
$ sudo yum install  cncl-1.0.4-1.el7.x86_64.rpm
 
# Cambricon PyTorch 的第三⽅依赖,参⻅ catch/ /release/build.property ⽂件


3)准备环境并编译安装 Cambricon PyTorch

# 1. 若系统中未安装 bazel,采用如下方式安装 bazel3:
$ wget https://copr.fedorainfracloud.org/coprs/vbatts/bazel/repo/epel-7/vbatts-bazel-epel-7.repo
$ cp vbatts-bazel-epel-7.repo /etc/yum.repos.d/
$ sudo yum update
$ sudo yum install bazel3.x86_64
# 2. 为了不破坏系统 python 环境,这里推荐使用 virtualenv 来创建和管理 python 虚拟环境
$ python3 -m pip install virtualenv
# 3. 解压源码压缩包,进入 cambricon pytorch 根目录,使用 virtualenv 创建并激活虚拟环境
$ tar -xvf pytorch-vv1.2.1-torch1.6.tar.gz;  cd cambricon_pytorch
$ virtualenv -p $(which python3) venv/pytorch
$ source venv/pytorch/bin/activate
# 4. 准备编译环境,执行源码包中的 shell 脚本一键编译与安装
$ source env_pytorch.sh
$ ./build_cambricon_pytorch_catch.sh
# 5. 确认安装结果
$ python -c "import torch; import torch_mlu; print(torch.__version__); print(torch_mlu.__version__)“
1.6.0a0
1.2.1-torch1.6


3、Docker 镜像部署

Q:为什么选择 Docker 镜像这种环境部署方式?

A:相比传统的物理机部署方式,Docker 镜像部署有以下几个优点:

·       Docker 镜像中封装了一整套开发环境,任意机器上可做到“开箱即用”

·       Docker 容器间相互隔离、互不影响

·       降低了移植开发的门槛

本章节以 MLU370-X4加速卡 + 主机Ubuntu18.04 + MLU Driver4.20.9 + magicmind_0.9.2-1_ubuntu18.04 docker镜像 为例,来演示使用寒武纪 Docker 镜像部署开发环境的一般步骤。

1 环境部署

1)环境验证

SyntaxHighlighter.all();

版权所有 © 2024 寒武纪 Cambricon.com 备案/许可证号:京ICP备17003415号-1