干货 | 如何对京东云GPU云主机进行TensorFlow Benchmark测试

 摘  要  

本文介绍基于京东云GPU云主机快速搭建基于Tensorflow深度学习平台的过程,并分享如何利用Tensorflow benchmark工具进行GPU云主机基准性能测试,帮助读者快速、经济地使用云服务厂商提供的GPU计算资源。

京东云GPU主机简

京东云GPU云主机以京东云基于虚拟化技术的云主机为基础,以直通(Passthrough)模式为云主机分配NVIDIA P40或者V100 GPU卡,并免费配置大容量本地数据盘,充分满足深度学习、科学计算等计算需求。当前京东云GPU云主机提供如下规格。

京东云GPU云主机系统盘可以采用免费的本地SSD盘,以可以采用京东云云盘。数据盘可以除支持标准云盘外,还可以使用免费自带临时数据盘,从而降低存储成本。值得注意的是,临时数据盘的数据在重新启动云主机后将丢失,并需要重新mount。

在计费模式上,京东云GPU云主机支持按秒计费功能,而且私有镜像免费。这样当不需要GPU云主机,可先把GPU云主机保存为私有镜像,然后删除云主机。对于需要长期保存的数据,可存储在京东云云硬盘上,也可以存储在对象存储上。

搭建TensorFlow深度学习环境 

1

创建云主机环境

在创建云主机前,确保在特定区域具有VPC和子网,然后在创建云主机界面中选中特定GPU云主机规格,并绑定公网带宽。如果是做试验,建议选择“按配置“计费规则采用按秒计费,带宽选择"按流量使用“计费规则。

当前京东云不同地域(华北-北京、华东-宿迁、华东-上海、华南-广州)所提供的GPU规格可能有所不同。如需要特定规格,可通过控制台提高工单寻求技术支持。本文将以华东-上海地域的.n1v100.2xlarge(1块NVIDIA Tesla V100)规格为例介绍整个Tensorflow环境的创建过程。

在创建完成GPU云主机后,可下载一个服务器性能评测工具Geekbench,解压缩后,运行 ./geekbench4 --sysinfo命令将获得主机CPU和内存信息。

 1#下载性能评测工具
 2wget http://cdn.geekbench.com/Geekbench-4.3.0-Linux.tar.gz
 3#解压缩
 4tar zxvf Geekbench-4.3.0-Linux.tar.gz 
 5#获得信息信息
 6 ./geekbench4 --sysinfo
 7
 8System Information
 9  Operating System              Ubuntu 16.04.5 LTS 4.4.0-62-generic x86_64
10  Model                         JD JCloud Iaas Jvirt
11  Motherboard                   N/A
12  Memory                        43.2 GB 
13  BIOS                          SeaBIOS 1.10.2-1.el7
14
15Processor Information
16  Name                          Intel Xeon E5-2650 v4
17  Topology                      1 Processor, 4 Cores, 8 Threads
18  Identifier                    GenuineIntel Family 6 Model 79 Stepping 1
19  Base Frequency                2.20 GHz
20  L1 Instruction Cache          32.0 KB x 8
21  L1 Data Cache                 32.0 KB x 8
22  L2 Cache                      4.00 MB x 4
23  L3 Cache                      16.0 MB

此外通过运行lspci命令,能确认当前云主机是否配置了NVIDIA卡。

 1root@jdcoe-gpu-srv001:~/Geekbench-4.3.0-Linux# lspci |grep NVIDIA
 200:07.0 3D controller: NVIDIA Corporation Device 1db4 (rev a1)
 3root@jdcoe-gpu-srv001:~/Geekbench-4.3.0-Linux# lspci -v  -s 00:07.0 
 400:07.0 3D controller: NVIDIA Corporation Device 1db4 (rev a1)
 5    Subsystem: NVIDIA Corporation Device 1214
 6    Physical Slot: 7
 7    Flags: bus master, fast devsel, latency 0, IRQ 10
 8    Memory at fb000000 (32-bit, non-prefetchable) [size=16M]
 9    Memory at c00000000 (64-bit, prefetchable) [size=16G]
10    Memory at 1000000000 (64-bit, prefetchable) [size=32M]
11    Capabilities: [60] Power Management version 3
12    Capabilities: [68] MSI: Enable- Count=1/1 Maskable- 64bit+
13    Capabilities: [78] Express Endpoint, MSI 00
14    Kernel driver in use: nvidia
15    Kernel modules: nvidiafb, nouveau, nvidia_396, nvidia_396_drm

执行fdisk -l命令,能看到/dev/vdb块存储。该块存储是京东云GPU云主机自带的临时数据盘。详细挂载方式请参考https://docs.jdcloud.com/cn/cloud-disk-service/linux-partition

 1Disk /dev/vda: 40 GiB, 42949672960 bytes, 83886080 sectors
 2Units: sectors of 1 * 512 = 512 bytes
 3Sector size (logical/physical): 512 bytes / 512 bytes
 4I/O size (minimum/optimal): 512 bytes / 512 bytes
 5Disklabel type: dos
 6Disk identifier: 0xcd5caf0d
 7
 8Device     Boot Start      End  Sectors Size Id Type
 9/dev/vda1  *     2048 83886079 83884032  40G 83 Linux
