Tensorflow, обслуживающий сброшенный образ docker ядра незаконных команд

#docker #tensorflow

#docker #tensorflow

Вопрос:

Вот полное сообщение об ошибке

 /usr/bin/tf_serving_entrypoint.sh: line 3:     7 Illegal instruction  
(core dumped) tensorflow_model_server --port=8500 --rest_api_port=8501
--model_name=${MODEL_NAME} --model_base_path=${MODEL_BASE_PATH}/${MODEL_NAME} "$@"
  

Я только что обновил свое оборудование и пытаюсь создать изображение, обслуживающее docker tensorflow. Я знаю, что проблема в изображении с несовместимыми инструкциями процессора.

Вот результат команды lscpu:

Архитектура: x86_64

Операционные режимы процессора: 32-разрядный, 64-разрядный

Порядок байтов: маленький порядковый номер

Размеры адреса: 39 бит физического, 48 бит виртуального

Процессор (ы): 4

Список процессоров в режиме реального времени: 0-3

Поток (ы) на ядро: 2

Количество ядер на сокет: 2

Сокет (ы): 1

Количество узлов NUMA: 1

Идентификатор поставщика: GenuineIntel

Семейство процессоров: 6

Модель: 165

Название модели: процессор Intel (R) Pentium (R) Gold G6400 с частотой 4,00 ГГц

Шаг: 3

Частота процессора: 4000.858

Максимальная частота процессора: 4000.0000

Минимальная частота процессора: 800,0000

BogoMIPS: 7999.96

Виртуализация: VT-x

Кэш L1d: 64 КБ

Кэш L1i: 64 КБ

Кэш L2: 512 КБ

Кэш L3: 4 Мбайт

Процессор (ы) NUMA node0: 0-3

Уязвимость Itlb multihit: KVM: уязвимый

Уязвимость L1tf: не затронута

Mds уязвимости: не затронуто

Сбой уязвимости: не затронуто

Обход хранилища спецификаций уязвимости: смягчение; Обход спекулятивного хранилища отключен через prctl и seccomp

Уязвимость Spectre v1: смягчение; барьеры для копирования / подкачки пользователей и __очистка указателя пользователя

Уязвимость Spectre v2: смягчение; Улучшенные IBRS, условия IBPB, заполнение RSB

Srbds уязвимости: не затронуто

Уязвимость Tsx async abort: не затронуто

Флаги: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe системный вызов nx pdpe1gb rdtscp lm constant_ tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 монитор ds_cpl vmx est tm2 ssse3 sdbg cx16 xtpr pdcm p cid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb invpcid_single ssbd ibrs ibpb stibp ibrs_e nhanced tpr_shadow vnmi гибкий приоритет ept vpid ept_ad fsgsbase tsc_adjust smep erms invpcid mpx rdseed smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves dtherm arat pln pts hwp hwp_notify hwp_act_window hwp_epp md_clear flush_l1d arch_capabilities

Не могли бы вы помочь мне с правильными параметрами для моего процессора для создания образа?

Ответ №1:

Этот процессор не поддерживает инструкции AVX:

Расширения набора команд: Intel® SSE4.1, Intel® SSE4.2

Если бы это было так, вы бы увидели avx флаг в длинной строке, сообщаемой lscpu (1).

В инструкциях по сборке Tensorflow упоминается требование:

Примечание: Начиная с TensorFlow 1.6, двоичные файлы используют инструкции AVX, которые могут не выполняться на старых процессорах.

Лучше всего перейти на TF 1.5, совместимый с платформой, если требуется полный TensorFlow. Если вам нужен только вывод, рассмотрите возможность преобразования модели в TensorFlow Lite, который гораздо менее требователен к платформе. Однако преобразование не является автоматическим и может потребовать значительных усилий, в зависимости от модели.

Главным препятствием для меня было то, что не все операции имели прямые или слитые эквиваленты в TF Lite. С тех пор это могло измениться.