複数の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円で、すぐに購読解除してもその月は過去記事もさかのぼって読めるので、少しでも気になる内容がある方にはオトクかと思います。
____________________
最後まで読んでいただきありがとうございます!もし参考になる部分があれば、スキを押していただけると励みになります。 Twitterもフォローしていただけたら嬉しいです。 https://twitter.com/shu223/