10
11Disk /dev/vdb: 5.5 TiB, 6001175126016 bytes, 11721045168 sectors
12Units: sectors of 1 * 512 = 512 bytes
13Sector size (logical/physical): 512 bytes / 512 bytes
14I/O size (minimum/optimal): 512 bytes / 512 bytes
15Disklabel type: gpt
16Disk identifier: DAF88709-5654-418B-AFDC-3FE113466B7A

2

安装Nvidia驱动

标准的Ubuntu镜像不带任何GPU相关软件。首先通过如下命令下载并安装NVDIA驱动程序。

1wget http://us.download.nvidia.com/tesla/396.44/nvidia-diag-driver-local-repo-ubuntu1604-396.44_1.0-1_amd64.deb
2dpkg -i nvidia-diag-driver-local-repo-ubuntu1604-396.44_1.0-1_amd64.deb 
3apt-key add /var/nvidia-diag-driver-local-repo-396.44/7fa2af80.pub
4apt-get update
5apt-get install cuda-drivers

安装完成,重新启动云主机,并运行nvidia-smi,能看到如下信息。从输出信息可以看出,本云主机的GPU卡为Tesla V100-PCIE。

 1root@jdcoe-gpu-srv001:~/Geekbench-4.3.0-Linux# nvidia-smi
 2Fri Nov 23 17:31:47 2018       
 3+-----------------------------------------------------------------------------+
 4| NVIDIA-SMI 396.44                 Driver Version: 396.44                    |
 5|-------------------------------+----------------------+----------------------+
 6| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
 7| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
 8|===============================+======================+======================|
 9|   0  Tesla V100-PCIE...  Off  | 00000000:00:07.0 Off |                    0 |
10| N/A   36C    P0    36W / 250W |      0MiB / 16160MiB |      0%      Default |
11+-------------------------------+----------------------+----------------------+
12
13+-----------------------------------------------------------------------------+
14| Processes:                                                       GPU Memory |
15|  GPU       PID   Type   Process name                             Usage      |
16|=============================================================================|
17|  No running processes found                                                 |
18+-----------------------------------------------------------------------------+

3

安装CUDA

