最小構成でFastAPIを用いて機械学習モデルをサービング

はじめに 機械学習モデルを作ったらそのまま放置することは私も経験があります。 ただそのままだとWebサイト上で活用(例:レコメンドシステム)として使うことはできなかったり、 定期的に動かすためにAPIを呼び出すなどができません。 そのため、Web API化して、サーバーとして起動できるようにしておくと システムに組み込んだりしやすくなりますので、 この記事ではできるだけ最小構成でFastAPIにMLモデルを組み込んでWebAPIとして呼び出せるWebサーバーを作りたいと思います。 FastAPIについて APIを作るために特化しており高パフォーマンス(Fast)、実装時間がFastなOSSです。 FastAPI 2022/6/28時点でPythonの軽量webフレームワークとして有名なFlaskと比較すると、 watch folk star 初回リリース Flask 2,154 15,127 59,378 2010/4/16 FastAPI 589 3,647 46,651 2018/4/17 でした。 Flaskは2010年に最初のリリースがGithub上にあり、FastAPIは2018年にGithub上にリリースされました。 FastAPIは後発ということもありますので全体的にメトリックは小さいですが、それを鑑みてもStar数などは後発にも関わらず増えていることがわかります。 インストールや簡単な使い方は公式サイトに詳しく載っておりますのでそちらで実施していただければと思います 参考。 今回使う機械学習モデル Kaggleで有名なTitanicの機械学習モデルを使います。Codeは公開されているupuruさんのこちらのCodeを参考に使わせていただきます code:upura-kaggle-tutorial-03-feature-engineering 今回は最低限の構築にしたく、使わない特徴量はコード中で削除しています。 FastAPIで構築するときも使わない特徴量の削除は必要になりますので忘れなく削除する必要があります。 こちらのコードを参考にWebサーバーにモデルを取り込むため、pickleファイルを用意します。 下記はpickleファイルを作成するためのjupyterのコードです。 import numpy as np import pandas as pd import pickle from sklearn.linear_model import LogisticRegression train = pd.read_csv('./train.csv') test = pd.read_csv('./test.csv') combine = [train_df, test_df] data = pd.concat([train, test], sort=False) data['Sex'].replace(['male','female'], [0, 1], inplace=True) data['Embarked']....

June 28, 2022 · 2 min · Implicit none