2. 希姆计算异构环境安装指南

2.1. 版本历史

文档版本 对应产品版本 作者 日期 描述
V1.7.1 STCRP V1.5.1 希姆计算 2024-04-01 升级HPE必须关闭npu-exporter的服务,添加说明。
V1.7.0 STCRP V1.5.1 希姆计算 2024-01-15 增加RHEL 9.0安装包。
增加Ubuntu 22.04安装包。
更新配套软件架构图并完善架构图的说明。
V1.6.0 STCRP V1.5.0 希姆计算 2023-07-21 增加BC-Linux V8.2安装包。
增加BC-Linux For Euler 22.10安装包。
删除Debian 9 安装包相关步骤。
V1.5.0 STCRP V1.4.1 希姆计算 2023-05-16 更新版本号。
V1.4.0 STCRP V1.4.0 希姆计算 2023-04-11 增加各环境推荐的dkms版本。
V1.3.0 STCRP V1.3.1 希姆计算 2023-03-28 增加UOS V20安装包
V1.2.0 STCRP V1.3.0 希姆计算 2023-01-16 增加麒麟 V10安装包
将Benchmark和ScheduleViewer整合到STC_DDK中
V1.1.0 STCRP V1.2.0 希姆计算 2022-12-16 增加远程源方式,并对应调整文档架构。
CentOS 8补充g++依赖安装步骤。
增加HPE卸载的通配符方案。
V1.0.0 STCRP V1.2.0 希姆计算 2022-11-22 整合STCP920快速安装指南、HPE安装指南、异构环境安装指南(Docker方式)。
散包分类为hpe-host、hpe-simple等,方便按用途安装,并对应优化安装卸载方式。
HPE的CentOS 7包添加密钥。
提供HPE的CentOS 8包。
更新requirements、Dockerfile。
增加Debian 9的GCC、libstdc++.so.6.0.24要求。

2.2. 概述

2.2.1. STCP920 AI推理卡

希姆计算STCP920 AI推理卡搭配一颗STCP920芯片,可以通过标准的PCIe接口便捷地集成到各类服务器中,从而快速扩展云端推理能力,满足计算机视觉、自然语言处理、语音识别、搜索推荐等主流AI场景中的推理加速需求。本文档介绍STCP920 AI推理卡(下文简称为STCP920)的基本信息以及管理软硬件的常见操作,希姆计算软硬件相关的概念解释,请参见希姆计算基本概念

STCP920的硬件规格如下:

  • 单宽、3/4长、全高(268.44mm × 111.15mm)。外观示意图如下:

../_images/stc-env-install-01.png

  • 支持标准PCIe 4.0 × 16接口。

  • 功耗为160 W。

  • 采用被动散热,需要系统风扇提供冷却风量。

  • 提供一个PCIe 8-Pin的电源接口。电源接口的管脚排序及定义如下:

../_images/stc-env-install-02.png

2.2.2. 配套软件

硬件安装完成后,您还需要在服务器上安装为STCP920 AI推理卡量身打造的配套软件,以便使用STCP920加速推理,架构图如下:

../_images/stc-env-install-03.png

配套软件在多个层级降低调试、部署人工智能应用时的操作难度,同时获得最优的加速效果。

  • 基于硬件的推理加速能力:包括了异构编程环境、AI编译器以及满足监控调试用途的工具,提供了操作芯片的基本能力,并在编译过程中引入了一系列优化策略,同时对实际使用场景中的常见操作封装这些能力。

  • 适配现有生态的推理平台:支持导入基于主流AI框架实现的模型,已打通200余个主流AI模型,支持将STCP920 AI推理卡passthrough到基于KVM的VM,支持在K8s集群中通过k8s-device-plugin申请NPU设备,以及提供端到端推理的优化能力等。

  • 丰富的AI应用框架:基于AI领域的典型任务和典型应用提供针对性的支持,助力客户完善自己的行业方案。

希姆计算配套软件以STCRP的形式交付,本文主要介绍在STCP920上执行推理任务所必须的HPE、TensorTurbo,如果您需要了解其他监控调试、部署集成工具的用法,请阅读对应的使用文档。STCRP版本发布相关的信息,请参见STCRP Release Notes

2.3. 管理硬件

2.3.1. 安全须知

说明:本章节主要介绍安装硬件过程中涉及安全的事项,更多STCP920的使用要求、软硬件规格等信息,请参见希姆计算STCP920 AI推理卡产品手册

为确保人身安全和设备安全,请务必确保:

  • 保持服务器以及周围工作区域清洁无尘土。

  • 在打开服务器外壳前拔下电源线。

除保持环境清洁及操作前断电外,还需要注意静电放电ESD(Electro-Static Discharge)。在安装STCP920时操作不当可能因ESD损坏电子组件,并导致设备整体故障或间歇故障。进行拆卸和更换组件操作时,请始终遵循防ESD流程,包括但不限于:

  • 确保佩戴ESD腕带或踝带,且与皮肤接触良好。将腕带或踝带的设备端连接到底座上未涂漆的金属表面。

  • 避免让STCP920接触您的衣物。腕带或踝带只能防止身体产生的ESD影响电子组件,但无法防止衣物产生的ESD。

  • 拿起STCP920时只能接触其托架或边缘,避免接触印刷电路板或连接器。

  • 将STCP920放在防静电的表面上,例如套件中提供的防静电袋。

  • 如需退还STCP920,请立即将其放入防静电袋内。

2.3.2. 准备工作

在开始安装STCP920前,请了解其硬件规格并完成以下准备工作:

  • 预留安装的最小可用空间,即至少单宽、3/4长、全高(268.44mm × 111.15mm)的空间。

  • 确保服务器支持PCIe 4.0 × 16接口。

  • 确保PCIe接口的输入电压和输入电流满足规范。规范如下:

PCIe接口 最小电压 正常电压 最大电压 峰值电流需求
PCIe Edge Connecter(12V) 11.04V 12V 12.96V 0.5A
PCIe 8-Pin Connecter(12V) 11.04V 12V 12.96V 13A
PCIe Edge Connecter(3V3) 3.0V 3.3V 3.6V 0.3A
  • 确保服务器满足冷却用的最小风量要求。STCP920采用被动散热,服务器需要满足最小风量需求以保证STCP920工作在安全温度范围。

    注意:进风口环境温度为平均温度,最小风量需求为通过板卡进风口的风量。最小风量需求为建议值,即使针对同一温度,在不同系统中仍需要根据实际系统实测决定提供的最终风量。

  • 吹风方向

../_images/stc-env-install-04.png

  • 吸风方向

../_images/stc-env-install-05.png

