Tensorflow集线器模块重用
假设我想使用TF Hub中的特定Tensorflow集线器模块重用,tensorflow,tensorflow-serving,tensorflow-hub,Tensorflow,Tensorflow Serving,Tensorflow Hub,假设我想使用TF Hub中的特定模块(文本嵌入)创建两个不同的模型,然后我想导出并提供服务 选项1: 为每个模型导入模块,将每个分类器放在顶部,然后导出2个模型;在各自的docker容器中提供。这些模型包含底层嵌入模块和分类器 选项2: 为模块本身提供服务,并将其输出发送到两个不同的模型,这些模型本身不包含嵌入件。(这可能吗?) 我的计算机科学背景告诉我,选项2更好,因为我们对这两个模型都重新使用了原始的嵌入模块,并且将模型本身与嵌入模块分离 然而,从实际的角度来看,当数据科学家在编码时,他们正
模块
(文本嵌入)创建两个不同的模型
,然后我想导出并提供服务
选项1:
为每个模型导入模块
,将每个分类器放在顶部,然后导出2个模型
;在各自的docker容器中提供。这些模型包含底层嵌入模块和分类器
选项2:
为模块
本身提供服务,并将其输出发送到两个不同的模型
,这些模型本身不包含嵌入件。(这可能吗?)
我的计算机科学背景告诉我,选项2更好,因为我们对这两个模型都重新使用了原始的嵌入模块,并且将模型本身与嵌入模块分离
然而,从实际的角度来看,当数据科学家在编码时,他们正在导入模块
并在上面使用分类器进行训练,因此在没有底层嵌入的情况下导出模型
本身会变得很麻烦
谁能给我指出正确的方向吗?希望我的问题有意义,我自己不是一个数据科学家,我更多的是来自开发背景
感谢将分类器放在嵌入模块的顶部会产生相当强的依赖性:分类器必须训练到特定的嵌入空间。除非您做出非常特殊的安排,否则仅仅在另一个嵌入模块中交换是不起作用的。因此,选项1非常好:它产生两个模型,可以独立提供和更新。它们有一些重叠,类似于使用相同库的两个静态链接程序,但源代码仍然是模块化的:通过它们的公共签名使用集线器嵌入模块使它们可以互换
相比之下,选项2提供了三个具有非平凡依赖关系的移动部件。如果你的目标是简单,我不会去那里