MLエンジニアのためのFastAPI入門
FastAPIアプリ、GET/POSTエンドポイント、パスパラメータとクエリパラメータ、ML推論におけるasync defとdefの違いについて学習します。
「MLエンジニアのためのFastAPI入門」はCoddyKit上の無料Learn AI with Pythonレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLearn AI with Python学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Learn AI with Pythonコースには全4レッスンが含まれています。
MLにFastAPIを使う理由
FastAPIは、モデルのサービングに適した最新のPython Webフレームワークです。高速で、インタラクティブなドキュメントを自動生成し、型ヒントを使ってリクエストを検証できます。モデルをHTTP APIの背後に配置する標準的な方法になっています。
アプリケーションの作成
FastAPIアプリケーションをインスタンス化します。このappオブジェクトにすべてのルートを定義します。
from fastapi import FastAPI
app = FastAPI(title="Model Serving API")GET /healthエンドポイント
ヘルスチェックを使うと、ロードバランサーやオーケストレーターはサービスが稼働していることを確認できます。重い処理は行わず、シンプルなステータスを返します。
@app.get("/health")
def health():
return {"status": "ok"}POST /predictエンドポイント
予測では入力データを受け取るため、リクエストボディを使うPOSTを使用します。関数は解析済みのペイロードを受け取り、モデルの出力を返します。
@app.post("/predict")
def predict(features: list[float]):
result = model.predict([features])
return {"prediction": result[0]}GETとPOSTの違い
- GET: データを取得します。ボディはなく、ヘルスチェックや単純な読み取りに使用します。
- POST: ボディでデータを送信します。特徴量を送信する予測などに使用します。
uvicornで実行する
uvicornはFastAPIを実行するASGIサーバーです。コードまたはコマンドラインから起動できます。
import uvicorn
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=8000)コマンドラインからの起動
通常はCLIから起動し、モジュールとappオブジェクトをuvicornに指定します。開発中は--reloadを使うと、コードの変更時に自動的に再起動します。
# terminal
uvicorn main:app --host 0.0.0.0 --port 8000 --reload無料で使えるインタラクティブドキュメント
FastAPIは型ヒントから/docsにSwagger UIを、/redocにReDocを自動生成します。そのため、追加のコードなしでブラウザーからエンドポイントをテストできます。
IOバウンド処理に使うasync def
データベース、外部API、ファイル読み取りなどのIO待ちが発生するエンドポイントにはasync defを使用します。非同期処理では待機中にサーバーが他のリクエストを処理できるため、スループットが向上します。
@app.get("/external")
async def fetch():
data = await call_remote_service()
return dataCPUバウンド推論に使うsync def
モデルのpredictは通常CPU-boundです。このようなエンドポイントは通常のsync defで定義します。FastAPIはこれらをスレッドプールで実行するため、イベントループをブロックしません。CPU負荷の高い処理にasyncを使うと、実際にはサーバーを停止させてしまいます。
@app.post("/predict")
def predict(features: list[float]):
# CPU-bound inference -> sync def
return {"prediction": model.predict([features])[0]}asyncとsyncの選び方
- async def: IO-boundで、ネットワークやディスクをawaitします。
- sync def: CPU-boundなモデル推論に使い、スレッドプールで実行します。
適切な方を選ぶことで、高負荷時もサーバーの応答性を維持できます。
クイックチェック
FastAPIの基本を確認しましょう。
まとめ
FastAPIサービスを構築しました。appを作成し、GET /healthとPOST /predictを追加して、uvicornで実行しました。また、IO-boundな処理にはasync defを、CPU-boundな推論にはsync defを使う方法を学びました。次は、Pydanticによるリクエストおよびレスポンススキーマです。
よくある質問
「MLエンジニアのためのFastAPI入門」レッスンは無料ですか?
はい。「MLエンジニアのためのFastAPI入門」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Learn AI with Pythonコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Learn AI with Pythonコースには全4レッスンが含まれています。
「MLエンジニアのためのFastAPI入門」で何を学びますか?
FastAPIアプリ、GET/POSTエンドポイント、パスパラメータとクエリパラメータ、ML推論におけるasync defとdefの違いについて学習します。 ブラウザで直接実行するハンズオンコードでLearn AI with Pythonを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Learn AI with Pythonを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのLearn AI with Pythonは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「MLエンジニアのためのFastAPI入門」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このLearn AI with Pythonレッスンでコードを書いて実行できますか?
はい。すべてのLearn AI with Pythonレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- MLエンジニアのためのFastAPI入門
- リクエストとレスポンスのためのPydanticスキーマ
- MLモデルの読み込みと提供
- モデルAPIのDocker化