2.3.3. 安装步骤

  1. 关闭服务器并拔下电源线。

  2. 打开服务器外壳,在主板上找到PCIe 4.0 × 16插槽。如果该插槽周围空间狭小不便安装,可移除该插槽相邻的PCIe插槽盖。

  3. 将STCP920插入PCIe 4.0 × 16插槽。

  4. 为STCP920接入电源,使用服务器主板上的PCIe 8-Pin电源插头连接到STCP920的PCIe 8-Pin电源接口即可。

  5. 为服务器装上外壳。

  6. 为服务器连接电源线并启动服务器。

    警告:STCP920采用被动散热,在启动服务器前请再次确认STCP920上有足够的冷却风量通过。如果不能确保冷却风量要求,上电后可能导致STCP920损坏。在使用过程中STCP920可能发热,请及时关注并谨慎处理过热的情况。

  7. 验证是否已成功安装STCP920。执行以下命令检查STCP920的安装状态,回显设备信息则说明操作系统已发现设备。下方示例中共发现了2个NPU设备,分别占用了BUS-ID 17:00.0和ca:00.0:

    $ lspci -vd 23e2:
    31:00.0 Processing accelerators: Device 23e2:0100
            Subsystem: Device 23e2:0000
            Physical Slot: 39
            Flags: bus master, fast devsel, latency 0, IRQ 18, NUMA node 0
            Memory at 202800000000 (64-bit, prefetchable) [size=16G]
            Memory at ae000000 (64-bit, non-prefetchable) [size=32M]
            Memory at 202c00000000 (64-bit, prefetchable) [size=1G]
            Capabilities: <access denied>
            Kernel driver in use: stc
            Kernel modules: stc
    

2.4. 操作系统要求

2.4.1. 使用推荐的Linux操作系统版本

仅支持在Linux操作系统中使用配套软件。HPE对主机的编译器、C运行时库等有一定要求,主机环境和HPE能否正常运行紧密相关。在安装HPE前,请执行以下命令查看操作系统版本:

$ uname -m && cat /etc/*release

推荐选择以下操作系统版本,在这些版本上HPE进行了充分的验证。在其他版本上HPE可能可以运行,但并不能始终得到保障。

说明:安装HPE和TensorTurbo时,要求操作系统已安装GCC 7.1.0或以上版本。同时,建议采用下表中推荐的GCC版本,操作系统版本使用apt或yum安装时默认就是推荐的GCC版本。

操作系统版本 Linux内核版本 glibc版本 推荐的GCC版本 推荐的dkms版本
Ubuntu 18.04 4.15.0
5.4.0
2.27 7.5.0 2.3-3
Ubuntu 20.04 5.8.0
5.4.0
2.31 9.4.0 2.8.1-5
Ubuntu 22.04 5.15.0-89 2.35 11.4.0 2.8.7
Debian 10 4.19.0
5.4.56
2.28 8.3.0 2.6.1-4
CentOS 7 3.10.0-1160 2.17 7.3.1 3.0.3-1
CentOS 8 4.18.0
4.19.0
5.10.0
2.28 8.5.0 3.0.8-1
银河麒麟高级服务器操作系统V10(以下简称麒麟 V10) 4.19.90 2.28 7.3.0 2.6.1-6
统信服务器操作系统V20(以下简称UOS V20) 4.19.0 2.28 8.5.0 2.8.5-1
BC-Linux V8.2 4.19.0 2.28 8.5.0 3.0.11
BC-Linux For Euler 22.10(以下简称BC-Linux V22.10) 5.10.0 2.34 10.3.1 2.6.1
Red Hat Enterprise Linux 9.0(以下简称RHEL 9.0) 5.14.0-386 2.34 11.4.1 3.0.12

2.4.2. 确保已正确安装kernel headers

安装HPE前,必须确保操作系统的kernel和kernel headers版本匹配,例如,kernel版本为5.4.0-42,则kernel headers也必须匹配5.4.0-42。

说明:必要时您可能需要更改kernel版本来满足要求,例如当前kernel版本并没有匹配的kernel headers时。

在Ubuntu、Debian 10中检查和安装kernel headers的参考步骤如下:

  1. 检查操作系统中是否已正确安装kernel headers,回显kernel headers相关的信息且和kernel版本匹配即可。

    $ sudo dpkg --get-selections | grep $(uname -r)
    linux-headers-5.4.0-42-generic                  install
    linux-image-5.4.0-42-generic                    install
    linux-modules-5.4.0-42-generic                  install
    linux-modules-extra-5.4.0-42-generic            install
    
  2. 如果尚未正确安装kernel headers,需要手动安装kernel headers。

    $ sudo apt-get install linux-headers-$(uname -r)
    

在CentOS、麒麟V10、UOS V20、BC-Linux V8.2、BC-Linux V22.10中检查和安装kernel headers和kernel devel的参考步骤如下:

  1. 检查操作系统中是否已正确安装kernel headers和kernel devel,回显kernel headers相关的信息且和kernel版本匹配即可。

    $ uname -r
    3.10.0-1160.76.1.el7.x86_64
    $ sudo yum list | grep kernel-headers
    kernel-headers.x86_64                      3.10.0-1160.76.1.el7   @updates
    $ sudo yum list | grep kernel-devel
    
  2. 如果尚未正确安装kernel headers和kernel devel,需要手动安装kernel headers和kernel devel。

    $ sudo yum install kernel-devel-$(uname -r) kernel-headers-$(uname -r)
    

在RHEL 9.0中检查和安装kernel headers和kernel-devel-matched的参考步骤如下:

  1. 检查操作系统中是否已正确安装kernel headers和kernel-devel-matched,回显kernel headers相关的信息且和kernel版本匹配即可。

    $ uname -r
    5.14.0-70.13.1.el9_0.x86_64
    $ sudo yum list | grep kernel-headers
    kernel-headers.x86_64                                5.14.0-404.el9                     Appstream
    $ sudo yum list | grep kernel-devel
    kernel-devel.x86_64                                  5.14.0-404.el9                     Appstream
    kernel-devel-matched.x86_64                          5.14.0-404.el9                     Appstream
    
  2. 如果尚未正确安装kernel headers和kernel-devel-matched,需要手动安装kernel headers和kernel-devel-matched。

    $ sudo yum install kernel-devel-matched-$(uname -r) kernel-headers-$(uname -r)
    

2.4.3. 确保已启用正确的GCC版本(CentOS 7)

安装HPE时要求GCC版本不能过低,目前操作系统版本使用apt或yum安装时默认就是推荐的GCC版本。以在CentOS 7中使用yum安装GCC 7.1.0以及libstdc++.so.6.0.22为例,参考步骤如下:

  1. 检查GCC版本。如果当前GCC版本低于7.1.0,需要将GCC升级到7.1.0或以上版本。

    $ gcc --version
    
  2. 安装并启用GCC 7。

    $ sudo yum install centos-release-scl
    $ sudo yum install devtoolset-7-gcc devtoolset-7-gcc-c++ devtoolset-7-binutils
    $ scl enable devtoolset-7 bash
    

    scl命令用于临时启用GCC 7,退出Shell或重启服务器后就会恢复至原版本。如果您需要长期使用GCC 7,请修改配置文件并使之立即生效。

    $ echo "source /opt/rh/devtoolset-7/enable" >> /etc/profile
    $ source /etc/profile
    
  3. 安装libstdc++.so.6.0.22。配套软件安装包中提供了libstdc++.so.6.0.22,您也可以自行搜索获取。

    $ tar -xvzf centos7-py36-hpe1.7.0-tb1.12.0.tar.gz
    $ cd centos7-py36-hpe1.7.0-tb1.12.0
    $ cp -rf libstdc++.so.6.0.22 /usr/lib64/
    $ cd /usr/lib64/
    $ rm -rf libstdc++.so.6
    $ ln -sf libstdc++.so.6.0.22 libstdc++.so.6
    

    如果您安装版本小于6.0.22的libstdc++.so,则还需要执行以下命令:

    $ ls -alh /usr/lib64/libstdc++*
    

2.5. 管理软件

2.5.1. 配置源

2.5.1.1. 配置须知

用于安装HPE的deb包(适用于Ubuntu、Debian 10)和rpm包(适用于CentOS、麒麟 V10、UOS V20、BC-Linux V8.2、BC-Linux V22.10、RHEL 9.0)都是存储库包,存储库包会在操作系统中安装本地存储库并通知包管理器实际安装包的位置,然后从apt或yum源获取并安装HPE的各个模块。

说明:安装HPE过程中执行的命令大部分需要超级用户权限,建议您使用root用户或者sudo用户执行命令。

我们提供了本地源和远程源,请按需求选用。本地源和远程源的区别如下:

  • 使用本地源时,提供形式为离线安装包。您需要自行获取和管理离线安装包,配套软件安装包名称格式如下:

说明:请联系希姆计算技术支持获取配套软件安装包。

配套软件 安装包名称格式
HPE deb包名称格式:hpe-repo-{OS}-{main_version}-local_{sub_version}amd64.deb
rpm包名称格式:hpe-repo-{OS}-{main_version}-local
{sub_version}_x86_64.rpm
HPE整包中包括了驱动以及stc-smi、stc-gdb、stc-prof、stc-vprof等监控调试工具,支持通过命令控制安装的模块分类。
TensorTurbo tb_{OS}-{tensorturbo_version}-cp{python_version}-{abi}-linux_x86_64.whl
stc-hpaa stc-hpaa-{tensorturbo_version}-py{python_version}.tar.gz
STC_DDK stc_ddk-{stc_ddk version}-py{python_version}-{OS}.whl
其他安装用附加文件 Dockerfile:Docker方式安装时构建Docker镜像的示例。
requirements:模型编译依赖,按需从requirements.txt、requirements_venv2.txt等中选择。
libstdc++.so.6.0.22:供CentOS 7安装的库。

以STCRP V1.5.1、Ubuntu 20.04、Python 3.7为例,安装包名称示例如下:

配套软件 安装包名称示例
HPE hpe-repo-ubuntu2004-1-7-local_1.7.0_amd64.deb
TensorTurbo tb_ubuntu2004-1.12.0-cp37-cp37m-linux_x86_64.whl
stc-hpaa stc-hpaa-1.12.0-py37.tar.gz
STC_DDK stc_ddk-1.3.0-cp37-cp37m-linux_x86_64.whl
  • 使用远程源时,提供形式为URL。您在服务器上配置好远程源的信息即可,无需自行管理安装包。

2.5.1.2. 使用限制

安装HPE时需要注意大版本和小版本的区别:

  • 大版本:例如hpe-1-5、hpe-1-6,限制在安装新版本前必须卸载旧版本。例如在服务器上已安装hpe-1-5后,希望升级到hpe-1-6,不可覆盖安装,必须先卸载掉hpe-1-5,然后再安装hpe-1-6。

  • 小版本:例如hpe-1-5-1.5.0、hpe-1-5-1.5.1,允许升级安装。例如在服务器上已安装hpe-1-5-1.5.0,希望升级到hpe-1-5-1.5.1,覆盖安装即可。

注意:如果安装了npu-exporter并开启了服务,则在安装或升级HPE前必须执行sudo systemctl stop npu_exporter.service关闭该服务,等安装或升级后再重新开启。

2.5.1.3. 配置本地源

为HPE配置本地源时,将HPE安装包复制到服务器,然后安装本地存储库并添加GPG密钥。以STCRP V1.5.1为例,命令如下:

  • Ubuntu 18.04

    $ sudo dpkg -i hpe-repo-ubuntu1804-1-7-local_1.7.0_amd64.deb
    $ sudo apt-key add /var/hpe-*/hpe.pub
    
  • Ubuntu 20.04

    $ sudo dpkg -i hpe-repo-ubuntu2004-1-7-local_1.7.0_amd64.deb
    $ sudo apt-key add /var/hpe-*/hpe.pub
    
  • Ubuntu 22.04

    $ sudo dpkg -i hpe-repo-ubuntu2204-1-7-local_1.7.0_amd64.deb
    $ sudo apt-key add /var/hpe-*/hpe.pub
    
  • Debian 10

    $ sudo dpkg -i hpe-repo-debian10-1-7-local_1.7.0_amd64.deb
    $ sudo apt-key add /var/hpe-*/hpe.pub
    
  • CentOS 7

    $ sudo yum install hpe-repo-centos7-1-7-local_1.7.0_x86_64.rpm
    $ sudo rpm --import /var/hpe-*/hpe.pub
    
  • CentOS 8

    说明:配置本地源前,请确保已经安装dkms依赖包。

    $ wget https://mirrors.tuna.tsinghua.edu.cn/epel/8/Everything/x86_64/Packages/d/dkms-3.0.12-1.el8.noarch.rpm
    $ yum install dkms-3.0.12-1.el8.noarch.rpm
    $ yum install gcc-c++
    $ sudo yum install hpe-repo-centos8-1-7-local_1.7.0_x86_64.rpm
    $ sudo rpm --import /var/hpe-*/hpe.pub
    
  • 麒麟 V10

    $ sudo yum install hpe-repo-kylinV10-1-7-local_1.7.0_x86_64.rpm
    $ sudo rpm --import /var/hpe-*/hpe.pub
    
  • UOS V20

    $ yum install gcc-c++
    $ sudo yum install hpe-repo-uos20-1-7-local_1.7.0_x86_64.rpm
    $ sudo rpm --import /var/hpe-*/hpe.pub
    
  • BC-Linux V8.2

    说明:配置本地源前,请确保已经安装dtc、libfdt和dkms依赖包。

    # 安装dtc、libfdt和dkms依赖包
    $ wget https://vault.centos.org/8.5.2111/PowerTools/x86_64/os/Packages/dtc-1.6.0-1.el8.x86_64.rpm
    $ wget https://vault.centos.org/8.5.2111/PowerTools/x86_64/os/Packages/libfdt-1.6.0-1.el8.x86_64.rpm
    $ wget https://mirrors.tuna.tsinghua.edu.cn/epel/8/Everything/x86_64/Packages/d/dkms-3.0.12-1.el8.noarch.rpm
    $ yum install dtc-1.6.0-1.el8.x86_64.rpm
    $ yum install libfdt-1.6.0-1.el8.x86_64.rpm
    $ yum install dkms-3.0.12-1.el8.noarch.rpm
    # 配置hpe本地源
    $ sudo yum install hpe-repo-bclinux82-1-7-local_1.7.0_x86_64.rpm
    $ sudo rpm --import /var/hpe-*/hpe.pub
    
  • BC-Linux V22.10

    $ sudo yum install hpe-repo-bclinux2210-1-7-local_1.7.0_x86_64.rpm
    $ sudo rpm --import /var/hpe-*/hpe.pub
    
  • RHEL 9.0

    说明:配置本地源前,请确保已经安装dkms依赖包。

    $ wget https://mirrors.tuna.tsinghua.edu.cn/epel/8/Everything/x86_64/Packages/d/dkms-3.0.12-1.el8.noarch.rpm
    $ yum install dkms-3.0.12-1.el8.noarch.rpm
    $ yum install gcc-c++
    $ sudo yum install hpe-repo-rhel90-1-7-local_1.7.0_x86_64.rpm
    $ sudo rpm --import /var/hpe-*/hpe.pub
    

