Сборка TensorFlow с помощью bazel-buildfarm

Я пытаюсь создать TensorFlow из исходного кода, используя удаленное выполнение + кеширование с помощью bazel-buildfarm. Я установил сервер и рабочий bazel-buildfarm, используя примеры файлов конфигурации @ https://github.com/bazelbuild/bazel-buildfarm (см. examples/ каталог).

Я добавил следующие правила в .bazelrc внутри репозитория исходного кода для TensorFlow (глава мастера):

build --spawn_strategy=remote
build --genrule_strategy=remote
build --strategy=Javac=remote 
build --strategy=Closure=remote
build --remote_executor=grpc://<bazel-buildfarm-server>:8980

Затем я запустил ./configure, используя параметры, которые, как я знаю, подходят для локальной, а не удаленной сборки.

Я запустил сборку TensorFlow:

bazel build —config=opt —config=cuda --config=v2 //tensorflow/tools/pip_package:build_pip_package

Вскоре после этого я получаю это сообщение об ошибке:

...
ERROR: /tensorflow/tensorflow/core/util/BUILD:345:1: Executing genrule //tensorflow/core/util:version_info_gen failed: No usable spawn strategy found for spawn with mnemonic Genrule.  Your --spawn_strategy, --genrule_strategy or --strategy flags are probably too strict. Visit https://github.com/bazelbuild/bazel/issues/7480 for migration advice
Target //tensorflow/tools/pip_package:build_pip_package failed to build

Может ли кто-нибудь помочь мне интерпретировать это сообщение? Я хотел бы разобраться, что происходит и как я могу заставить TensorFlow строить с помощью bazel-buildfarm.


person esw405    schedule 26.02.2020    source источник


Ответы (1)


Снимите флаги --spawn_strategy и --genrule_strategy. Действия будут использовать удаленное выполнение, когда это возможно, и откат к локальным или изолированным параметрам в противном случае. Похоже, что genrule должен работать локально, но ваши флаги не позволяют ему это сделать.

person Jin    schedule 26.02.2020
comment
Отлично! Я попробовал, и, похоже, он работает, хотя у моего рабочего 72 ядра, и он, похоже, почти не использует. Это что-то, что должно быть установлено в файле конфигурации - сколько параллелизма разрешено использовать рабочему? - person esw405; 26.02.2020
comment
Попробуйте --jobs = 100. - person Jin; 27.02.2020
comment
--jobs = 100 при вызове воркера или при запуске сборки? - person esw405; 27.02.2020
comment
При запуске сборки. Количество заданий по умолчанию может быть слишком низким, чтобы перенасыщать рабочих. - person Jin; 27.02.2020
comment
Не могли бы вы взглянуть на этот пост, который я написал, чтобы продолжить наше обсуждение здесь? stackoverflow.com/questions/60439138/ - person esw405; 27.02.2020