複数のCore MLモデルを繋げてひとつのモデルにするパイプライン機能

foo.mlmodelとbar.mlmodelという2つ(以上)のモデルを、

input -> foo -> output -> bar -> output

という感じでfooの出力をbarの入力として使っているような場合に、Core ML Toolsのパイプライン機能を使用してfooとbarをがっちゃんこしたモデルfoobar.mlmodlを作ると、

input -> foobar -> output

とひとつのモデルで一気に処理できる。

これにより以下のようなメリットが考えられる:

・パフォーマンス(CPUとGPU間での行ったり来たりが減る)
・モデル利用側での実装がシンプルになる

Core ML 3から導入された機能のはずだが、__init__.pyにこれ専用のSpecification Versionの定義は見当たらない。

coremltoolsのパッケージとしては coremltools.models.pipeline を使用する。ドキュメントはこちら:

ソースコードはこ こ:

https://github.com/apple/coremltools/blob/master/coremltools/models/pipeline.py

## パイプラインの種類

____________________

ここからはマガジン購読者だけが読めますが、

「がんばって書いた記事は無料公開、
 雑にさくっと書いた記事は有料マガジンに」

という方針なのであまり大したことは書いていません。

が、たったの400円で、すぐに購読解除してもその月は過去記事もさかのぼって読めるので、少しでも気になる内容がある方にはオトクかと思います。

____________________

ここから先は

1,519字
文章やサンプルコードは多少荒削りかもしれませんが、ブログや書籍にはまだ書いていないことを日々大量に載せています。たったの400円で、すぐに購読解除してもその月は過去記事もさかのぼって読めるので、少しでも気になる内容がある方にはオトクかと思います。

技術的なメモやサンプルコード、思いついたアイデア、考えたこと、お金の話等々、頭をよぎった諸々を気軽に垂れ流しています。

最後まで読んでいただきありがとうございます!もし参考になる部分があれば、スキを押していただけると励みになります。 Twitterもフォローしていただけたら嬉しいです。 https://twitter.com/shu223/