为TensorTurbo及其他工具配置本地源时,将TensorTurbo及其他工具的安装包复制到服务器,然后解压即可。以STCRP V1.5.1为例,命令如下:

  • Ubuntu 18.04,以Python 3.7为例:

    $ tar -xvzf ubuntu1804-py37-hpe1.7.0-tb1.12.0.tar.gz
    
  • Ubuntu 20.04

    $ tar -xvzf ubuntu2004-py37-hpe1.7.0-tb1.12.0.tar.gz
    
  • Ubuntu 22.04

    $ tar -xvzf ubuntu2204-py37-hpe1.7.0-tb1.12.0.tar.gz
    
  • Debian 10

    $ tar -xvzf debian10-py37-hpe1.7.0-tb1.12.0.tar.gz
    
  • CentOS 7,以Python 3.6为例:

    $ tar -xvzf centos7-py36-hpe1.7.0-tb1.12.0.tar.gz
    
  • CentOS 8,以Python 3.7为例:

    $ tar -xvzf centos8-py37-hpe1.7.0-tb1.12.0.tar.gz
    
  • 麒麟 V10

    $ tar -xvzf kylinV10-py37-hpe1.7.0-tb1.12.0.tar.gz
    
  • UOS V20

    $ tar -xvzf uos20-py37-hpe1.7.0-tb1.12.0.tar.gz
    
  • BC-Linux V8.2

    $ tar -xvzf bclinux82-py37-hpe1.7.0-tb1.12.0.tar.gz
    
  • BC-Linux V22.10

    $ tar -xvzf bclinux2210-py37-hpe1.7.0-tb1.12.0.tar.gz
    
  • RHEL 9.0

    $ tar -xvzf rhel90-py37-hpe1.7.0-tb1.12.0.tar.gz
    

2.5.1.4. 配置远程源

确保Python环境满足要求后,TensorTurbo及其他工具在线安装时通过-i参数指定URL即可。如果为整包方式安装,参考管理软件 > 整包方式安装 > 准备工作章节的要求准备好Python环境;如果为Docker方式安装,参考示例在Dockerfile中包括准备Python环境的命令。