根据Tensorflow的安装指南(https://tensorflow.google.cn/install/gpu),Tensorflow要求CUDA 9.0。

为了简化CUDA的下载,本文采用京东云对象存储上存放的CUDA安装包。通过如下命令完成下载和安装。

1wget http://solution.oss.cn-north-1.jcloudcs.com/machine-learning/nvidia/cuda-repo-ubuntu1604-9-0-local_9.0.176-1_amd64.de
2dpkg -i cuda-repo-ubuntu1604-9-0-local_9.0.176-1_amd64-deb
3apt-key add /var/cuda-repo-9-0-local/7fa2af80.pub
4apt-get update
5apt-get install cuda

修改.profile,在PATH环境变量中增加CUDA的可执行程序路径。

 1root@jdcoe-gpu-srv01:~# cat .profile 
 2# ~/.profile: executed by Bourne-compatible login shells.
 3
 4if [ "$BASH" ]; then
 5  if [ -f ~/.bashrc ]; then
 6    . ~/.bashrc
 7  fi
 8fi
 9
10export PATH=/usr/local/cuda/bin:${PATH}
11
12mesg n || true

重新通过ssh连接云主机,执行如下命令获得CUDA版本信息

1root@jdcoe-gpu-srv01:/usr/local/cuda/bin# nvcc --version
2nvcc: NVIDIA (R) Cuda compiler driver
3Copyright (c) 2005-2017 NVIDIA Corporation
4Built on Fri_Sep__1_21:08:03_CDT_2017
5Cuda compilation tools, release 9.0, V9.0.176

下面运行CUDA的一个自带例子deviceQuery,获得当前云主机的GPU卡信息。

 1#拷贝CUDA范例文件到当前目录。
 2root@jdcoe-gpu-srv01:~#   cuda-install-samples-9.0.sh .
 3Copying samples to ./NVIDIA_CUDA-9.0_Samples now...
 4Finished copying samples.
 5#进入deviceQuery目录,生成可执行文件。
 6root@jdcoe-gpu-srv01:~# cd NVIDIA_CUDA-9.0_Samples/1_Utilities/deviceQuery
 7root@jdcoe-gpu-srv01:~/NVIDIA_CUDA-9.0_Samples/1_Utilities/deviceQuery# make
 8/usr/local/cuda-9.0/bin/nvcc -ccbin g++ -I../../common/inc  -m64    -gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=sm_35 -gencode arch=compute_37,code=sm_37 -gencode arch=compute_50,code=sm_50 -gencode arch=compute_52,code=sm_52 -gencode arch=compute_60,code=sm_60 -gencode arch=compute_70,code=sm_70 -gencode arch=compute_70,code=compute_70 -o deviceQuery.o -c deviceQuery.cpp
 9/usr/local/cuda-9.0/bin/nvcc -ccbin g++   -m64      -gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=sm_35 -gencode arch=compute_37,code=sm_37 -gencode arch=compute_50,code=sm_50 -gencode arch=compute_52,code=sm_52 -gencode arch=compute_60,code=sm_60 -gencode arch=compute_70,code=sm_70 -gencode arch=compute_70,code=compute_70 -o deviceQuery deviceQuery.o 
10mkdir -p ../../bin/x86_64/linux/release
11cp deviceQuery ../../bin/x86_64/linux/release
12#执行deviceQuery获得GPU设备信息。
13root@jdcoe-gpu-srv001:~/NVIDIA_CUDA-9.0_Samples/1_Utilities/deviceQuery# ./deviceQuery 
14./deviceQuery Starting...
15
16 CUDA Device Query (Runtime API) version (CUDART static linking)
17
18Detected 1 CUDA Capable device(s)
19
20Device 0: "Tesla V100-PCIE-16GB"
21  CUDA Driver Version / Runtime Version          9.2 / 9.0
22  CUDA Capability Major/Minor version number:    7.0
23  Total amount of global memory:                 16160 MBytes (16945512448 bytes)
24  (80) Multiprocessors, ( 64) CUDA Cores/MP:     5120 CUDA Cores
25  GPU Max Clock rate:                            1380 MHz (1.38 GHz)
26  Memory Clock rate:                             877 Mhz
27  Memory Bus Width:                              4096-bit
28  L2 Cache Size:                                 6291456 bytes
29  Maximum Texture Dimension Size (x,y,z)         1D=(131072), 2D=(131072, 65536), 3D=(16384, 16384, 16384)
30  Maximum Layered 1D Texture Size, (num) layers  1D=(32768), 2048 layers
31  Maximum Layered 2D Texture Size, (num) layers  2D=(32768, 32768), 2048 layers
32  Total amount of constant memory:               65536 bytes
33  Total amount of shared memory per block:       49152 bytes
34  Total number of registers available per block: 65536
35  Warp size:                                     32
36  Maximum number of threads per multiprocessor:  2048
37  Maximum number of threads per block:           1024
38  Max dimension size of a thread block (x,y,z): (1024, 1024, 64)
39  Max dimension size of a grid size    (x,y,z): (2147483647, 65535, 65535)
40  Maximum memory pitch:                          2147483647 bytes
41  Texture alignment:                             512 bytes
42  Concurrent copy and kernel execution:          Yes with 7 copy engine(s)
43  Run time limit on kernels:                     No
44  Integrated GPU sharing Host Memory:            No
45  Support host page-locked memory mapping:       Yes
46  Alignment requirement for Surfaces:            Yes
47  Device has ECC support:                        Enabled
48  Device supports Unified Addressing (UVA):      Yes
49  Supports Cooperative Kernel Launch:            Yes
50  Supports MultiDevice Co-op Kernel Launch:      Yes
51  Device PCI Domain ID / Bus ID / location ID:   0 / 0 / 7
52  Compute Mode:
53     < Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >
54
55deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 9.2, CUDA Runtime Version = 9.0, NumDevs = 1
56Result = PASS
57root@jdcoe-gpu-srv001:~/NVIDIA_CUDA-9.0_Samples/1_Utilities/deviceQuery# 

4

安装 cuDNN

Tensorflow环境依赖NVIDIA的深度神经网络库(Deep Neural Network library,简称cuDNN)。为了省去从NVDIA网站下载而需要的注册步骤,可执行如下命令下载并安装。

1wget http://solution.oss.cn-north-1.jcloudcs.com/machine-learning/nvidia/libcudnn7_7.3.1.20-1%252Bcuda9.0_amd64.deb
2wget http://solution.oss.cn-north-1.jcloudcs.com/machine-learning/nvidia/libcudnn7-dev_7.3.1.20-1%252Bcuda9.0_amd64.deb
3wget http://solution.oss.cn-north-1.jcloudcs.com/machine-learning/nvidia/libcudnn7-doc_7.3.1.20-1%252Bcuda9.0_amd64.deb
4#安装前面下载的3个deb安装程序。
5dpkg -i libcudnn7*

下面,运行cuDNN带的手字数字识别例子验证cuDNN环境。

1cp -r /usr/src/cudnn_samples_v7/ $HOME
2cd  $HOME/cudnn_samples_v7/mnistCUDNN
3make clean && make
4cd /root/cudnn_samples_v7/mnistCUDNN
5./mnistCUDNN 
6cudnnGetVersion() : 7301 , CUDNN_VERSION from cudnn.h : 7301 (7.3.1)
7Host compiler version : GCC 5.4.0
8There are 1 CUDA capable devices on your machine :
9device 0 : sms 80  Capabilities 7.0, SmClock 1380.0 Mhz, MemSize (Mb) 16160, MemClock 877.0 Mhz, Ecc=1, boardGroupID=0

5

安装Tensorflow

安装Tensorflow的过程看参考安装指南(https://tensorflow.google.cn/install/pip)。具体命令如下:

 1sudo apt update
 2#安装pip3
 3sudo apt install python3-dev python3-pip
 4#安装python虚拟环境管理工具
 5sudo pip3 install -U virtualenv  # system-wide install
 6#创建虚拟环境
 7virtualenv --system-site-packages -p python3 ./venv
 8#启用虚拟环境
 9source ./venv/bin/activate  # sh, bash, ksh, or zsh
10#安装Tensorflow  GPU版本
11pip install --upgrade tensorflow-gpu

在安装完成后,可获得Tensorflow的版本信息。当前安装的Tensorflow版本是1.12.0。

 1(venv) root@jdcoe-gpu-srv001:~# pip show tensorflow-gpu
 2Name: tensorflow-gpu
 3Version: 1.12.0
 4Summary: TensorFlow is an open source machine learning framework for everyone.
 5Home-page: https://www.tensorflow.org/
 6Author: Google Inc.
 7Author-email: opensource@google.com
 8License: Apache 2.0
 9Location: /root/venv/lib/python3.5/site-packages
10Requires: tensorboard, keras-preprocessing, absl-py, keras-applications, numpy, grpcio, six, protobuf, astor, termcolor, wheel, gast
11Required-by: 

最后执行如下命令可验证Tensorflow安装是否成功。

 1(venv) root@jdcoe-gpu-srv001:~# python -c "import tensorflow as tf; tf.enable_eager_execution(); print(tf.reduce_sum(tf.random_normal([1000, 1000])))"
 22018-11-23 18:21:06.649847: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
 32018-11-23 18:21:07.232982: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:964] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
 42018-11-23 18:21:07.233502: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1432] Found device 0 with properties: 
 5name: Tesla V100-PCIE-16GB major: 7 minor: 0 memoryClockRate(GHz): 1.38
 6pciBusID: 0000:00:07.0
 7totalMemory: 15.78GiB freeMemory: 15.37GiB
 82018-11-23 18:21:07.233547: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1511] Adding visible gpu devices: 0
 92018-11-23 18:21:07.636860: I tensorflow/core/common_runtime/gpu/gpu_device.cc:982] Device interconnect StreamExecutor with strength 1 edge matrix:
