专栏算法工具链Docker 环境部署

Docker 环境部署

芯链情报局2023-05-05
476
0

引言

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,相互隔离互不干扰。

为了帮助大家快速开始使用芯片算法工具链,地平线提供了包含完整开发环境的Docker镜像,大大简化了开发环境的部署过程,同时也可避免与本地环境的冲突。大家可先依据后文第一章完成 Docker 安装,再通过第二章的介绍下载工具链离线镜像,加载到本地后即可在容器中进行开发。



1. Docker 基础环境安装

1.1 Ubuntu

1.1.1 CPU Docker

可使用如下命令使用官方提供的安装脚本进行自动安装:


1.1.2 GPU Docker

建议docker ce安装19.03以上的版本,默认已内置nvidia docker,只需再安装一下nvidia-container-toolkit即可
可参考如下命令安装,更详细的步骤说明请参考NVIDIA官方文档:

1.2 CentOS

1.2.1 CPU Docker

可使用如下命令使用官方提供的安装脚本进行自动安装:

1.2.2 GPU Docker

建议docker ce安装19.03以上的版本,默认已内置nvidia docker,只需再安装一下nvidia-container-toolkit即可
CentOS 7可参考如下命令安装,更详细的步骤说明以及CentOS 8安装请参考NVIDIA官方文档:

1.3 Windows

不推荐在个人笔记本电脑上搭建芯片算法工具链的环境,推荐使用内存至少为16G的开发环境,否则在转换编译较大模型(雷达、bev等)时容易出现内存不足的问题。

1.3.1 CPU Docker

1. 安装Docker Desktop:
下载 Docker Desktop,并执行安装文件(有选项的地方都全选,一路下一步):Install Docker Desktop on Windows
2. 安装wsl:
启动 dockerdesktop,可能会提示wsl版本过低等相关问题,问题下方会直接给出官方安装链接,大家直接点击链接按照步骤完成wsl的更新即可。以下步骤仅供参考:
  ① 以管理员身份打开 PowerShell(“开始”菜单 >“PowerShell” >单击右键 >“以管理员身份运行”),然后输入以下命令以启用适用于Linux的Windows子系统:

 ② 以管理员身份在PowerShell中运行以下命令以启用虚拟机平台功能:

  ③ 下载 Linux 内核更新包,并双击安装:X64下载链接 arm64下载链接;(可使用systeminfo命令查看本机系统类型)
  ④ 以管理员身份在PowerShell中运行以下命令,将 WSL 2 设置为默认版本
3. 验证是否安装成功
一般而言docker会自动启动,若没启动也可自行搜索Docker Desktop并双击启动,正常启动docker后可看到通知栏出现一条小鲸鱼。此时即可启动命令窗口(快捷键:WIN+R),运行以下命令看到Hello from Docker!字样即为安装成功。

1.3.2 GPU Docker

1. 安装WSL2(WSL2才可以调用GPU):
  ① 以管理员身份在PowerShell中运行以下命令以启用虚拟机平台功能:
  ② 下载 Linux 内核更新包,并双击安装:X64下载链接 arm64下载链接;(可使用systeminfo命令查看本机系统类型)
  ③ 以管理员身份在PowerShell中运行以下命令,将 WSL 2 设置为默认版本
2. 安装Linux子系统:
  ① 到应用商店中获取并安装 Ubuntu 20.04 LTS
  ② 启动 ubuntu,设置 username, password
  ③ 安装完成后可通过windows命令wsl --list --verbose查看到Ubuntu的wsl版本号:
3. 安装gpu基础运行环境
在系统中还需要完成 cuda 安装。正确安装完cuda之后可参考前文1.1节完成在 ubuntu 系统中的 nvidia-docker 安装


2. 地平线芯片算法工具链Docker环境部署

2.1 下载离线镜像

从地平线开发者社区获取最新版工具链开发环境镜像的下载链接:
X3派:可参考用户手册完成快速模型转换环境安装,无需安装docker:https://developer.horizon.ai/api/v1/fileData/documents_pi/ai_toolchain_develop/env_install.html
XJ3 工具链开发包及镜像下载:https://developer.horizon.ai/forumDetail/136488103547258769
J5 工具链开发包及镜像下载:https://developer.horizon.ai/forumDetail/118363912788935318

2.2 加载离线镜像并启动容器

依据第一章完成docker基础环境安装后,使用如下命令加载离线镜像,并运行容器:
1. 加载镜像
加载完镜像之后,可以通过命令docker images查看到本地所有的镜像:

2. 运行容器
  ① 若下载了OpenExplorer开发包,可解压后进入开发包根目录,运行脚本进入容器
  ② 也可手动输入命令进入容器
CPU docker
GPU docker

3. 输入如下命令验证是否已成功进入工具链开发环境



3. Docker 常用命令

Image:Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
Container:镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
Repository:镜像的仓库源。

功能

命令

在线拉取镜像

docker pull {REPOSITORY}:{Tag}

加载离线镜像

docker load -i image_name.tar

查看本地镜像

docker images

启动cpu容器

docker run -it --rm -v `pwd`:/workspace {REPOSITORY}:{TAG}
或:docker run -it -v `pwd`:/workspace {IMAGE ID}

启动gpu容器

docker run -it --rm --runtime=nvidia -e NVIDIA_DRIVER_CAPABILITIES=compute,utility -e NVIDIA_VISIBLE_DEVICES=all --shm-size="15g" -v `pwd`:/workspace {REPOSITORY}:{TAG}

查看本地容器

docker ps

连接本地容器

docker exec -it {CONTAINER ID} /bin/bash

停止容器

docker stop {CONTAINER ID}

开启容器

docker start {CONTAINER ID}

删除容器

docker rm -f {CONTAINER ID}

删除镜像

docker rmi -f {IMAGE ID}

保存自己的镜像

1. 在容器中完成环境安装后,从该容器中创建一个镜像:docker commit {CONTAINER ID} {Repository}:{Tag}
2. 保存镜像:docker save -o image_name.tar {Repository}:{Tag}
3. 如果想压缩镜像文件,可使用该命令:docker save {Repository}:{Tag}
算法工具链
杂谈
+1
评论0
0/1000