0Pricing
Learn AI with Python · レッスン

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 data

CPUバウンド推論に使う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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. MLエンジニアのためのFastAPI入門
  2. リクエストとレスポンスのためのPydanticスキーマ
  3. MLモデルの読み込みと提供
  4. モデルAPIのDocker化
← Learn AI with Pythonに戻る