102018-11-23 18:21:07.636940: I tensorflow/core/common_runtime/gpu/gpu_device.cc:988]      0 
112018-11-23 18:21:07.636949: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1001] 0:   N 
122018-11-23 18:21:07.637325: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1115] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 14873 MB memory) -> physical GPU (device: 0, name: Tesla V100-PCIE-16GB, pci bus id: 0000:00:07.0, compute capability: 7.0)
13tf.Tensor(-1229.7545, shape=(), dtype=float32)
14(venv) root@jdcoe-gpu-srv001:~# 

获得Benchmark 

为了评估GPU云主机的计算能力,可运行Tensorflow自带的Benchmark工具。

 1#首先下载benchmark工具
 2git clone https://github.com/tensorflow/benchmarks.git
 3cd benchmarkds
 4#列出所有分支
 5(venv) root@jdcoe-gpu-srv001:~/benchmarks# git branch -r
 6  origin/HEAD -> origin/master
 7  origin/cnn_tf_v1.10_compatible
 8  origin/cnn_tf_v1.11_compatible
 9  origin/cnn_tf_v1.12_compatible
10  origin/cnn_tf_v1.5_compatible
11  origin/cnn_tf_v1.8_compatible
12  origin/cnn_tf_v1.9_compatible
13  origin/cpbr-patch
14  origin/cpbr-patch-1
15  origin/data-gen
16  origin/keras-benchmarks
17  origin/master
18  origin/mkl_experiment
19  origin/tf_benchmark_stage
20#Checkout特定的版本,因为我们当前的Tensorflow环境是1.12,所以checkout cnn_tf_v1.12_compatible分支,获得Tensorflow 1.12对应的benchmark代码。
21git checkout cnn_tf_v1.12_compatible

执行如下命令运行resnet50模型对GPU云主机进行benchmark测试。通过输出结果,可获得当前GPU云主机的处理能力是308.71张图片/秒。

 1(venv) root@jdcoe-gpu-srv001:~/benchmarks# python scripts/tf_cnn_benchmarks/tf_cnn_benchmarks.py --num_gpus=1 --model resnet50 --batch_size 32
 22018-11-23 18:29:06.607030: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
 32018-11-23 18:29:07.186656: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:964] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
 42018-11-23 18:29:07.187232: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1432] Found device 0 with properties: 
 5name: Tesla V100-PCIE-16GB major: 7 minor: 0 memoryClockRate(GHz): 1.38
 6pciBusID: 0000:00:07.0
 7totalMemory: 15.78GiB freeMemory: 15.37GiB
 82018-11-23 18:29:07.187292: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1511] Adding visible gpu devices: 0
 92018-11-23 18:29:07.582838: I tensorflow/core/common_runtime/gpu/gpu_device.cc:982] Device interconnect StreamExecutor with strength 1 edge matrix:
