Closed qryxip closed 3 months ago
ONNX Runtimeのセッション開始時にExecution Provider (EP)に問題がある(例: 正しいバージョンのCUDAが入ってないのにCUDA版を使おうとする)場合、現在の挙動ではそのままエラーになります。acceleration_mode=Gpu時ではこれは望ましい挙動です。
acceleration_mode=Gpu
ここでacceleration_mode=Auto時に限っては、EPに問題があった場合にエラーではなくCPUExecutionProviderにフォールバックするようにすることを提案します。
acceleration_mode=Auto
CPUExecutionProvider
https://github.com/VOICEVOX/voicevox_core/pull/725#issuecomment-2081560936
AccelerationMode::Autoが"auto"らしくなる
AccelerationMode::Auto
Autoはデフォルトの値であり、VOICEVOX COREに初めて触れる人が選ぶ(というよりデフォルトのままにする)であろう値です。その役割が何なのかというと「その場で最適なEPを選択する」となると思います。CPUにフォールバックする方がこの役割に合致すると思います。
Auto
ort::SessionBuilder::with_execution_provider
warning
https://github.com/pykeio/ort/blob/v2.0.0-rc.2/src/execution_providers/mod.rs#L229-L231
N/A
良いと思います!!
ortはCPUにフォールバックした旨をwarningレベルのログで教えてくれる。
まさにこれ(フォールバック時はログを出す)を提案しようと思ってました・・・!
内容
ONNX Runtimeのセッション開始時にExecution Provider (EP)に問題がある(例: 正しいバージョンのCUDAが入ってないのにCUDA版を使おうとする)場合、現在の挙動ではそのままエラーになります。
acceleration_mode=Gpu
時ではこれは望ましい挙動です。ここで
acceleration_mode=Auto
時に限っては、EPに問題があった場合にエラーではなくCPUExecutionProvider
にフォールバックするようにすることを提案します。https://github.com/VOICEVOX/voicevox_core/pull/725#issuecomment-2081560936
Pros 良くなる点
AccelerationMode::Auto
が"auto"らしくなるAuto
はデフォルトの値であり、VOICEVOX COREに初めて触れる人が選ぶ(というよりデフォルトのままにする)であろう値です。その役割が何なのかというと「その場で最適なEPを選択する」となると思います。CPUにフォールバックする方がこの役割に合致すると思います。Cons 悪くなる点
実現方法
725 の実装をベースに、
acceleration_mode=Auto
のときに限りort::SessionBuilder::with_execution_provider
でEPを登録する。ortはCPUにフォールバックした旨をwarning
レベルのログで教えてくれる。https://github.com/pykeio/ort/blob/v2.0.0-rc.2/src/execution_providers/mod.rs#L229-L231
VOICEVOXのバージョン
N/A
OSの種類/ディストリ/バージョン
その他