Skip to content

Commit e068aae

Browse files
Major release: support multiple CUDA versions (simultaneously and dynamically)
Also release our device plugin for Kubernetes.
1 parent ca03421 commit e068aae

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

50 files changed

+359
-429
lines changed

README.md

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,31 +16,37 @@ Orion vGPU软件由[VirtAI Tech 趋动科技](https://virtai.tech)开发,是
1616
Orion vGPU软件用户手册
1717

1818
# [Docker Image](dockerfiles)
19-
预装好无修改的深度学习框架(TensorFlow, PyTorch),以及Orion Client Runtime的容器镜像。
19+
预装好深度学习框架(TensorFlow, PyTorch),以及Orion Client Runtime的容器镜像。
2020

2121
# <a id="tech-blog"></a>More
2222
我们通过若干技术博客,向用户展示更多的Orion vGPU软件使用场景。
2323

24+
* [Kubernetes-Orion-Plugin 在k8s集群中调度vGPU资源](./doc/Orion-k8s-device-plugin.md)
2425
* [TensorFlow 使用Orion vGPU软件加速模型训练与推理](./blogposts/tensorflow_models.md)
2526
* [PyTorch 使用Orion vGPU软件加速模型训练与推理](./blogposts/pytorch_models.md)
2627

2728
# What's New
2829

29-
* **2019/07/08** Docker 镜像更新:[PyTorch 1.0.1](./dockerfiles/client-pytorch-1.0.1-py3)[TensorFlow 1.8.0](./dockerfiles/client-tf1.8-base)
30+
* **2019/09/03** 支持多CUDA版本:CUDA 9.0, 9.1, 9.2, 10.0; 提供 k8s-orion-plugin
3031

31-
PyTorch 1.0.1镜像中,PyTorch 1.0.1和torchvision 0.2.2均由官方wheels安装,无须从源码编译。
32-
33-
用户使用最新镜像之前,需要确保Orion Server已经更新至最新版本。
32+
Orion Server 可以动态支持多种CUDA版本共存,只需要确保`/usr/local`目录下有对应的CUDA SDK,例如`/usr/local/cuda-10.0``/usr/local/cuda-9.0`
33+
34+
对多版本的支持既不需要设置`/usr/local/cuda`软链接,也不需要设置环境变量。
35+
36+
Orion Client端,取决于用户程序的需求,需要安装对应于不同CUDA版本的Orion Client Runtime:
3437

35-
* **2019/07/06** Orion vGPU软件更新:更加精确的显存控制
38+
```bash
39+
# Install Orion client runtime corresponding to CUDA version 10.0
40+
./install-client-10.0
41+
```
3642

37-
用户需要确保Orion Controller,Orion Server和Orion Client更新至最新版本。不同版本的Orion vGPU组件无法共同工作。
43+
用户需要确保同时更新所有组件
3844

3945
* `Orion Controller` 使用最新的`orion-controller`
4046

4147
* `Orion Server` 使用最新的安装包重新安装并启动
4248

43-
* `Orion Client` 使用`docker pull`更新已有镜像,或者在裸机/KVM虚拟机上用最新的`install-client`重新安装。
49+
* `Orion Client` 通过`docker pull`获取新版镜像,或者在裸机/KVM虚拟机上用最新的`install-client-x.y`重新安装。
4450

4551
# Contact Us
4652

blogposts/tensorflow_models.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ Orion vGPU软件对TensorFlow官方教程中的例子提供全面的支持。下
8585
值得注意的是,此repo中的模型代码均基于Python 2.7环境,因此建议用户使用Python 2.7版本的镜像:
8686

8787
```bash
88-
git pull virtaitech/orion-client:tf1.12-py2
88+
git pull virtaitech/orion-client:cu9.0-tf1.12-py2
8989
```
9090

9191
或者在KVM虚拟机、裸物理机上配置好Python 2.7环境,然后安装TensorFlow 1.12 GPU版本,

doc/Orion-User-Guide.md

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,13 @@ Orion vGPU软件是一个为云或者数据中心内的AI应用,CUDA应用提
2424

2525
## NVidia CUDA
2626
* CUDA 9.0
27+
* CUDA 9.1
28+
* CUDA 9.2
29+
* CUDA 10.0
2730
* CUDNN 7.2 以上
2831

2932
## 深度学习框架
30-
* TensorFlow 1.8 至 1.12
33+
* TensorFlow 1.8 至 1.13
3134
* Pytorch 1.0.1,Pytorch 1.1
3235

3336
## 网络
@@ -50,7 +53,7 @@ Orion vGPU软件是一个为云或者数据中心内的AI应用,CUDA应用提
5053
* 不支持NCCL库,不支持OpenGL相关接口,不支持图形渲染相关接口
5154
* 在使用Mellanox网卡的RDMA模式时,不支持Pytorch框架
5255
* 有限支持CUDA IPC,对部分程序可能不支持。
53-
* 由于Pytorch使用部分当前版本未支持的CUDA库,需要从源码重新编译社区版的Pytorch
56+
* 需要从源码重新编译社区版的PyTorch 以保证动态链接 CUDA 库
5457

5558
# 组件介绍
5659

@@ -95,9 +98,9 @@ Orion Client端可以部署在本地物理机上,Container里,或者VM里,
9598

9699
### 启动Orion Controller服务
97100

98-
把Orion安装包拷贝至目标环境,以存放路径为 /root/Orion-1.0.1 为例。通过以下的命令可以启动Orion Controller服务。
101+
把Orion安装包拷贝至目标环境,以存放路径为 /root/Orion-1.1.1 为例。通过以下的命令可以启动Orion Controller服务。
99102
```
100-
/root/Orion-1.0.1/orion-controller start
103+
/root/Orion-1.1.1/orion-controller start
101104
```
102105

103106
### 配置Orion Controller服务
@@ -112,7 +115,7 @@ Orion Controller通过启动参数支持不同的配置选项。orion-controller
112115
## 部署Orion Server
113116

114117
### 环境依赖
115-
* NVIDIA CUDA 9.0
118+
* NVIDIA CUDA 9.0, 9.1, 9.2, 10.0
116119
* NVIDIA CUDNN 7.2以上版本
117120
* g++ 4.8或以上版本,libcurl,openssl
118121

@@ -122,11 +125,10 @@ Orion Controller通过启动参数支持不同的配置选项。orion-controller
122125
* 本地虚拟机支持:libvirt >= 1.3,QEMU >= 2.0
123126

124127
### 软件安装
125-
把Orion安装包拷贝至目标环境,以存放路径为 /root/Orion-1.0.1 为例。通过以下的命令安装Orion Server服务。
128+
把Orion安装包拷贝至目标环境,以存放路径为 /root/Orion-1.1.1 为例。通过以下的命令安装Orion Server服务。
126129
```
127-
sudo CUDA_HOME=/usr/local/cuda /root/Orion-1.0.1/install-server.sh
130+
sudo /root/Orion-1.1.1/orion-server/install-server.sh
128131
```
129-
其中CUDA_HOME变量应该设置为目标环境下正确的CUDA 9.0安装路径。
130132

131133
### 配置Orion Server
132134
大部分配置均可使用默认配置,少量配置需要根据使用场景进行编辑配置
@@ -147,6 +149,9 @@ sudo CUDA_HOME=/usr/local/cuda /root/Orion-1.0.1/install-server.sh
147149
* enable_kvm:支持QEMU-KVM的VM
148150
* 对于上述本地GPU虚拟化方案,如果目标应用程序运行在QEMU-KVM的VM里,则设置为true,否则为false
149151
* 对于上述的分布式GPU资源池化方案,设置为false
152+
* vgpu_count:每个物理GPU切片为多少个vGPU
153+
* 该参数合法的取值是1~100的任意整数
154+
* 该参数会影响到默认每个vGPU的显存大小
150155

151156
如需在安装之后改变CUDA的安装路径设置,则需要编辑文件 /etc/systemd/system/oriond.service。把其中的LD_LIBRARY_PATH变量和PATH变量的路径更改。更改后用如下命令重载配置
152157
```
@@ -181,9 +186,10 @@ Orion Server的日志分为系统日志和用户日志两类
181186
* RDMA支持:MLNX_OFED_LINUX-4.5驱动及用户库
182187

183188
### 软件安装
184-
把Orion安装包内的install-client拷贝至目标环境,并以Root权限运行。以存放路径为/root/install-client 为例
185-
```
186-
sudo /root/install-client
189+
把Orion安装包内的`install-client-x.y` (根据所需CUDA版本选择对应的installer,例如`install-client-10.0`支持CUDA 10.0 )拷贝至目标环境,并以Root权限运行。
190+
191+
``` bash
192+
sudo ./install-client-x.y
187193
```
188194
上述命令把Orion Client环境安装至默认路径 /usr/lib 中。可以通过其他安装选项进行安装
189195

@@ -208,8 +214,8 @@ Orion Client的配置中分为静态配置部分和动态配置部分。
208214
静态配置参数可以通过上述三类方法进行参数配置,而动态配置部分仅能通过环境变量进行参数配置
209215
静态配置大部分可以使用默认值,少量配置需要修改。包括:
210216

211-
* 环境变量 ORION_OCNTROLLER 设置 Orion Controller 的地址
212-
* 例如通过 export ORION_OCNTROLLER=127.0.0.1:9123 指向一个监听在本地9123端口的 Orion Controller
217+
* 环境变量 ORION_CONTROLLER 设置 Orion Controller 的地址
218+
* 例如通过 export ORION_CONTROLLER=127.0.0.1:9123 指向一个监听在本地9123端口的 Orion Controller
213219
* 配置文件参数 shm_path_base 指定内存文件系统的路径
214220
* 在本地GPU虚拟化方案中,如果目标环境是Container环境,且Orion Server开启了enable_shm支持,则在Orion Client环境中需要指定该路径。
215221
* 配置文件参数 controller_addr 指定 Orion Controller 的地址
@@ -280,19 +286,19 @@ Orion vGPU软件提供了健康检查的工具 orion-check 来帮助用户在各
280286

281287
## 在安装部署之前检查环境兼容性
282288

283-
把Orion安装包拷贝至目标环境,以存放路径为 /root/Orion-1.0.1 为例。
289+
把Orion安装包拷贝至目标环境,以存放路径为 /root/Orion-1.1.1 为例。
284290

285291
* 检查安装Orion Controller的环境
286292
```
287-
sudo /root/Orion-1.0.1/orion-check install controller
293+
sudo /root/Orion-1.1.1/orion-check install controller
288294
```
289295
* 检查安装Orion Server的环境
290296
```
291-
sudo /root/Orion-1.0.1/orion-check install server
297+
sudo /root/Orion-1.1.1/orion-check install server
292298
```
293299
* 检查安装Orion Client的环境
294300
```
295-
sudo /root/Orion-1.0.1/orion-check install client
301+
sudo /root/Orion-1.1.1/orion-check install client
296302
```
297303

298304
## 在安装部署之后检查运行时的健康状况
@@ -313,6 +319,7 @@ Orion vGPU软件提供了健康检查的工具 orion-check 来帮助用户在各
313319
* bind_addr :当本机有多个网络地址的时候,通过该参数指定Orion Server绑定地址。默认值为 127.0.0.1
314320
* enable_shm :是否启用SHM加速通讯。仅仅在Orion Server和Orion Client部署在同一个物理机的时候可以启用。默认值为 true
315321
* enable_kvm :是否支持Orion Client部署在VM里面且使用SHM加速。仅仅在Orion Server和Orion Client部署在同一个物理机的时候可以启用。默认值为 false
322+
* vgpu_count:每个物理GPU切片为多少个vGPU。取值范围是1~100的任意整数。默认值为 4
316323

317324
### [server-log] 配置
318325
* log_with_time :记录log的时候带时间戳。0表示否,1表示是。

doc/Orion-k8s-device-plugin.md

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
# 概述
2+
Orion Kubernetes device plugin为符合 Kubernetes device plugin接口规范的设备扩展插件。配合Orion GPU虚拟化方案,可以无缝地在一个Kubernetes机群里面添加Oiron的vGPU资源,从而在部署应用的时候,使用Orion vGPU。
3+
4+
Orion的虚拟化方案分为本地GPU虚拟化方案和分布式GPU资源池化方案(具体参看 [User Guide](Orion-User-Guide.md)),Orion Kubernetes device plugin支持两种虚拟化方案,但是本文档仅仅针对本地GPU虚拟化方案提供部署方案。
5+
6+
7+
# 环境依赖
8+
9+
## 处理器
10+
* x86_64
11+
12+
## 操作系统
13+
* 64位 Ubuntu 16.04 LTS,64位 Ubuntu 14.04 LTS
14+
* 64位 CentOS 7.x
15+
16+
## 容器框架
17+
* Kubernetes 1.10 及以后版本
18+
19+
# 部署步骤
20+
以下步骤除非特殊声明,均假定用户已经按照[User Guide](Orion-User-Guide.md)或者[Quick Start](doc/quick-start)在每个节点上安装了必要的Orion组件。
21+
22+
以下步骤仅仅针对本地GPU虚拟化方案,也即是Orion Client,Orion Server和Orion Controller均部署在一个计算节点上。
23+
24+
## 1. 部署准备
25+
* 通过网络获取安装包 git clone https://github.com/virtaitech/orion.git
26+
* 把Orion安装包orion拷贝至每个Kubernetes计算节点内。以放至/root目录为例
27+
* 如有防火墙,对计算节点内开放端口9123以及端口9600,9601
28+
* 启动Kubernetes的服务
29+
30+
31+
## 2. 修改Orion Server的配置
32+
* 通过以下命令编辑配置文件
33+
```
34+
vim /etc/orion/server.conf
35+
```
36+
修改 “bind_addr = 127.0.0.1”为本机container环境虚拟网关的IP地址。(一般为ifconfig docker0显示的IP地址,例如172.17.0.1)
37+
38+
修改 controller_addr = 127.0.0.1:9123”为本机container环境虚拟网关的IP地址。(一般为ifconfig docker0显示的IP地址,例如172.17.0.1)
39+
* 通过以下命令重新启动Orion Server服务
40+
```
41+
systemctl restart oriond
42+
```
43+
44+
## 3. 启动Kubernetes Orion Device Plugin
45+
* 在每个计算节点运行Kubernetes Orion Device Plugin
46+
```
47+
cd /root/orion
48+
./k8s-orion-plugin -controller 172.17.0.1:9123
49+
```
50+
上述参数“172.17.0.1”必须和步骤2的container环境虚拟网关的IP地址保持一致
51+
52+
53+
## 4. 启动使用Orion vGPU的POD
54+
55+
### 4.1 确认Kubernetes集群中已经存在Orion vGPU资源
56+
在Kubernetes管理节点上使用Kubernetes的命令行工具执行如下命令
57+
```
58+
kubectl describe nodes
59+
```
60+
在屏幕输出中,在运行了Orion Server服务的节点状态里面,应该在“Capacity”以及“Allocatable”字段的资源列表中看到类似于“virtaitech.com/gpu: 4”的vGPU资源。最后一个数字表示本节点内vGPU的数目。
61+
62+
### 4.2 确认yaml文件Orion vGPU的配置
63+
用户配置POD的yaml文件应该包含如下的内容
64+
```
65+
resources:
66+
limits:
67+
virtaitech.com/gpu: 1
68+
env:
69+
- name : ORION_GMEM
70+
value : "4096"
71+
```
72+
上述表明该POD使用1个Orion的vGPU,每个vGPU的显存大小为4096MB
73+
74+
### 4.3 使用配置文件启动POD并查看运行输出
75+
通过Kubernetes的UI使用上述配置文件启动一个POD。该POD会自动启动在已经部署了Orion Server服务的计算节点中

doc/quick-start/README.md

Lines changed: 9 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111

1212
更多的主题,例如如何调整物理GPU划分成Orion vGPU的粒度,如何使用PyTorch框架,以及如何通过Kubernetes调度Orion vGPU资源等,请参见我们的[用户手册](../Orion-User-Guide.md)以及[技术博客](../../README.md#tech-blog)
1313

14+
**2019/09/03 更新:** 现在Orion vGPU软件可以同时支持多个CUDA版本。对于 Orion Server 来说,只需要将不同 CUDA SDK 均放在`/usr/local`下,例如`/usr/local/cuda-10.0`, `/usr/local/cuda-9.0`,Orion Server可以动态支持各版本;对于 Orion Controller 来说,需要根据应用对CUDA版本的需求,使用对应的Orion Client Runtime。本文档以 CUDA 9.0 为例。
15+
1416
# Orion vGPU软件架构
1517

1618
![Architecture Overview](./figures/arch-local.png)
@@ -30,54 +32,6 @@
3032

3133
当Orion Client端应用程序运行时,通过Orion Controller的资源调度,建立和Orion Server的连接。Orion Server为其应用程序的所有CUDA调用提供一个隔离的运行环境以及真实GPU硬件算力。
3234

33-
34-
# Orion 安装包介绍
35-
## **目录结构**
36-
[下载得到](../..)的安装包内容如下:
37-
38-
```bash
39-
blogposts doc dockerfiles install-client install-server.sh LICENSE md5sum.txt orion-check orion.conf.template orion-controller oriond orion-shm README.md
40-
```
41-
42-
下文中,若非明确说明,假设读者命令行的工作目录即为安装包目录。
43-
44-
## **主要组件**
45-
* orion-check: 检查系统兼容性与依赖项,以及Orion平台运行时健康状态的工具
46-
* install-client: Orion Client安装包
47-
* install-server.h, oriond: Orion Server安装套件
48-
* orion-controller:Orion Controller可执行文件
49-
* orion-shm:创建通讯用共享内存的工具
50-
51-
52-
## **系统环境检查工具**
53-
54-
直接运行`orion-check`工具,屏幕上会输出命令接受的参数
55-
56-
```bash
57-
# (omit output)
58-
COMMANDS:
59-
install
60-
server Check health for installing Orion Server
61-
client Check health for installing Orion Client
62-
controller Check health for installing Orion Controller
63-
all Check health for installing all Orion components
64-
65-
runtime
66-
server Diagnose the status for Orion Server running
67-
client Diagnose the status for Orion Client running
68-
69-
EXAMPLES:
70-
orion-check install server
71-
orion-check install client
72-
orion-check runtime server
73-
```
74-
75-
`orion-check`工具有两大用途:
76-
* 安装Orion平台之前检查系统环境依赖: `orion-check install all`
77-
* Orion平台运行中诊断各组件的健康状态:`orion-check runtime server/client`
78-
79-
后续文档中,我们会逐步展示 `orion-check`工具的不同应用。
80-
8135
# Orion vGPU软件服务器端安装部署
8236

8337
读者需要确保Orion Controller,Orion Server和Orion Client都是最新版本。不同版本的Orion vGPU组件无法共同工作。
@@ -122,12 +76,12 @@ nohup ./orion-controller start --log controller.log &
12276
### 安装环境准备
12377
依赖项
12478
* Ubuntu 14.04, 16.04, CentOS 7.x
125-
* CUDA 9.0 (目前不支持其余CUDA版本)
79+
* CUDA 9.0 / 9.1 / 9.2 / 10.0
12680
* CUDNN 7.2及以上版本
127-
* NVIDIA driver 384及以上版本
81+
* NVIDIA driver 需要满足对应 CUDA SDK 的最低要求(例如 CUDA 9.0 对应 384,CUDA 10.0 对应 410)
12882
* libcurl
12983

130-
这里我们假设读者的操作系统上已经安装384以上版本的NVIDIA显卡驱动
84+
这里我们假设读者的操作系统上已经安装NVIDIA显卡驱动
13185

13286
用户可参考附录中的[CUDA和CUDNN快速安装](appendix.md#install-cuda)小节来安装`CUDA 9.0``CUDNN 7.x`。下文中我们假设用户的CUDA安装路径为默认的`/usr/local/cuda-9.0`,而CUDNN的动态库放在`/usr/local/cuda-9.0/lib64`目录下。
13387

@@ -144,14 +98,14 @@ sudo yum install -y libcurl-devel.x86_64
14498

14599
### 安装Orion Server
146100

147-
由于Orion Server运行时需要有CUDA环境支持,所以用户在安装Orion Server时,需要通过`CUDA_HOME`环境变量显式指定CUDA 9.0的安装路径:
101+
由于Orion Server运行时需要有CUDA环境支持,所以用户需要确保`/usr/local/`路径下有所需要支持的CUDA版本。例如,如果Orion Client端需要使用CUDA 10.0的应用,那么Orion Server所在物理机上,CUDA SDK需要安装到`/usr/local/cuda-10.0`路径(默认安装路径)。若要支持多版本CUDA,请将所有的CUDA SDK都放在`/usr/local`下。
102+
103+
148104

149105
```bash
150-
sudo CUDA_HOME=/usr/local/cuda-9.0 ./install-server.sh
106+
sudo ./install-server.sh
151107
```
152108

153-
值得注意的是,由于安装以`root`身份进行,即使当前用户环境中已经配置了`CUDA_HOME`环境变量(例如在~/.bashrc中),上述步骤中`CUDA_HOME=/usr/local/cuda-9.0` 仍然**不能**省略。
154-
155109
若安装成功,会有下列输出:
156110

157111
```bash

doc/quick-start/appendix.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,9 @@ systemctl start firewalld
5656
#### 安装前准备
5757
需要满足以下要求
5858
* Ubuntu 14.04, 16.04, CentOS 7.x
59-
* CUDA 9.0 (目前不支持其余CUDA版本)
59+
* CUDA 9.0 / 9.1 / 9.2 / 10.0
6060
* CUDNN 7.2及以上版本
61-
* NVIDIA driver 384及以上版本
61+
* NVIDIA driver 满足 CUDA SDK 最低要求 (CUDA 9.0对应384,CUDA 10.0对应410)
6262
* 安装`libcurl`
6363

6464
我们依然使用`orion-check`工具检查环境:
@@ -218,7 +218,7 @@ Done
218218

219219
```bash
220220
mkdir /usr/local/cuda-9.0
221-
./install-client -d /usr/local/cuda-9.0
221+
./install-client-9.0 -d /usr/local/cuda-9.0
222222
ln -s /usr/local/cuda-9.0 /usr/local/cuda
223223
```
224224

0 commit comments

Comments
 (0)