102018-11-23 18:29:07.582888: I tensorflow/core/common_runtime/gpu/gpu_device.cc:988]      0 
112018-11-23 18:29:07.582897: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1001] 0:   N 
122018-11-23 18:29:07.583285: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1115] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 14873 MB memory) -> physical GPU (device: 0, name: Tesla V100-PCIE-16GB, pci bus id: 0000:00:07.0, compute capability: 7.0)
13TensorFlow:  1.12
14Model:       resnet50
15Dataset:     imagenet (synthetic)
16Mode:        BenchmarkMode.TRAIN
17SingleSess:  False
18Batch size:  32 global
19             32.0 per device
20Num batches: 100
21Num epochs:  0.00
22Devices:     ['/gpu:0']
23Data format: NCHW
24Optimizer:   sgd
25Variables:   parameter_server
26==========
27Generating training model
28Initializing graph
29W1123 18:29:11.799468 140439299352320 tf_logging.py:125] From /root/benchmarks/scripts/tf_cnn_benchmarks/benchmark_cnn.py:2157: Supervisor.__init__ (from tensorflow.python.training.supervisor) is deprecated and will be removed in a future version.
30Instructions for updating:
31Please switch to tf.train.MonitoredTrainingSession
322018-11-23 18:29:12.382962: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1511] Adding visible gpu devices: 0
332018-11-23 18:29:12.383049: I tensorflow/core/common_runtime/gpu/gpu_device.cc:982] Device interconnect StreamExecutor with strength 1 edge matrix:
342018-11-23 18:29:12.383058: I tensorflow/core/common_runtime/gpu/gpu_device.cc:988]      0 
352018-11-23 18:29:12.383063: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1001] 0:   N 
362018-11-23 18:29:12.383496: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1115] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 14873 MB memory) -> physical GPU (device: 0, name: Tesla V100-PCIE-16GB, pci bus id: 0000:00:07.0, compute capability: 7.0)
37I1123 18:29:13.106875 140439299352320 tf_logging.py:115] Running local_init_op.
38I1123 18:29:13.153315 140439299352320 tf_logging.py:115] Done running local_init_op.
39Running warm up
40Done warm up
41Step    Img/sec total_loss
421    images/sec: 309.3 +/- 0.0 (jitter = 0.0)    8.458
4310    images/sec: 308.9 +/- 0.4 (jitter = 0.7)    7.997
4420    images/sec: 309.1 +/- 0.2 (jitter = 0.7)    8.259
4530    images/sec: 309.3 +/- 0.2 (jitter = 0.6)    8.338
4640    images/sec: 309.3 +/- 0.1 (jitter = 0.6)    8.192
4750    images/sec: 309.3 +/- 0.1 (jitter = 0.6)    7.756
4860    images/sec: 309.3 +/- 0.1 (jitter = 0.6)    8.066
4970    images/sec: 309.2 +/- 0.1 (jitter = 0.6)    8.484
5080    images/sec: 309.1 +/- 0.1 (jitter = 0.7)    8.285
5190    images/sec: 309.0 +/- 0.1 (jitter = 0.8)    8.009
52100    images/sec: 308.9 +/- 0.1 (jitter = 0.8)    7.991
53----------------------------------------------------------------
54total images/sec: 308.71
55----------------------------------------------------------------

删除GPU云主机 

在不需要GPU云主机时,可先停止该云主机,并创建镜像,然后再删除云主机。这样,当下次再需GPU资源时,可基于该私有镜像快速创建,可减少上述安装配置过程。


 参考文献:

基于京东云GPU云主机搭建“TensorFlow深度学习环境https://blog.youkuaiyun.com/DeepblueSolo/article/details/83652686‘’

相关推荐

GPT-6凌晨上线智能UI:智能UI时代的技术架构重构与应对之道

从命令行到图形界面,计算机行业用了三十年证明了同一件事:人类需要视觉的、空间的、可重复的交互表面,纯文字从来只是过渡形态。智能界面的出现,意味着AI行业第一次大规模承认了这个规律——对话是创造的接口,界面是使用的归宿。生成的界面如何稳定下来?个人的数据与身份如何安全地沉淀?Agent的行动能力如何可信地放大?谁能把这三个问题答好,谁就站在了Personal Agent图形界面时刻的浪潮之巅。

京东科技开发者 57

AI 会写代码之后,交付为什么还没变快?

AI 写代码,只是这场变革的起点,而不是终点。真正决定一个组织能否吃到 AI 红利的,不是"能不能用 AI 写出代码",而是敢不敢用 AI 重新设计交付流程、重新划分角色分工、重新组织团队结构。研发视角能把工具和个人推到极致,却会在组织的边界前止步;只有站上组织视角,把AI × 工具一路推进到AI × 组织,那些被 AI 照出来的摩擦,才会真正被抹平。国际技术部 Multi AI Native 想做的,正是这件事——让 Agent 成为你可靠的数字战友,让每一次迭代交付都快一个量级;

京东科技开发者 272

OxygenData-Vibe搭建:用 AI Coding重新定义数据看板搭建

长期以来,数据看板开发主要有两种方式:一种是使用标准化 BI 工具,交付快、成本低,但图表样式、交互体验和功能扩展都受限于 BI 本身的能力;另一种是自研定制开发,能够充分满足复杂和个性化需求,但需要投入大量研发资源,交付周期也更长。比如一个通过 BI 只需要 1 天就能搭建出来的看板,如果采用自研方式,可能需要投入 30 PD 的研发人力。既然 BI 交付这么快,为什么不把所有看板需求都交给 BI?原因在于,业务某些场景需要的不只是把数据展示出来。

京东科技开发者 331

当我谈数据库高可用时我谈些什么

