[Apple M1]:我没有为与节点 {{node RngReadAndSkip}} 兼容的“GPU”设备注册“RngReadAndSkip”OpKernel。已注册:设备='CPU'

问题描述 投票:0回答:2

这是我的代码

random = tf.random.Generator.from_seed(42)
random = random.normal(shape=(2,2))

但是我得到了这个错误:

tensorflow.python.framework.errors_impl.NotFoundError: No registered 'RngReadAndSkip' 
OpKernel for 'GPU' devices compatible with node {{node RngReadAndSkip}}. Registered: device='CPU'
tensorflow machine-learning deep-learning tensorflow2.0 apple-m1
2个回答
12
投票

发生这种情况是因为一些 TF/Keras 高级方法没有在 tensorflow-metal 中实现。您可以尝试这个解决方法:

with tf.device('/cpu:0'):
    ...  # your code which need RngReadAndSkip low-level method here

接下来你可以正常做其他事情(使用 GPU)。

希望,Apple 有一天会修复它(还有他们的其他大量错误,lmao)


0
投票

正如在另一个问题中回答的那样,但是我花了很长时间才得到一个我认为值得在这里分享的解决方案。

apple developer webpage 所建议,RngReadAndSkip 在 tensorflow-metal==0.5.1 的 GPU 上注册

我从 tensorflow-metal 0.5 升级到 tensorflow-metal 0.5.1,现在可以用了。

此外,我按照 apple 提供的说明按照表格对齐版本。

按照 apple 提供的说明,我得到了更高的 tensor flow-macos 和 tensorflow-metal 版本,我不得不降级到表中列出的版本。

我也弄乱了 python 版本,从 3.10 到 3.8,但不确定它做了什么。

希望对您有所帮助。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.