📝

macOS用のTensorFlowがいつの間にかリリースされてた

2021/07/15に公開

macOSとTensorFlow

macにはNVIDIAのGPUが搭載されていないため、prebuildのパッケージは長らくの間CPUバージョンのみでした。1年ほど前にApple自身がmacOSのTensorFlowを公開していましたが、しばらくalpha版のみで留まっておりました。

https://github.com/apple/tensorflow_macOS

ところが、先日覗きにいったところリポジトリがアーカイブ(凍結)されており、代わりのインストール方法が公開されていました。

https://developer.apple.com/metal/tensorflow-plugin/

どうやらTensorFlow 2.5でGPU accelarationなどの専用ハードウェアデバイスによる処理高速化をTensorFlow本体と切り離せるように変更が入ったのに合わせる形で、Metalを介したGPU処理をPluggableDeviceとしてtensorflow-metalにまとめたようです。

TensorFlowのリリースノート:Release 2.5.0より当該部分を引用します。

https://github.com/tensorflow/tensorflow/releases

PluggableDevice

    Third-party devices can now connect to TensorFlow as plug-ins through StreamExecutor C API.
    and PluggableDevice interface.
        Add custom ops and kernels through kernel and op registration C API.
        Register custom graph optimization passes with graph optimization C API.

x64: AMDしか手元になかったのですが、確かにGPUを叩くように切り替わりました。ただ、特に処理時間を測った分けではないのです、悪しからず。また、M1ではcondaを使って追加の依存モジュールをインストールする必要があるみたいですが、手元に実機がないのでよく分かりません。誰か教えて下さい。

モデルのシリアライズに注意?

つい先日、Graphをprotobuf形式でシリアライズする方法を紹介しました。

https://zenn.dev/dskkato/articles/tf2-rust-python

ただ、tensorflow-metalを使った場合はシリアライズできないopを含んでしまうためか、正しくエクスポートできませんでした。なお、SavedModelのフォーマットだと大丈夫そうでした。

Discussion