大家都经常听到说数据库的双1,那双1指的是什么呢?参数=1(最安全)≠1(更快但可能丢)每次提交都把 redo 刷盘0/2:攒着刷,崩溃丢最近 1 秒每次提交都把 binlog 刷盘0/N:攒着刷,崩溃丢最近若干条"双 1"(都设为 1)= 单机不丢已提交事务的前提。生产核心库必须双 1;代价是每次提交两次 fsync。小结:单机层用 WAL 提速、用 2PC 保证 redo/binlog 一致、用崩溃恢复裁决半成品事务、用双 1 兜底持久性。

京东科技开发者 289

ScoAI:面向供应链的运筹原生决策智能

ScoAI 关注的并非 AI 能否进入供应链,而是 AI 参与供应链决策之后,哪些内容适合通过数据学习,哪些关系必须显式计算,以及哪些结果需要依据执行记录进行验证。其基本分工是:供应链业务定义问题、资源与行动后果,运筹学表达目标、约束和协同关系,AI 提供可复用的估计与判断。真正用于改进后续决策的,不仅是模型生成的初始结果,还包括实际采取的行动及其产生的业务反馈。

京东科技开发者 378

拆解海博 AI-Native 落地保障:海博团队 AI 知识库能力建设

绕了一大圈,回头看,我们其实一直在解开头那三个结:AI 读不懂系统、影响面靠人脑记、测试预期没处查。做到这里,本质上是把"AI 用不好"这个问题,从"是不是该换个更强的模型"重新定义成了"怎么把上下文经营好"。顺着这个思路,我们攒下了这么几样东西:•。

京东科技开发者 532

从零构建一个生产级记忆型 AI Agent —— AgentScope 项目全景技术与学习指南

domain 层端口接口(domain)职责适配器实现(infra)对话流水账读写经验记忆检索/落库请求级幂等四态会话元数据 CRUD会话级 Skill 选择态Skill 元数据HITL 权限网关(domain 内含逻辑,见第四篇)StreamSink技术中立的流式下沉(client 层桥接)以幂等端口为例,头部注释明确写道:实现 domain 端口,持有实体不出 infra 边界,对外只暴露嵌套视图GateResult。

京东科技开发者 587

数据涅槃:Agentic 重塑搜推数据生产体系

当前大模型已经能够理解需求、生成代码和解释错误,但数据生产的难点并不只是“写出一段 SQL”。一个需求还要经过数据源确认、口径澄清、加工编排、资源规划、任务提交、调度运行、结果交付和故障处置。任何一步缺少都可能让“看起来正确”的任务变成生产事故。

京东科技开发者 347

81.8 秒的视频,我们改了 15 个版本:一次纯 Codex 驱动的 AI-native 视频实践

81.8 秒、15 个版本,这些数字真正想说明什么?视频制作正在从一组专业软件里的复杂操作,变成一场围绕目标、参考和反馈展开的持续对话。AI 已经可以接住从脚本到交付的大量工作。你可以把精力留给更重要的部分:理解观众、选择故事、判断好坏。过去停在 PPT 和脑海里的想法,现在有机会被快速做成一支能看、能改、也愿意转发的视频。如果明天就要介绍你手头的项目,你最想先把哪一步交给 AI?

京东科技开发者 445

Codex 驱动的移动端AI全栈开发:从 Relay 原型图到可交付链路

AI 编程工具降低了跨端开发门槛,但“让 AI 写页面”并不等于“完成移动端交付”。PC 运营端页面通常以功能闭环为中心,设计约束较弱,研发可以基于组件库快速搭建;移动端 C 端页面直接面对用户,Relay 原型图和 UI 设计稿不仅是视觉参考,更是交互、信息层级、状态反馈和业务信任感的综合契约。

京东科技开发者 576

Claude Code vs Codex 记忆体系深度对比

Claude Code —— 分层自动记忆系统四层分层架构(CLAUDE.md / Auto Memory / Session Memory / AutoDream)构成自优化闭环,系统主动捕获、分类、去冗并跨会话接力经验。走的是自动化优先路线——让机器替人记忆、替人整理,以少量可控性的不确定换取强大的经验积累能力。Codex —— 声明式契约系统两层扁平架构(AGENTS.md 静态声明层 + 会话上下文层),记忆完全由人显式订立、显式修改,系统只读契约、绝不擅自变更。走的是可控性优先。

京东科技开发者 613

上游给空、下游拿到 -1,我把故障一直追到了 commons-beanutils 的构造函数

这篇手记是一份事后复盘,写在我们已经把修复推上线、把测试用例跑绿、把约束文档沉淀进团队库之后。非研发同事,可以直接从第八章开始看,前七章都是讲排障和代码分析。故障本身不复杂,修复也不复杂,但这次排查真正让我想写下来的,不是技术本身——而是从问题提报到解决全程AI的作用:问题定位:业务方反馈了一个异常单号说「下发失败」,一线运维同事直接在日志系统捞到相关的系统日志,用IDE打开下游代码库,把异常信息给到JoyCode——AI 直接指向了问题是serialType值非法,系统只接受0和1,而当前上游给的是-1。

京东科技开发者 708

SKill测评:谁才是真正的Skill之王?

巧合的是,阿里近期开源了一款名为 Skill-Up 的测评工具——它专门面向 Agent Skill 开发者,支持在 Claude Code、Codex、Qoder CLI 等真实 Agent Engine 环境中验证 Skill 的功能正确性,并可将失败用例转化为精准的修复指引,同时支持本地与 CI 环境的持续回归。2026年,Skill 的热度不减,已成为 AI 辅助编程领域的标配。在日常研发中,无论是沉淀个人经验,还是将团队的优秀范本标准化,将知识“蒸馏”为 Skill 已是大家的常规操作。

京东科技开发者 629

让AI真正参与工作!JoyDesk已上线京东云

JoyDesk提供覆盖AI资产管理、权限控制、安全策略、审批审计、运营监控等企业级治理能力,支持按组织、角色和项目进行精细化权限管理,并支持私有化部署,确保企业数据边界清晰、AI行为全程可追溯、安全策略灵活可配置,满足金融、政企等行业对数据安全和合规治理的要求,让AI真正成为企业可信赖的生产力。JoyDesk支持MCP协议、标准API、技能等多种开放接入方式,可快速连接企业现有业务系统,将业务能力封装为AI可调用的技能和专家,让AI能够理解业务流程、调用业务系统、完成业务任务,而无需改变企业原有IT架构。

京东科技开发者 661

【全栈实践】第一个 AI Agent 项目:从零搭建 AI 音频创作助手【最终版】

这个项目展示了AI Agent 在垂直内容创作领域端到端自动化:从内容理解到播客输出,全流程 AI 驱动多模态融合:文字、图片、音频、视频统一处理专业级音频质量:音色设计 + 智能混音,输出广播级品质低门槛使用:可视化配置 + 自然语言交互,无需技术背景。

京东科技开发者 557

【全栈实践】第一个 AI Agent 项目:从零搭建 AI 音频创作助手(高级篇)

这是一个 AI 驱动的播客创作助手,专注于从文字/视频/音频内容识别到播客制作的全流程。你可以用自然语言与它对话,也可以上传视频和音频,它会理解意图、调用相应的语音合成工具,把他们变成真实的播客音频。

京东科技开发者 723

【全栈实践】第一个 AI Agent 项目:从零搭建 AI 音频创作助手(进阶篇)

这是一个AI 驱动的音频内容创作助手。你可以用自然语言与它对话,它会理解意图、调用相应的语音合成工具,把文字变成真实的播客音频,并保存在本地。关于项目的详细介绍见第一篇文章:第一个 AI Agent 项目:从零搭建 AI 音频创作助手(入门篇)这篇文章更多介绍进阶篇添加的功能。

京东科技开发者 547

【全栈实践】第一个 AI Agent 项目:从零搭建 AI 音频创作助手(入门篇)

这个项目让我第一次把前端、后端、AI Agent 三块内容独立串联起来。技术选型上每一块都是当下主流的方案,实际跑通整条链路之后对"全栈"有了更具体的感受。框架版本要锁定:LangChain 这类快速迭代的框架,版本差异带来的问题远比你想象的多先跑通链路,再追求完美:新手阶段能把用户输入 → AI 处理 → 结果展示这条链跑通,比深入某个技术点更有价值多看官方文档:相比博客和教程,官方文档更新及时,特别是 LangGraph 这种新框架后续计划继续迭代,欢迎交流!

京东科技开发者 606

ICLR 2026 | 面向序列决策的贝叶斯集成方法

在这篇工作中,我们关注的是。

京东科技开发者 295

ICML 2026|NaviAgent:面向 Oxygen 智能体的可扩展工具编排

大型语言模型(LLM)越来越多地作为函数调用代理,调用外部工具来处理超出其静态知识范围的任务。然而,它们通常一次只调用一个工具,缺乏对任务结构的全局视图。由于工具之间往往相互依赖,这会导致错误累积和可扩展性差,尤其是在扩展到数百或数千个工具时。为了解决这些局限性,我们提出了NaviAgent,一种显式的双层架构,它通过基于图的工具关系建模将任务规划与工具执行解耦。在规划层,基于 LLM 的代理决定是直接响应、澄清意图,还是检索并执行一个独立于工具间复杂性的工具链。

京东科技开发者 387

实测 9 款 AI 架构图工具:从 Mermaid 美化到 GPT-Image2,一份选型清单

支持 5 类图(架构图、工作流图、时序图、数据流图、生命周期/状态机图),主题 4 种(Classic、Signal Flow、Blueprint、Editorial)+ 3 种色彩模式(Dark / Light / System Auto),输出格式含 HTML、PNG、SVG、WebM、Share Card PNG、JSON IR。它把提示词图库、图像生成案例、参考图编辑流程和命令行工具整合在一起,让 AI Agent 能直接调用 GPT Image 2 模型完成文生图、图生图、参考图编辑等任务。

京东科技开发者 898

别再守着 Claude Code 了——学会指挥它自主干活

回到开头那句:别再一句一句地喂它、然后守着屏幕。真正的用法是——把一件事想清楚、划好边界、给它一个能自我验证的目标,然后交出去。你会发现,省下来的时间不是一点半点。把重复的判断和执行还给机器,把真正需要你的判断留给自己。

京东科技开发者 585

CVPR 2026|Oxygen XR 团队在原生鱼眼高斯泼溅技术上带来新突破

