Nextflow: укажите загрузочный образ при использовании API Google Life Sciences

#nextflow

#nextflow

Вопрос:

Возможно ли в Nextflow указать загрузочный образ виртуальной машины при использовании API Google Life Sciences? В частности, я говорю о bootImage параметре отсюда: https://cloud.google.com/life-sciences/docs/reference/rest/v2beta/projects.locations.pipelines/run#virtualmachine

Редактировать

Причина в следующем: когда я пытаюсь создать пару рабочих, использующих графические процессоры, я получаю следующее сообщение об ошибке:

 (more omitted..)
  NVIDIA_DRIVER_VERSION=450.51.06
  NVIDIA_DRIVER_MD5SUM=
  NVIDIA_INSTALL_DIR_HOST=/var/lib/nvidia
  NVIDIA_INSTALL_DIR_CONTAINER=/usr/local/nvidia
  ROOT_MOUNT_DIR=/root
  CACHE_FILE=/usr/local/nvidia/.cache
  LOCK_FILE=/root/tmp/cos_gpu_installer_lock
  LOCK_FILE_FD=20
  set  x
[INFO    2021-02-24 18:27:39 UTC] PRELOAD: false
[INFO    2021-02-24 18:27:39 UTC] Running on COS build id 13310.1209.10
[INFO    2021-02-24 18:27:39 UTC] Data dependencies (e.g. kernel source) will be fetched from https://storage.googleapis.com/cos-tools/13310.1209.10
[INFO    2021-02-24 18:27:39 UTC] Getting the kernel source repository path.
[INFO    2021-02-24 18:27:39 UTC] Obtaining kernel_info file from https://storage.googleapis.com/cos-tools/13310.1209.10/kernel_info
[INFO    2021-02-24 18:27:40 UTC] Downloading kernel_info file from https://storage.googleapis.com/cos-tools/13310.1209.10/kernel_info

real    0m0.079s
user    0m0.014s
sys    0m0.004s
[INFO    2021-02-24 18:27:40 UTC] Checking if this is the only cos-gpu-installer that is running.
[INFO    2021-02-24 18:27:40 UTC] Checking if third party kernel modules can be installed
[INFO    2021-02-24 18:27:40 UTC] Checking cached version
[INFO    2021-02-24 18:27:40 UTC] Cache file /usr/local/nvidia/.cache not found.
[INFO    2021-02-24 18:27:40 UTC] Did not find cached version, building the drivers...
[INFO    2021-02-24 18:27:40 UTC] Downloading GPU installer ... 
[INFO    2021-02-24 18:27:40 UTC] Downloading from https://storage.googleapis.com/nvidia-drivers-eu-public/nvidia-cos-project/85/tesla/450_00/450.51.06/NVIDIA-Linux-x86_64-450.51.06_85-13310-1209-10.cos
[INFO    2021-02-24 18:27:40 UTC] Downloading GPU installer from https://storage.googleapis.com/nvidia-drivers-eu-public/nvidia-cos-project/85/tesla/450_00/450.51.06/NVIDIA-Linux-x86_64-450.51.06_85-13310-1209-10.cos

real    0m0.811s
user    0m0.175s
sys    0m0.495s
[INFO    2021-02-24 18:27:41 UTC] Setting up compilation environment
[INFO    2021-02-24 18:27:41 UTC] Obtaining toolchain_env file from https://storage.googleapis.com/cos-tools/13310.1209.10/toolchain_env
[INFO    2021-02-24 18:27:41 UTC] Downloading toolchain_env file from https://storage.googleapis.com/cos-tools/13310.1209.10/toolchain_env

real    0m0.021s
user    0m0.013s
sys    0m0.003s
[INFO    2021-02-24 18:27:41 UTC] Found toolchain path file locally
ls: cannot access '/build/cos-tools': No such file or directory
[INFO    2021-02-24 18:27:41 UTC] /build/cos-tools: 
ls: cannot access '/build/cos-tools': No such file or directory
[INFO    2021-02-24 18:27:41 UTC] Downloading toolchain from https://storage.googleapis.com/chromiumos-sdk/2020/06/x86_64-cros-linux-gnu-2020.06.25.065836.tar.xz
[INFO    2021-02-24 18:27:41 UTC] Downloading toolchain archive from https://storage.googleapis.com/chromiumos-sdk/2020/06/x86_64-cros-linux-gnu-2020.06.25.065836.tar.xz
curl: (16) Error in the HTTP2 framing layer