为HPE配置远程apt或yum源的步骤如下。配置远程源后,安装软件时默认安装最新的版本。例如,在远程源中同时存在hpe-1-5-1.5.0、hpe-1-5-1.5.1,默认安装hpe-1-5-1.5.1;在远程源中同时存在hpe-1-5、hpe-1-6,默认安装hpe-1-6。

  1. 添加远程源信息以及GPG密钥。

    • Ubuntu 18.04

      $ sudo find /etc/apt/sources.list.d/*hpe* | sudo xargs rm -rf
      $ sudo wget --user=stcp_user --password=StcpDownload https://sources.streamcomputing.com/compute/hpe/repos/ubuntu1804/x86_64/hpe-ubuntu1804.list -O /etc/apt/sources.list.d/repo_list.list
      $ sudo wget --user=stcp_user --password=StcpDownload https://sources.streamcomputing.com/compute/hpe/repos/ubuntu1804/x86_64/hpe.pub
      $ sudo apt-key add hpe.pub
      
    • Ubuntu 20.04

      $ sudo find /etc/apt/sources.list.d/*hpe* | sudo xargs rm -rf
      $ sudo wget --user=stcp_user --password=StcpDownload https://sources.streamcomputing.com/compute/hpe/repos/ubuntu2004/x86_64/hpe-ubuntu2004.list -O /etc/apt/sources.list.d/repo_list.list
      $ sudo wget --user=stcp_user --password=StcpDownload https://sources.streamcomputing.com/compute/hpe/repos/ubuntu2004/x86_64/hpe.pub
      $ sudo apt-key add hpe.pub
      
    • Ubuntu 22.04

      $ sudo find /etc/apt/sources.list.d/*hpe* | sudo xargs rm -rf
      $ sudo wget --user=stcp_user --password=StcpDownload https://sources.streamcomputing.com/compute/hpe/repos/ubuntu2204/x86_64/hpe-ubuntu2204.list -O /etc/apt/sources.list.d/repo_list.list
      $ sudo wget --user=stcp_user --password=StcpDownload https://sources.streamcomputing.com/compute/hpe/repos/ubuntu2204/x86_64/hpe.pub
      $ sudo apt-key add hpe.pub
      
    • Debian 10

      $ sudo find /etc/apt/sources.list.d/*hpe* | sudo xargs rm -rf
      $ sudo wget --user=stcp_user --password=StcpDownload https://sources.streamcomputing.com/compute/hpe/repos/debian10/x86_64/hpe-debian10.list -O /etc/apt/sources.list.d/repo_list.list
      $ sudo wget --user=stcp_user --password=StcpDownload https://sources.streamcomputing.com/compute/hpe/repos/debian10/x86_64/hpe.pub
      $ sudo apt-key add hpe.pub
      
    • CentOS 7

      $ sudo find /etc/yum.repos.d/*hpe* | sudo xargs rm -rf
      $ sudo wget --user=stcp_user --password=StcpDownload https://sources.streamcomputing.com/compute/hpe/repos/centos7/x86_64/hpe-centos7.repo -O /etc/yum.repos.d/repo_list.repo
      $ sudo wget --user=stcp_user --password=StcpDownload https://sources.streamcomputing.com/compute/hpe/repos/centos7/x86_64/hpe.pub
      $ sudo rpm --import hpe.pub
      
    • CentOS 8

      $ sudo find /etc/yum.repos.d/*hpe* | sudo xargs rm -rf
      $ sudo wget --user=stcp_user --password=StcpDownload https://sources.streamcomputing.com/compute/hpe/repos/centos8/x86_64/hpe-centos8.repo -O /etc/yum.repos.d/repo_list.repo
      $ sudo wget --user=stcp_user --password=StcpDownload https://sources.streamcomputing.com/compute/hpe/repos/centos8/x86_64/hpe.pub
      $ sudo rpm --import hpe.pub
      
    • 麒麟 V10

      $ sudo find /etc/yum.repos.d/*hpe* | sudo xargs rm -rf
      $ sudo wget --user=stcp_user --password=StcpDownload https://sources.streamcomputing.com/compute/hpe/repos/kylinV10/x86_64/hpe-kylinV10.repo -O /etc/yum.repos.d/repo_list.repo
      $ sudo wget --user=stcp_user --password=StcpDownload https://sources.streamcomputing.com/compute/hpe/repos/kylinV10/x86_64/hpe.pub
      $ sudo rpm --import hpe.pub
      
    • UOS V20

      $ sudo find /etc/yum.repos.d/*hpe* | sudo xargs rm -rf
      $ sudo wget --user=stcp_user --password=StcpDownload https://sources.streamcomputing.com/compute/hpe/repos/uos20/x86_64/hpe-uos20.repo -O /etc/yum.repos.d/repo_list.repo
      $ sudo wget --user=stcp_user --password=StcpDownload https://sources.streamcomputing.com/compute/hpe/repos/uos20/x86_64/hpe.pub
      $ sudo rpm --import hpe.pub
      
    • BC-Linux V8.2

      # 安装dtc、libfdt和dkms依赖包
      $ wget https://vault.centos.org/8.5.2111/PowerTools/x86_64/os/Packages/dtc-1.6.0-1.el8.x86_64.rpm
      $ wget https://vault.centos.org/8.5.2111/PowerTools/x86_64/os/Packages/libfdt-1.6.0-1.el8.x86_64.rpm
      $ wget https://mirrors.tuna.tsinghua.edu.cn/epel/8/Everything/x86_64/Packages/d/dkms-3.0.12-1.el8.noarch.rpm
      $ yum install dtc-1.6.0-1.el8.x86_64.rpm
      $ yum install libfdt-1.6.0-1.el8.x86_64.rpm
      $ yum install dkms-3.0.12-1.el8.noarch.rpm
      # 配置远程源
      $ sudo find /etc/yum.repos.d/*hpe* | sudo xargs rm -rf
      $ sudo wget --user=stcp_user --password=StcpDownload https://sources.streamcomputing.com/compute/hpe/repos/bclinux82/x86_64/hpe-bclinux82.repo -O /etc/yum.repos.d/repo_list.repo
      $ sudo wget --user=stcp_user --password=StcpDownload https://sources.streamcomputing.com/compute/hpe/repos/bclinux82/x86_64/hpe.pub
      $ sudo rpm --import hpe.pub
      
    • BC-Linux V22.10

      $ sudo find /etc/yum.repos.d/*hpe* | sudo xargs rm -rf
      $ sudo wget --user=stcp_user --password=StcpDownload https://sources.streamcomputing.com/compute/hpe/repos/bclinux2210/x86_64/hpe-bclinux2210.repo -O /etc/yum.repos.d/repo_list.repo
      $ sudo wget --user=stcp_user --password=StcpDownload https://sources.streamcomputing.com/compute/hpe/repos/bclinux2210/x86_64/hpe.pub
      $ sudo rpm --import hpe.pub
      
    • RHEL 9.0

      $ sudo find /etc/yum.repos.d/*hpe* | sudo xargs rm -rf
      $ sudo wget --user=stcp_user --password=StcpDownload https://sources.streamcomputing.com/compute/hpe/repos/rhel90/x86_64/hpe-rhel90.repo -O /etc/yum.repos.d/repo_list.repo
      $ sudo wget --user=stcp_user --password=StcpDownload https://sources.streamcomputing.com/compute/hpe/repos/rhel90/x86_64/hpe.pub
      $ sudo rpm --import hpe.pub
      
  2. 在Ubuntu 18.04、Ubuntu 20.04、Ubuntu 22.04、Debian 10中,还需要在/etc/apt/auth.conf.d目录下新建sources_stc.conf文件,并添加验证信息。添加完成后效果如下:

    $ cat /etc/apt/auth.conf.d/sources_stc.conf
    machine sources.streamcomputing.com 8 login stcp_user password StcpDownload
    

2.5.2. 整包方式安装

2.5.2.1. 安装须知

整包方式是指将所有配套软件都安装在主机上,Docker方式中则将HPE驱动模块安装在主机上,其他模块安装在容器中。

建议先安装HPE再安装TensorTurbo及其他工具,配套软件之间存在版本对应关系,详细信息请参见STCRP Release Notes

2.5.2.2. 准备工作

安装TensorTurbo需要Python支持,因此请确保已完成以下动作:

  • 已在服务器上准备好Python环境,您可以执行python -Vpython3 -V查看Python版本。如果当前Python版本未满足要求,请使用Anaconda、Miniconda等方式新建或切换Python环境。我们针对以下Python版本发布了TensorTurbo安装包:

    • Ubuntu 18.04:Python 3.7或Python 3.6

    • Ubuntu 20.04:Python 3.7

    • Ubuntu 22.04:Python 3.7

    • Debian 10:Python 3.7

    • CentOS 7:Python 3.6或Python 3.7

    • CentOS 8:Python 3.7或Python 3.6

    • 麒麟V10:Python 3.7

    • UOS V20:Python 3.7

    • BC-Linux V8.2:Python 3.7

    • BC-Linux V22.10:Python 3.7

    • RHEL 9.0:Python 3.7

说明:STC_DDK要求使用Python 3.7。如果您需要使用STC_DDK,请注意使用一致的Python版本。STC_DDK的特性和使用方法,请参见希姆计算STC_DDK使用说明

  • 一些第三方依赖包可能需要高版本的pip,建议在开始安装前执行python -m pip install -U pippython3 -m pip install -U pip升级下pip版本。

2.5.2.3. 安装HPE

2.5.2.3.1. 安装步骤

配置本地源或远程源后,检查软件包信息并安装HPE所有模块的命令如下:

  • Ubuntu、Debian 10

    $ sudo apt update
    $ sudo apt install hpe
    
  • CentOS、麒麟 V10、UOS V20、BC-Linux V8.2、BC-Linux V22.10、RHEL 9.0

    $ sudo yum clean all
    $ sudo yum makecache
    $ sudo yum install hpe
    

说明:配置远程源后,安装软件时默认安装最新的版本。例如,在远程源中同时存在hpe-1-5-1.5.0、hpe-1-5-1.5.1,默认安装hpe-1-5-1.5.1;在远程源中同时存在hpe-1-5、hpe-1-6,默认安装hpe-1-6。如有需要,您也可以手动指定大版本,例如sudo apt install hpe-1-5

2.5.2.3.2. 故障排查

安装HPE时,如果遇到提示缺失依赖或者类似的报错,例如:

$ sudo apt install hpe
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 hpe : Depends: hpe-1-7 (>= 1.7.0) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

原因可能是:

  • 重复安装:已经安装了大版本HPE,例如已经安装了hpe-1-6,未经卸载就直接安装hpe-1-7。

  • 无法获取到所需的依赖:OS配置的软件源中没有添加所需的依赖,例如服务器未连接外网,且内网软件源中依赖不全。

解决方法为:

  • 针对重复安装:请先卸载旧版本HPE,然后再安装新版本的HPE。

  • 针对无法获取到所需的依赖:

  1. apt的报错信息不足以定位缺失的具体依赖,您可以执行sudo aptitude install hpe进行更全面地检查。

    说明:如果因为找不到依赖导致出错,yum的报错信息中一般会直接提示。

  2. 如果允许使用外网资源,建议参考配置远程源章节使用希姆计算提供的软件源;如果不允许使用外网资源,则需要参考aptitude报错自行选择方式逐一添加依赖,例如在内网源添加依赖、在OS镜像文件中就包括依赖等。

2.5.2.4. 安装TensorTurbo及其他工具

2.5.2.4.1. 离线安装

进入TensorTurbo安装包所在目录执行安装命令即可,离线安装的命令如下:

  1. 安装TensorTurbo,TensorTurbo的安装包区分操作系统。

    • Ubuntu 18.04,以Python 3.7为例:

      $ cd ubuntu1804-py37-hpe1.7.0-tb1.12.0
      $ pip3 install tb_ubuntu1804-1.12.0-cp37-cp37m-linux_x86_64.whl
      
    • Ubuntu 20.04

      $ cd ubuntu2004-py37-hpe1.7.0-tb1.12.0
      $ pip3 install tb_ubuntu2004-1.12.0-cp37-cp37m-linux_x86_64.whl
      
    • Ubuntu 22.04

      $ cd ubuntu2204-py37-hpe1.7.0-tb1.12.0
      $ pip3 install tb_ubuntu2204-1.12.0-cp37-cp37m-linux_x86_64.whl
      
    • Debian 10

      $ cd debian10-py37-hpe1.7.0-tb1.12.0
      $ python3 -m pip install -U pip
      $ pip3 install tb_debian10-1.12.0-cp37-cp37m-linux_x86_64.whl
      
    • CentOS 7,以Python 3.6为例:

      $ cd centos7-py36-hpe1.7.0-tb1.12.0
      $ pip3 install tb_centos7-1.12.0-cp36-cp36m-linux_x86_64.whl
      
    • CentOS 8,以Python 3.7为例:

      $ cd centos8-py37-hpe1.7.0-tb1.12.0
      $ pip3 install tb_centos8-1.12.0-cp37-cp37m-linux_x86_64.whl
      
    • 麒麟 V10

      $ cd kylinV10-py37-hpe1.7.0-tb1.12.0
      $ pip3 install tb_kylinV10-1.12.0-cp37-cp37m-linux_x86_64.whl
      
    • UOS V20

      $ cd uos20-py37-hpe1.7.0-tb1.12.0
      $ pip3 install tb_uos20-1.12.0-cp37-cp37m-linux_x86_64.whl
      
    • BC-Linux V8.2

      $ cd bclinux82-py37-hpe1.7.0-tb1.12.0
      $ pip3 install tb_bclinux82-1.12.0-cp37-cp37m-linux_x86_64.whl
      
    • BC-Linux V22.10

      $ cd bclinux2210-py37-hpe1.7.0-tb1.12.0
      $ pip3 install tb_bclinux2210-1.12.0-cp37-cp37m-linux_x86_64.whl
      
    • RHEL 9.0:

      $ cd rhel90-py37-hpe1.7.0-tb1.12.0
      $ pip3 install tb_rhel90-1.12.0-cp37-cp37m-linux_x86_64.whl
      
  2. stc-hpaa以脚本形式提供,无需安装,解压使用即可。

    • 适用于Python 3.7的脚本:

      $ tar -xvzf stc-hpaa-1.12.0-py37.tar.gz
      
    • 适用于Python 3.6的脚本:

      $ tar -xvzf stc-hpaa-1.12.0-py36.tar.gz
      
2.5.2.4.2. 在线安装

参考准备工作章节确保Python环境满足要求后,TensorTurbo及其他工具在线安装时通过-i参数指定在线URL即可。在线安装的步骤如下:

  1. 安装TensorTurbo,需要在命令中添加验证信息,TensorTurbo的安装包区分操作系统。

  2. 下载stc-hpaa,需要在命令中添加验证信息。stc-hpaa以脚本形式提供,无需安装,下载后解压使用即可。

    • 下载适用于Python 3.7的脚本:

      $ wget --user=stcp_user --password=StcpDownload http://sources.streamcomputing.com/packages/stc-hpaa-1.12.0-py37.tar.gz
      
    • 下载适用于Python 3.6的脚本:

      $ wget --user=stcp_user --password=StcpDownload http://sources.streamcomputing.com/packages/stc-hpaa-1.12.0-py36.tar.gz
      
2.5.2.4.3. 故障排查

如果安装时出现不支持安装的报错,请检查是否启用了符合要求的Python版本,以及whl包和Python版本是否匹配。报错示例如下:

ERROR: tb_ubuntu2004-1.12.0-cp37-cp37m-linux_x86_64.whl is not a supported wheel on this platform.

如果whl包和Python版本不匹配,请尝试更换与Python版本匹配的whl包。或者进入当前的Python环境查看支持的whl包命名类型,根据输出信息修改whl包名称中的cp{python_version}-{abi}部分,确保和输出信息对应,然后重新尝试安装。在Python3.7环境中的输出信息示例如下:

>>> import pip._internal
>>> print(pip._internal.pep425tags.get_supported())
[('cp37', 'cp37m', 'manylinux1_x86_64'), ('cp37', 'cp37m', 'linux_x86_64'), ('cp37', 'abi3', 'manylinux1_x86_64'), ('cp37', 'abi3', 'linux_x86_64'), ('cp37', 'none', 'manylinux1_x86_64'), ('cp37', 'none', 'linux_x86_64'), ('cp36', 'abi3', 'manylinux1_x86_64‘)]

2.5.2.5. 验证安装结果

安装完成后,验证HPE、TensorTurbo等是否已正常运行。

验证HPE的步骤如下:

  1. 查看stc模块以及hpe目录(/usr/local/hpe/)。示例回显信息如下:

    $ lsmod | grep stc
    stc                   512000  0
    $ ls /usr/local/hpe/
    bin  conf  example  include  java  lib  libexec  riscv32npu  share  version.txt  version.yml
    
  2. 试用HPE,进入hpe-example所在目录并运行用例。以hello_world为例,如果HPE已正常运行,则硬件返回响应信息。更多用例的说明,请参见希姆计算HPE示例程序

    注意:如果在虚拟机中使用设备,首次启动虚拟机后,建议在虚拟机中重启一次板卡,否则可能无法运行hello_world。

    $ cd /usr/local/hpe/example
    $ make
    $ ./hello_world
    running hello_world......
    hello world from core 0/8.
    hello world from core 1/8.
    hello world from core 2/8.
    hello world from core 3/8.
    hello world from core 4/8.
    hello world from core 5/8.
    hello world from core 6/8.
    hello world from core 7/8.
    

验证TensorTurbo的步骤如下:

  1. 查看tb模块,回显tb模块及版本即表示已成功安装TensorTurbo。以Ubuntu 20.04为例:

    $ pip3 list | grep tb
    tb-ubuntu2004          1.12.0
    
  2. 验证导入tb模块。未提示导入错误,则表示导入成功。

    $ python3
    Python 3.7.15 (default, Oct 12 2022, 19:14:38)
    [GCC 9.4.0] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import tb
    >>>
    

2.5.2.6. 安装模型编译依赖

import tb成功代表库已经导入成功,但后续编译模型时可能需要更多其他依赖。针对编译模型,配套软件安装包中为各操作系统版本提供了安装推荐依赖的文件,包括requirements.txt(包含了TensorFlow 1.x相关的依赖)、requirements_venv2.txt(包含了TensorFlow 2.x相关的依赖)、requirements_extra.txt(包含个别模型额外需要的依赖)文件。您通过pip3 install -r {requirements_file_name}.txt命令安装即可。

安装TensorTurbo时会自动安装import tb相关的依赖,在验证import tb时一般不会出现ModuleNotFoundError类的报错。如果遇到ModuleNotFoundError类的报错,请根据具体的报错排查,例如缺少graphviz的报错示例如下:

$ python3
Python 3.6.13 |Anaconda, Inc.| (default, Jun  4 2021, 14:25:59) 
[GCC 7.5.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tb
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/ubuntu/miniconda3/envs/tbwhl160/lib/python3.6/site-packages/tb/__init__.py", line 6, in <module>
    from .utils import DumpIR
  File "/home/ubuntu/miniconda3/envs/tbwhl160/lib/python3.6/site-packages/tb/utils/__init__.py", line 4, in <module>
    from .visualize import visualize
  File "/home/ubuntu/miniconda3/envs/tbwhl160/lib/python3.6/site-packages/tb/utils/visualize.py", line 19, in <module>
    from graphviz import Digraph
ModuleNotFoundError: No module named 'graphviz'

2.5.2.7. 卸载TensorTurbo

说明:在更新安装等情况下,您可能需要卸载并重新安装配套软件。卸载操作本身没有强制顺序要求,先卸载任一软件均可操作成功,但推荐您先卸载TensorTurbo再卸载HPE。

卸载TensorTurbo的命令如下:

  1. 查看已安装的tb模块。以Ubuntu 20.04为例:

    $ pip3 list | grep tb
    tb-ubuntu2004          1.12.0
    
  2. 卸载tb模块。

    $ sudo pip3 uninstall tb-ubuntu2004
    Found existing installation: tb-ubuntu2004 1.12.0
    Uninstalling tb-ubuntu2004-1.12.0:
      Successfully uninstalled tb-ubuntu2004-1.12.0
    

2.5.2.8. 卸载HPE

2.5.2.8.1. 终止占用HPE驱动的程序

在卸载HPE前,请确保没有运行任何依赖HPE驱动(stc.ko)的程序,否则会卸载失败。步骤如下:

  1. 查看HPE驱动的占用情况。下方示例中,HPE驱动被48个其他模块占用。

    $ lsmod | grep stc
    stc                   512000  48
    
  2. 终止占用HPE驱动的程序。

    • 如果业务允许重启主机,重启主机是最直接的方式。

    • 如果业务不允许重启主机,您可以查看占用HPE驱动的程序,然后判断业务是否允许终止这些程序。如果允许,终止程序对应的进程即可。下方示例中,依赖HPE驱动的程序Pid为1328500。

      $ stc-smi
      +------------------------------------------------------------------------------+
      |    STC-SMI: 1.7.0                            Driver Version: 1.7.0           |
      +------------------------------------------------------------------------------+
      |  NPU        Name      Frequency|         Bus-Id        |            NPU-Util |
      |  Fan        Temp          Power|   ClusterCount        |  Memory Used /Total |
      +==============================================================================+
      |    0     STCP920          1000M|   0000:04:00.0        |                25 % |
      |  N/A       38.9C   32.2W / 160W|              4        |     625.05M /16.00G |
      +------------------------------------------------------------------------------+
      
      +------------------------------------------------------------------------------+
      | Processes:                                                                   |
      |   NPU CLUSTER           Pid  processName                           MemoryUsed|
      +==============================================================================+
      |     0       0       1328500  python3                                  339.43M|
      +------------------------------------------------------------------------------+
      
2.5.2.8.2. autoremove方案
  1. 卸载安装的HPE所有模块。

    • Ubuntu、Debian 10

      $ sudo apt remove hpe
      $ sudo apt autoremove
      
    • CentOS、麒麟 V10、UOS V20、BC-Liunx V8.2、BC-Liunx V22.10、RHEL 9.0

      $ sudo yum remove hpe
      $ sudo yum autoremove
      
  2. 清除相关的文件。

    • Ubuntu、Debian 10:查看安装包状态,并清除包内带有postrm脚本的包(如有),即带rc标识的包(r代表Remove、c代表Config-files)。

      $ sudo dpkg --list | grep -E 'hpe|stc'
      $ sudo apt remove {rc-pkg-name} --purge
      
    • CentOS、麒麟 V10、UOS V20、BC-Liunx V8.2、BC-Liunx V22.10、RHEL 9.0:清除ko文件。

      $ sudo find /lib/modules -name stc.ko.xz -type f | sudo xargs rm -rf
      $ sudo find /lib/modules -name stc.ko -type f | sudo xargs rm -rf
      
  3. 如果安装时是离线安装,还需要卸载HPE本地存储库。

    • Ubuntu、Debian 10

      $ sudo apt remove hpe-repo
      
    • CentOS、麒麟 V10、UOS V20、BC-Liunx V8.2、BC-Liunx V22.10、RHEL 9.0

      $ sudo yum remove hpe-repo
      
2.5.2.8.3. 通配符方案(Ubuntu、Debian 10)

如果您的业务不允许使用autoremove方案,可以采用通配符方案。

  1. 卸载安装的HPE所有模块。

    $ sudo apt-get --purge remove "hpe-hpert-dev*" "stc-gdb*" "stc-smi*" "hpe-example*" "hpe-stcc*" "stc-kernel-common*" "hpe-hpert*" "stc-dkms*" "stc-prof*" "libstc-common-*" "stc-vprof*"
    
  2. 如果安装时是离线安装,还需要卸载HPE本地存储库。

    $ sudo apt remove hpe-repo
    

2.5.3. Docker方式安装

2.5.3.1. 安装须知

Docker方式是指将HPE驱动模块安装在主机上,其他模块安装在容器中,整包方式中则将所有配套软件都安装在主机上。

Docker方式方便您后续分别升级不同类型的配套软件,维护起来更加灵活。配套软件的模块被区分为Host侧和Docker侧模块:

  • Host侧模块:通过指明hpe-host安装,其中包括了升级时可能需要停机维护的部分,此类迭代频率低但影响大,不适合频繁升级,例如HPE驱动模块等。

  • Docker侧模块:通过指明hpe-simple安装,包括可以通过Docker快速构建的部分,方便满足较高迭代频率的要求,以持续提升易用性,例如HPE非驱动模块、TensorTurbo、不时引入的其他工具等。

2.5.3.2. 准备工作

在以Docker方式安装软件前,请确保已完成以下动作:

  • 主机已安装Docker。

  • TensorTurbo及其他工具安装在Docker侧,您需要根据自身需求编写Dockerfile。

说明:我们提供的Dockerfile示例中包含了安装HPE非驱动模块、TensorTurbo、stc-hpaa、STC_DDK、模型编译依赖,以及准备安装环境相关的命令。

2.5.3.3. Host侧安装驱动

配置本地源或远程源后,检查软件包信息并只安装HPE驱动模块的命令如下:

  • Ubuntu、Debian 10

    $ sudo apt update
    $ sudo apt install hpe-host
    
  • CentOS、麒麟 V10、UOS V20、BC-Liunx V8.2、BC-Liunx V22.10、RHEL 9.0

    $ sudo yum clean all
    $ sudo yum makecache
    $ sudo yum install hpe-host
    

2.5.3.4. Docker侧安装TensorTurbo及其他工具

构建Docker镜像时需要使用离线安装包,构建Docker镜像并启动容器的步骤如下:

  1. 将您编写的Dockerfile拷贝至服务器,并将各软件的安装包拷贝至用来管理包的HTTP Server。

  2. 在服务器上基于Dockerfile构建Docker镜像,构建命令中指定必要的信息,例如Dockerfile路径、镜像名称、安装包获取路径等。以Ubuntu 20.04为例,命令及主要参数说明如下:

    $ DOCKER_BUILDKIT=1 docker build -f Dockerfile -t stcrp151:ubuntu2004-hpe-v1.7.0-tb-v1.12.0 --build-arg URI=http://example.com --target dev .
    
    • -f Dockerfile:指定使用当前目录下的Dockerfile。

    • -t stcrp151:ubuntu2004-hpe-v1.7.0-tb-v1.12.0:指定Docker镜像的名称为stcrp151,标签为ubuntu2004-hpe-v1.7.0-tb-v1.12.0。

    • --build-arg URI=http://example.com--build-arg传入的值可以覆盖Dockerfile中对应变量的取值,请将http://example.com替换为HTTP Server上安装包的路径。您也可以通过--build-arg传入安装包名称等信息,方便基于同一份Dockerfile构建不同版本异构环境的镜像。

    • --target dev:指定目标构建阶段,对应到Dockerfile中定义的阶段。

  3. 查看构建好的Docker镜像。

    $ docker images
    REPOSITORY       TAG                               IMAGE ID       CREATED              SIZE
    stcrp151         ubuntu2004-hpe-v1.7.0-tb-v1.12.0  cacd5995dcb9   5 minutes ago   10.7GB
    
  4. 基于Docker镜像启动容器。启动容器时,除Docker的原生参数外,还支持指定容器占用的NPU设备。以为容器分配1个NPU设备的4个Cluster为例:

    $ sudo docker run -it --device /dev/stc0 --device /dev/stc0c0 --device /dev/stc0c1 --device /dev/stc0c2 --device /dev/stc0c3 --device /dev/stc0ctrl stcrp150:ubuntu2004-hpe-v1.7.0-tb-v1.12.0 /bin/bash
    
参数示例 示例说明
--device /dev/stc0 指定使用NPU设备0。
--device /dev/stc0c0~--device /dev/stc0c3 指定使用NPU设备0的4个Cluster。
stcrp151:ubuntu2004-hpe-v1.7.0-tb-v1.12.0 指定使用的Docker镜像。

2.5.3.5. 验证安装结果

  1. 在Host侧,查看是否已加载驱动。示例输出如下:

    $ lsmod | grep stc
    stc                   512000  0
    
  2. 在Docker侧,在容器中检查是否已透传驱动,并运行hpe-example并尝试加载tb模块。示例输出如下:

    $ lsmod | grep stc
    stc                   512000  0
    $ ls /usr/local/hpe/
    bin  conf  example  include  java  lib  libexec  riscv32npu  share  version.txt  version.yml
    $ cd /usr/local/hpe/example
    $ make
    $ ./hello_world
    running hello_world......
    hello world from core 0/8.
    hello world from core 1/8.
    hello world from core 2/8.
    hello world from core 3/8.
    hello world from core 4/8.
    hello world from core 5/8.
    hello world from core 6/8.
    hello world from core 7/8.
    $ python3
    Python 3.7.15 (default, Oct 12 2022, 19:14:38)
    [GCC 9.4.0] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import tb
    >>>
    

2.5.3.6. Docker侧停止容器

对Docker侧的TensorTurbo及其他工具,在不需要时终止容器即可,无需卸载。

2.5.3.7. Host侧卸载驱动

  1. 卸载安装的HPE驱动模块。

    • Ubuntu、Debian 10

      $ sudo apt remove hpe-host
      $ sudo apt autoremove
      
    • CentOS、麒麟 V10、UOS V20、BC-Liunx V8.2、BC-Liunx V22.10、RHEL 9.0

      $ sudo yum remove hpe-host
      $ sudo yum autoremove
      
  2. 清除相关的文件。

    • Ubuntu、Debian 10:查看安装包状态,并清除包内带有postrm脚本的包(如有),即带rc标识的包(r代表Remove、c代表Config-files)

      $ sudo dpkg --list | grep -E 'hpe|stc'
      $ sudo apt remove {rc-pkg-name} --purge
      
    • CentOS、麒麟 V10、UOS V20、BC-Liunx V8.2、BC-Liunx V22.10、RHEL 9.0:清除ko文件。

      $ sudo find /lib/modules -name stc.ko.xz -type f | sudo xargs rm -rf
      $ sudo find /lib/modules -name stc.ko -type f | sudo xargs rm -rf
      
  3. 如果安装时是离线安装,还需要卸载HPE本地存储库。

    • Ubuntu、Debian 10

      $ sudo apt remove hpe-repo
      
    • CentOS、麒麟 V10、UOS V20、BC-Liunx V8.2、BC-Liunx V22.10、RHEL 9.0

      $ sudo yum remove hpe-repo