You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu环境下构建MediaPipe Youtube8m特征提取图时gcc编译conv_ops失败求助

解决MediaPipe Youtube8m特征提取编译时gcc被终止的问题

我之前也碰到过完全一样的问题!这个错误的核心原因是系统内存不足(OOM)导致gcc编译进程被系统强制杀掉——MediaPipe和TensorFlow的编译过程,尤其是处理卷积算子这类核心模块时,会占用大量内存,再加上Bazel默认会启动和CPU核心数匹配的并行编译进程,很容易把内存榨干。结合你的硬件环境,给你几个实用的解决办法:

1. 限制Bazel并行编译的进程数

Bazel默认会根据CPU核心数启动多个编译进程,这在内存有限的机器上很容易触发OOM。你可以通过--jobs N参数手动限制并行数,建议设为CPU核心数的一半(比如你的i5是4核心,就设为2)。修改后的编译命令如下:

bazel build -c opt --linkopt=-s \
--copt -DMESA_EGL_NO_X11_HEADERS --copt -DEGL_NO_X11 --define no_aws_support=true \
--jobs 2 \
mediapipe/examples/desktop/youtube8m:extract_yt8m_features

2. 增加系统交换空间(Swap)

如果你的物理内存本身不算充裕(比如8GB及以下),增加交换空间是缓解内存压力的有效办法。执行以下步骤:

  • 创建一个4GB的swap文件(可根据需求调整为8GB):
    sudo fallocate -l 4G /swapfile
    
  • 设置安全权限,避免其他用户访问:
    sudo chmod 600 /swapfile
    
  • 格式化并启用swap:
    sudo mkswap /swapfile
    sudo swapon /swapfile
    
  • 让swap永久生效(重启后依然可用):
    echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
    

3. 可选:降低编译优化等级(仅前两种方法无效时使用)

如果上面的方法还是不行,可以尝试把编译优化从-c opt改成-c fastbuild,虽然编译出的程序性能会有所下降,但编译过程的内存占用会大幅降低:

bazel build -c fastbuild --linkopt=-s \
--copt -DMESA_EGL_NO_X11_HEADERS --copt -DEGL_NO_X11 --define no_aws_support=true \
--jobs 2 \
mediapipe/examples/desktop/youtube8m:extract_yt8m_features

内容的提问来源于stack exchange,提问作者Aftab Shaikh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 22:29:05