머신러닝 엔지니어를 위한 FastAPI 기초
FastAPI 앱, GET/POST 엔드포인트, 경로 및 쿼리 매개변수, 머신러닝 추론에서 async def와 def의 차이.
머신러닝 엔지니어를 위한 FastAPI 기초은(는) CoddyKit의 무료 Learn AI with Python 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Learn AI with Python 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Learn AI with Python 강의에는 총 4개의 강의가 포함되어 있습니다.
머신러닝에 FastAPI를 사용하는 이유
FastAPI는 모델 제공에 적합한 현대적인 Python 웹 프레임워크입니다. 빠르고, 대화형 문서를 자동으로 생성하며, 형식 힌트로 요청을 검증합니다. 모델을 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를 통해 실행하며, uvicorn에 모듈과 app 객체를 지정합니다. 개발 중에는 --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 중심 작업에 사용하며 네트워크나 디스크를 기다립니다.
- sync def: CPU 중심 모델 추론에 사용하며 스레드 풀에서 실행됩니다.
올바른 방식을 선택하면 부하가 걸려도 서버가 응답성을 유지합니다.
빠른 확인
FastAPI 기초 지식을 테스트해 보세요.
복습
FastAPI 서비스를 구축했습니다. app을 만들고, GET /health와 POST /predict를 추가했으며, uvicorn으로 실행했습니다. 또한 IO 중심 작업에는 async def를, CPU 중심 추론에는 sync def를 사용하는 방법을 배웠습니다. 다음 주제는 Pydantic 요청/응답 스키마입니다.
자주 묻는 질문
“머신러닝 엔지니어를 위한 FastAPI 기초” 강의는 무료인가요?
네 — “머신러닝 엔지니어를 위한 FastAPI 기초” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Learn AI with Python 강의 전체를 잠금 해제할 수 있습니다. Learn AI with Python 강의에는 총 4개의 강의가 포함되어 있습니다.
“머신러닝 엔지니어를 위한 FastAPI 기초”에서 뭘 배우나요?
FastAPI 앱, GET/POST 엔드포인트, 경로 및 쿼리 매개변수, 머신러닝 추론에서 async def와 def의 차이. 브라우저에서 직접 실행하는 실습 코드로 Learn AI with Python을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Learn AI with Python을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Learn AI with Python은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.
“머신러닝 엔지니어를 위한 FastAPI 기초” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Learn AI with Python 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Learn AI with Python 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 머신러닝 엔지니어를 위한 FastAPI 기초
- 요청과 응답을 위한 Pydantic 스키마
- 머신러닝 모델 로드 및 제공
- 모델 API를 Docker 컨테이너로 만들기