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

如何在MacBook Pro M1上让Keras利用CPU多核训练神经网络

在MacBook Pro M1上让Keras充分利用CPU全部核心的解决方案

1. 切换到Apple优化的TensorFlow环境

M1芯片架构特殊,普通版本TensorFlow对其CPU多核支持不佳,必须使用Apple官方适配的版本:

  • 卸载原有TensorFlow:pip uninstall tensorflow -y
  • 安装适配版本:
    pip install tensorflow-macos
    pip install tensorflow-metal
    
    注:tensorflow-metal用于GPU加速,即使暂时不用GPU,tensorflow-macos也针对M1 CPU的多核调度做了优化。

2. 手动配置TensorFlow并行线程参数

TensorFlow默认线程设置不会最大化利用M1的核心,训练前添加以下代码强制启用多核并行:

import tensorflow as tf

# 获取当前CPU核心数
core_count = tf.config.threading.get_num_interop_threads()

# 设置操作内和操作间的并行线程数为核心总数
tf.config.threading.set_intra_op_parallelism_threads(core_count)
tf.config.threading.set_inter_op_parallelism_threads(core_count)

# 启用XLA编译,优化计算图并行效率
tf.config.optimizer.set_jit(True)
  • intra_op_parallelism_threads:控制单个计算操作内部的并行线程数
  • inter_op_parallelism_threads:控制多个计算操作之间的并行线程数
  • XLA编译会将计算图转换为更高效的机器码,进一步提升多核利用率

3. 优化数据加载的并行性

如果数据加载是瓶颈,会导致CPU核心闲置,建议用tf.data.Dataset并配置并行预处理:

# 示例:构建并行化的训练数据集
train_dataset = tf.data.Dataset.from_tensor_slices((x_train, y_train))
train_dataset = train_dataset.shuffle(buffer_size=1024)\
                             .batch(batch_size=32)\
                             .map(
                                 lambda x, y: (your_preprocess_func(x), y),
                                 num_parallel_calls=tf.data.AUTOTUNE
                             )\
                             .prefetch(tf.data.AUTOTUNE)
  • num_parallel_calls=tf.data.AUTOTUNE让TensorFlow自动根据CPU负载调整预处理的并行线程数
  • prefetch实现数据加载与模型训练的并行,避免CPU等待数据

4. 验证多核利用情况

训练开始后,打开Mac的「活动监视器」(Launchpad → 其他 → 活动监视器),切换到「CPU」标签:

  • 观察整体CPU使用率,若接近100%则说明多核已被充分利用
  • 也可查看单个Python进程的CPU占用,确认是否用到了所有核心

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 21:17:18