real    0m2.403s
user    0m0.580s
sys    0m1.461s
[ERROR   2021-02-24 18:27:44 UTC] Could not download toolchain archive from https://storage.googleapis.com/chromiumos-sdk/2020/06/x86_64-cros-linux-gnu-2020.06.25.065836.tar.xz, giving up.
 

Итак, что-то о какой-то цепочке инструментов, которую не удалось найти или установить. Однако эта проблема возникает случайным образом. Иногда я запускаю 72 рабочих, и все просто отлично. Иногда я получаю эту ошибку.

Я думал, что изменение упомянутого мной параметра решит эту проблему, но вы правы, вероятно, этого не произойдет.

Я немного покопался, но едва смог найти что-либо связанное. Единственная несколько связанная тема, которую я смог найти, это https://github.com/DataBiosphere/dsub/issues/215 , но там также нет опубликованного решения.

Ответ №1:

В настоящее время нет (начиная с версии 21.02.0-edge), см. Здесь:

https://github.com/nextflow-io/nextflow/blob/v21.02.0-edge/plugins/nf-google/src/main/nextflow/cloud/google/lifesciences/GoogleLifeSciencesConfig.groovy

Из документов видно, что bootImage опция имеет только ограниченный вариант использования и, вероятно, в любом случае не имеет особого смысла для контейнерных рабочих процессов:

Изображение загрузки

Используемый образ операционной системы хоста.

В настоящее время можно использовать только оптимизированные для контейнеров образы ОС.

Значение по умолчанию — projects/cos-cloud/global/images/family/cos-stable, которое выбирает последнюю стабильную версию ОС, оптимизированной для контейнеров.

Эта опция предусмотрена для тестирования бета-версии операционной системы, чтобы гарантировать, что новая версия не будет негативно взаимодействовать с производственными конвейерами.

Чтобы протестировать конвейер на бета-версии ОС, оптимизированной для контейнеров, используйте значение projects/cos-cloud/global/images/family/cos-beta.

Есть ли какая-то причина, по которой вам нужен другой загрузочный образ, отличный от последней стабильной версии, для запуска вашего рабочего процесса? Возможно, более новый docker?


Редактировать:

Я только что просмотрел код, который, как мне кажется, выполняется здесь, не уверен, что у меня правильная версия, но не уверен, действительно ли это имеет значение:

https://github.com/GoogleCloudPlatform/cos-gpu-installer/blob/v20210204/cos-gpu-installer-docker/entrypoint.sh#L299-L324

Я думаю, что сообщение «Не удалось загрузить архив набора инструментов из …» является точным, и мы видим отчет curl: «Ошибка в фреймовом слое HTTP2». Почему? Я думаю, что это просто ошибка загрузки / тайм-аута, если она возникает нерегулярно. Ошибка в фреймовом слое HTTP2 немного странная. Я не уверен, что именно это означает и почему использование HTTP версии 2 иногда может быть проблемой. Я думаю, что лучше всего открыть проблему здесь:

https://github.com/GoogleCloudPlatform/cos-gpu-installer/issues

Комментарии:

1. Спасибо за быстрый ответ. Вы правильно предположили, что моя проблема в чем-то другом. Я обновил свой вопрос и добавил больше деталей.

2. Не беспокойтесь @r0f1, спасибо за обновление. Пожалуйста, ознакомьтесь с моими обновленными комментариями выше. Мне также интересно, является ли проблемой использование вытесняемых экземпляров ? Кроме того, используете ли вы рекомендуемую стратегию ошибок процесса для вытесняемых экземпляров?

3. Я поднял там проблему. Давайте посмотрим, что произойдет. Я использую вытесняемые экземпляры и использую рекомендуемую стратегию ошибок (фактически, я столкнулся с тем, что я также перехватываю коды ошибок 8 и 10, см. github.com/nextflow-io/nextflow/discussions /… ). Но я сталкиваюсь с этой проблемой и с машинами, не подлежащими выгрузке, если я не совсем ошибаюсь. Я определенно сталкиваюсь с этим только на машинах с графическим процессором.

4. Потрясающе, спасибо. Похоже, они рассматривают возможность принудительного использования HTTP версии 1.1. Надеюсь, это исправит это: github.com/GoogleCloudPlatform/cos-gpu-installer/issues/69