シリーズ・全3本
機械学習モデルの運用
モデルは作って終わりではなく、入ってくるデータの検証、モデルの保存と読み込み、推論の速度といった運用の問題が続きます。このシリーズでは、データ検証の仕組みは劣化をどこまで捕まえられるのか、保存したモデルはライブラリのバージョンが変わっても同じ予測を返すのか、推論はどの工夫でどれだけ速くなるのかを、実際に壊し、実際に測って確かめています。
このシリーズで確かめていること
- データ検証を入れておけば、入力の劣化には気づけるのか
- 保存したモデルは、環境が変わっても同じ予測を返すのか
- 推論の高速化は、どの工夫が割に合うのか
連載順に読む
本番の機械学習モデルを運用する人向けに、panderaとは何か、DataFrameSchemaの基本的な使い方、推論前に検出できる入力異常と検出できない変化を実測結果から解説します。
第2回scikit-learnモデルのバージョン互換性—pickle・joblib・skops・ONNXの予測差を実測
scikit-learn 1.5.2で保存した2モデルを1.9.0で読み込むと、pickle・joblib・skopsは予測確率が完全に一致しました。ONNXだけは警告なしで1,000件中2件の判定が反転し、その差はバージョン違いではなく変換と推論の経路で生じていました。
第3回LightGBMの推論高速化—ONNXが単発も一括も最速、treeliteは使い方で順位が逆転
LightGBMのpredictを1行ずつ呼ぶ処理は、変換なしでnumpyのまま一括で渡すだけで13.7倍になりました。1件ずつではLightGBMより4.7倍速いtreeliteが18,000件の一括では0.45倍に落ち、ONNXは両方で最速。Apple M1上の合成データ1件での実測です。