Skip to content

acceleration_mode=Auto時にEPに問題があるならCPU版にフォールバックする #783

@qryxip

Description

@qryxip

内容

ONNX Runtimeのセッション開始時にExecution Provider (EP)に問題がある(例: 正しいバージョンのCUDAが入ってないのにCUDA版を使おうとする)場合、現在の挙動ではそのままエラーになります。acceleration_mode=Gpu時ではこれは望ましい挙動です。

ここでacceleration_mode=Auto時に限っては、EPに問題があった場合にエラーではなくCPUExecutionProviderにフォールバックするようにすることを提案します。

#725 (comment)

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の種類/ディストリ/バージョン

  • Windows
  • macOS
  • Linux

その他

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions