首页 > 解决方案 > 构建 nuro_image 时如何确定使用哪个基础?

问题描述

如标题所述,当我添加新的 push_image 时,如何确定如何在 BUILD 文件中为 nuro_image 目标指定 base?我在代码库中看到了几个不同的,例如

base = "//learning/utils:tf_base_image",

base = "@nuro_image//image", 

有什么区别?

标签: bazel

解决方案


这取决于二进制/图像需要什么依赖项。如果二进制文件需要 Tensorflow 作为依赖项,那么您需要使用tf_base_image.

这个想法类似于最低共同祖先。想象一下,我们正在将二进制 A 构建到图像中。假设 A 有两个依赖项 B 和 C,而 B 和 C 都依赖于 Tensorflow。如果 A 使用tf_base_image,那么当我们构建 B 和 C 时,依赖的 Tensorflow 库已经包含在内,可以重复使用。但是如果我们 A 使用@nuro_image//image,那么 B 和 C 都需要获取 Tensorflow,因此我们最终会包含两次相同的库。结果,构建变得更慢,我们得到更大的图像。

为了更好地理解,tf_base_image这里的定义是: https ://gitent.corp.nuro.team/Nuro-ai/Nuro/blob/develop/learning/utils/BUILD#L84-L98


推荐阅读