京东零售技术团队联合清华大学提出DirectFisheye-GS框架,创新性地将鱼眼相机模型原生嵌入3D高斯泼溅管线,通过跨视角联合优化策略直接处理鱼眼图像,避免了传统去畸变预处理导致的信息损失。该方案在多个公开数据集上达到SOTA性能,有效解决了单视角优化引起的几何畸变和视角不一致问题,同时保持与现有3DGS工具链的兼容性。技术已应用于电商3D重建和4D体积视频等场景,显著提升了沉浸式体验。相关论文被CVPR 2026接收,为宽视场场景重建提供了高效解决方案。

京东科技开发者 354

拆解海博 AI-Native 落地保障:Harness、双 Loop、知识库与技能自主迭代实践

海博研发RoadMap 的落地,彻底终结了 AI 编程“对话式玄学”的旧模式,真正落地了AI Native 研发工程化。它证明 AI 规模化赋能研发的核心,不在于堆砌大模型能力,而在于用工程思维重构 AI 的工作范式:用结构化流程替代随机对话,用固化规则约束模型行为,用持续沉淀实现能力复利,用分层架构支撑规模化落地。

京东科技开发者 638

让 AI 快速「读懂」你的代码仓:Joy-Code-Graph 云端图谱服务的三次进化

代码知识图谱不是要取代 AI 的智能,而是要补齐它对代码全局关系的认知盲区。当 AI 能一眼看清「谁调用了谁、改动会波及哪里」,它写出的代码才真正靠谱;当这份认知安全地留在自己手里、随时被 Joygen 调用、并且永久沉淀在代码仓里——AI 编程的体验,才算真正上了一个台阶。这,就是我们做 Joy-Code-Graph 云端服务的初衷。能力共享,数据自主;一次建图,长期受用。

京东科技开发者 751

【Coding生态】从代码托管到 AI 能力底座:与Coding一起共建 AI 研发生态

前两种框架能够很好地支撑对话式能力和预设流程式能力。它们适合基于提示词或预设工作流完成研发问答、知识查询、流程编排等任务。但在更复杂的研发场景中,仅仅“回答问题”还不够。当用户业务逻辑复杂时,一旦场景进入真实落地阶段,例如下载代码、修改文件、执行命令、安装依赖、运行测试、读取完整代码文件,或者与自有系统联动、将结果渲染到 Coding 页面、推送到京 ME,AI 应用需要的不只是知识能力,还需要真实的代码库操作能力和独立可执行环境。

京东科技开发者 768

GPT-5.6、ChatGPT Work 与 Codex 更新食用指南

三档模型当前都提供 1,050,000 tokens 上下文、922,000 tokens 最大输入和 128,000 tokens 最大输出,接受文本与图像输入、输出文本,并支持 web search、file search、Computer Use、MCP、Tool Search、Skills、Apply Patch 等工具。Work 可以读取你提供的文件,通过插件连接 Slack、Google Drive、SharePoint、邮箱、日历、CRM 或项目系统,调用获批工具,并在执行中展示进度。

京东科技开发者 863

把业务流程沉淀成高质量 Skill 的实践路径

使用Record & Replay创建的Skill,尽管创建流程简单,但它的本质实际是让 AI 去操作页面,这不但有可能影响我们对电脑的操作,还有可能无法稳定复现。创建Skill时,可以使用 Codex 的 Record & Replay 插件,把一次手工操作录下来,再让 AI 生成可复用流程。刚开始切换时,很容易遇到接口报错,可以让Codex排查原因进行优化,直到可以稳定执行;补充相应业务背景,说明这件事为什么要做,谁会用,输入从哪来,输出给谁看。电脑休眠、关机、软件没开时,本地任务可能无法执行。

京东科技开发者 835

政企前台AI-Agent的架构实践:打造可复用的 AI 服务平台-【灯塔计划】

不止是爆火的龙虾,还是各种Skills,MCP、Agent,脱离的具体的场景谈方案,最后只会是一场空。这一套可复用的 AI 服务平台,截止目前,通过前后端对接规范文档,多项能力已快速接入到各个场域的不同端平台,大幅降低研发成本, 并且各业务线新场景的接入从原来的 “开发驱动” 转为 “配置驱动”,接入周期从天维度缩短至小时级。

京东科技开发者 862

京东 Oxygen xLLM 大模型推理引擎正式捐赠开放原子开源基金会,共建国产 AI Infra 生态

下一阶段 AI 基础设施的核心命题,不是简单的算力堆叠,而是让工程本身变得智能——让调度系统能自主感知负载特征并动态优化,让推理引擎能根据模型结构和硬件特性自动生成最优执行方案,让整个 AI 工程链路具备自感知、自决策、自优化的能力。未来,Oxygen xLLM 的项目官网、社区沟通渠道及微信社区将陆续向开发者开放,诚邀芯片厂商、模型厂商、云厂商、企业用户及个人开发者共同参与,让国产大模型推理引擎在开放生态中加速成长。硬件层,原生支持 GPU / NPU / MLU 多类 AI 芯片,深度适配国产芯片。

京东科技开发者 1003
上一篇: 干货 | 从自建MySQL迁移到京东云RDS
下一篇: JOIN US | 京东云技术精英招聘
京东云开发者
京东云开发者 企业官方账号 企业官方账号
博客等级 码龄8年 1万+粉丝 2140原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值