我正在使用Tensorflow-serving部署我的tensorflow模型。我在可用的服务器上有多个GPU,但是到目前为止,在推理过程中,只使用了一个GPU。
我目前的想法是,并行处理大量图像的分类,是为每个可用的GPU生成张量流服务图像,并让并行的“工人”从生成器中获取图像,提出请求并等待答案。然后从生成器获取新图像,依此类推。这意味着我必须实现自己的数据处理程序,但这似乎是可以实现的。
我在TensorFlow Serving Batching中阅读了有关SharedBatchScheduler
的内容,但是我不知道这对进一步检查是否有用。
总体上来说,我对张量流服务还很陌生,我想知道这是否是实现我想要的最直接的方法。
在此先感谢您的帮助/建议!
编辑: 感谢您的澄清性问题:我知道311问题github.com/tensorflow/serving/issues/311。 有人有解决此问题的方法吗?
答案 0 :(得分:0)
这对docker和function! Mymatch(sel)
"reselect and copy selection in unnamed reg
normal gv""y
if a:sel == 1
:call matchadd("MatchYellow",@")
elseif a:sel == 2
:call matchadd("MatchGreen",@")
elseif a:sel == 3
:call matchadd("MatchRed",@")
elseif a:sel == 4
:call matchadd("MatchBlue",@")
elseif a:sel == 5
:call matchadd("MatchPurple",@")
elseif a:sel == 6
:call matchadd("MatchWhite",@")
elseif a:sel == 7
:call matchadd("MatchOrange",@")
elseif a:sel == 8
:call matchadd("MatchPink",@")
elseif a:sel == 9
:call matchadd("MatchCyan",@")
else
:call matchadd("MatchYellow",@")
endif
endfunction
map mm :call Mymatch(v:count)<CR>
完全可行(从issue的nvidia-docker 2.0
来看,他们正在使用第一个版本)。我确实使用多个GPU和Serving进行了尝试;但是,最终并没有在多个GPU上运行它。
尽管如此,我有一台带有4个GPU的主机,并且当前为每个运行Tensorflow进行训练的自定义映像调度1个GPU,以便每个用户都可以在隔离的环境中使用GPU。以前,我使用Kubernetes进行设备供应和容器管理,但这对我需要做的事情来说太过分了。目前,我正在使用docker run --runtime=nvidia ...
做所有的魔术。这是一个示例:
docker-compose
此处的关键部分是NVIDIA_VISIBLE_DEVICES变量,其中GPU的索引对应于version: '3'
services:
lab:
build: ./tensorlab
image: centroida/tensorlab:v1.1
ports:
- "30166:8888"
- "30167:6006"
environment:
NVIDIA_VISIBLE_DEVICES: 0,1,2
...
的输出