import paddle 时直接触发 Illegal instruction,CPU 不支持 AVX 的环境是否有兼容方案?

Author: SongZhuoRu-codeCreated Jun 6, 2026Updated Jul 14, 2026

问题确认 Search before asking

  • 我已经搜索过问题,但是没有找到解答。I have searched the question and found no related answer.

请提出你的问题 Please ask your question

问题描述

我在 Ubuntu 服务器的 Docker 容器中运行项目时,程序在执行 import paddle 时直接退出,没有 Python traceback,最终定位为 Illegal instruction (core dumped)

目前已经确认:

  • 不是项目代码路径问题
  • 不是容器自动重启导致的日志干扰
  • 不是内存不足(OOM)
  • 不是 action_inferpipe_utils 这类业务模块导入失败
  • 问题可以稳定复现到 import paddle 这一步

怀疑是当前服务器 CPU 指令集较弱,和 paddlepaddle 的预编译二进制不兼容。


运行环境

  • 操作系统:Ubuntu
  • 部署方式:Docker 容器
  • Python 版本:3.12
  • 基础镜像:python:3.12-slim(实际构建时通过镜像代理拉取)
  • CPU 信息:
    • Model name: QEMU Virtual CPU
  • CPU flags:
bash
fpu de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pse36 clflush mmx fxsr sse sse2 syscall nx lm rep_good nopl xtopology cpuid tsc_known_freq pni cx16 x2apic hypervisor lahf_lm cpuid_fault

可以看到当前环境没有这些指令集:

  • avx
  • avx2
  • sse4_2
  • fma

复现方式

在容器中执行下面的最小复现脚本:

bash
python - <<'PY'
print('STEP 1: start')

print('STEP 2: import ultralytics')
from ultralytics import YOLO
print('STEP 2 OK')

print('STEP 3: import paddle')
import paddle
print('STEP 3 OK')
PY

实际结果

输出如下:

bash
STEP 1: start
STEP 2: import ultralytics
STEP 2 OK
STEP 3: import paddle
Illegal instruction (core dumped)

容器退出码为:

bash
132

预期结果

希望至少能够:

  1. 正常导入 paddle
  2. 或在不兼容 CPU 上给出更明确的报错提示
  3. 或确认当前版本是否必须要求 AVX / AVX2 指令集

已做排查

我已经确认过以下内容:

  • ultralytics 可以正常导入
  • 问题稳定出现在 import paddle
  • 容器不是 OOM 退出,oom=false
  • 业务代码中依赖的本地模块和路径都已确认无误
  • 前台运行容器时,问题仍然可以复现,因此不是 --restart always 干扰

想请教的问题

  1. 当前版本的 paddlepaddle 是否默认要求 CPU 支持 AVX / AVX2?
  2. 对于没有 AVX 的服务器环境,是否有官方支持的兼容版本?
  3. 如果官方 wheel 不支持,是否只能自行编译?
  4. 是否有推荐的低指令集 CPU 部署方案?

感谢帮助。

Source: PaddlePaddle/PaddleDetection