Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support CoreML via Onnxruntime CoreML EP (CoreMLで加速) #428

Open
1 of 3 tasks
louy2 opened this issue Feb 17, 2023 · 2 comments
Open
1 of 3 tasks

Support CoreML via Onnxruntime CoreML EP (CoreMLで加速) #428

louy2 opened this issue Feb 17, 2023 · 2 comments

Comments

@louy2
Copy link

louy2 commented Feb 17, 2023

内容

New Rust binding to onnxruntime (#427) might enable using CoreML on Apple devices.

For the downloader, Microsoft provides prebuilt onnxruntime binary with CoreML EP in a CocoaPod onnxruntime-c (Podspec) (1.14.0 binary). (Alternative pods for mobile and obj-c are listed in Onnx Runtime CoreML EP documentation)

Pros 良くなる点

On macOS and iOS take full advantage of Apple Silicon GPU and Apple Neural Engine for inference acceleration.

macOSやiOSでApple Silicon GPUとApple Neural Engineをフル利用して加速できること。

Cons 悪くなる点

CoreML EP may not be compatible with all onnx models.

CoreML EPが実行できないONNXモデルがあるかもしれません。

実現方法

VOICEVOXのバージョン

0.?.0

OSの種類/ディストリ/バージョン

  • Windows
  • macOS
  • Linux

その他

Related 相関: #427 #399

Useful Links 使えそうなリンク:

@PickledChair
Copy link
Member

Thank you for creating this issue!

Issue 作成ありがとうございます!

The libonnxruntime.dylib for macOS distributed by Microsoft is built with the --use_coreml flag turned on (cf. microsoft/onnxruntime#11343 (comment) ), so it can be implemented with a small modification of the current voicevox_core. In the past, I actually tried to implement voicevox_core with CoreML support. However, I did not see a reduction in execution time, so I could not evaluate that a significant performance improvement was achieved.

Microsoft が配布している macOS 向けの libonnxruntime.dylib は --use_coreml フラグをオンにしてビルドされているため (cf. microsoft/onnxruntime#11343 (comment) )、現在の voicevox_core の少しの改良でも実装可能です。以前、実際に CoreML 対応の voicevox_core を実装してみたことがありました。しかし実行時間の短縮が見られなかったので、著明なパフォーマンス向上が得られたとは評価できませんでした。

However, it may still be worthwhile to continue working on the following points:

  • My Mac is an M1 MacBook Air, which may simply be hardware that does not benefit much from CoreML (details unknown).
  • The ONNX model I used in my previous experiments was the version released as OSS. The situation may be different for the version as a product. In addition, the ONNX model currently used in voicevox_core has recently been changed to a newer version. We may need to experiment to see if the new production ONNX models benefit from CoreML more than before.

ただし、以下の点でまだ取り組み続ける価値があるのかもしれません:

  • 私の所有している Mac は M1 MacBook Air であり、単に CoreML による恩恵が少ないハードウェアだったのかもしれません(詳細は不明です)。
  • 以前実験で使った ONNX モデルは OSS として公開されているバージョンのものでした。製品版 ONNX モデルでは事情が違うかもしれません。また製品版 ONNX モデルにおいても、現在 voicevox_core で使われている ONNX モデルは最近になって新しいものに変更されています。新しい製品版の ONNX モデルが以前よりも CoreML の恩恵を受けるものになっているかどうかを実験する必要があるかもしれません。

@Hiroshiba Is it acceptable to add CoreML support for macOS on an experimental basis, even if we don't see performance gains? It will make it easier to experiment to see if future onnxruntime updates, etc. will provide better performance gains from CoreML.

@Hiroshiba パフォーマンスの向上が見られないとしても、実験的に macOS の CoreML サポートを追加することは認められますか? 今後の onnxruntime のアップデート等で CoreML によるパフォーマンス向上が得られるようになっているかどうかを実験しやすくなります。

@Hiroshiba
Copy link
Member

CoreML、良いと思います!
CoreMLによって性能などが向上しなくても、ファイル容量やビルド時間が極端に増えたりしなければ!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants