헬창 개발자
FastAPI : LLM 모델 서빙을 위한 API 본문
최근 웹 개발의 트렌드는 빠르고 효율적인 API 개발로 이동하고 있다. 그 중에서도 LLM 모델 서빙에서는 FastAPI는 특히 주목받고 있는 프레임워크이다. FastAPI는 빠른 개발 속도와 높은 성능을 자랑하며, API 설계와 문서화에서 많은 장점을 제공한다.
FastAPI란 무엇인가?
FastAPI는 Python 3.6 이상을 지원하며, 비동기 프로그래밍을 통해 높은 성능을 자랑하는 웹 API 프레임워크다. Starlette과 Pydantic을 기반으로 구축된 FastAPI는 다음과 같은 주요 특징을 가지고 있다.
- 빠른 성능: FastAPI는 비동기 프로그래밍을 지원하여 매우 빠른 응답 속도를 제공. 이는 고성능 웹 애플리케이션을 구축하는 데 큰 장점이 됨.
- 자동화된 문서화: FastAPI는 Swagger UI와 ReDoc을 통해 API 문서를 자동으로 생성. 이 기능은 개발자가 API를 테스트하고 문서화하는 데 큰 도움이 됨.
- 타입 힌트 지원: Python의 타입 힌트를 활용하여 데이터 유효성 검사를 자동으로 수행. 이는 코드의 가독성을 높이고 버그를 줄이는 데 기여함.
- 비동기 지원: 비동기 함수와 await를 통해 높은 성능의 비동기 처리를 지원. 이는 I/O 작업이 많은 애플리케이션에서 유용함.
- 간편한 설정: FastAPI는 설정이 간편하고 직관적. 이를 통해 빠르게 API를 구축하고 배포할 수 있음.
FastAPI 기본 사용법
이제 FastAPI의 기본 사용법을 살펴보겠습니다. FastAPI를 사용하여 간단한 웹 API를 구축해보겠습니다.
1. FastAPI 설치
FastAPI와 Uvicorn(ASGI 서버)을 설치해야 합니다. 다음 명령어를 사용하여 설치할 수 있습니다.
pip install fastapi uvicorn
2. 기본 애플리케이션 생성
FastAPI 애플리케이션을 생성하려면, Python 파일을 하나 만들고 다음과 같은 코드를 작성합니다.
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
return {"item_id": item_id, "q": q}
위의 코드는 두 개의 엔드포인트를 가진 간단한 웹 API를 생성합니다. 첫 번째 엔드포인트는 루트 URL('/')에 GET 요청을 보내면 "Hello, World"를 반환합니다. 두 번째 엔드포인트는 /items/{item_id} 경로를 통해 특정 아이템 ID를 받아와 쿼리 문자열(q)과 함께 반환합니다.
3. 애플리케이션 실행
Uvicorn을 사용하여 FastAPI 애플리케이션을 실행할 수 있습니다. 터미널에서 다음 명령어를 실행합니다.
uvicorn your_module_name:app --reload
여기서 your_module_name은 FastAPI 애플리케이션이 정의된 Python 파일의 이름입니다 (확장자 .py 제외). --reload 플래그는 코드 변경 시 자동으로 서버를 재시작합니다.
4. API 문서 확인
FastAPI는 자동으로 Swagger UI와 ReDoc을 통해 API 문서를 생성합니다. 애플리케이션을 실행한 후, 다음 URL을 통해 확인할 수 있습니다.
- Swagger UI: http://127.0.0.1:8000/docs
- ReDoc: http://127.0.0.1:8000/redoc
이 문서들은 API 엔드포인트를 시각적으로 확인하고 테스트할 수 있는 유용한 도구를 제공합니다.
'공부방' 카테고리의 다른 글
How much need VRAM by using LLM? (0) | 2024.09.05 |
---|---|
도메인 특화 언어 모델 구축 어떤 방법이 좋을까? (1) | 2024.09.04 |
LoRA target_modules (0) | 2024.08.08 |
중첩된 리스트 평탄화 : python list flattening (0) | 2024.08.07 |
허깅페이스 자주 사용하는 파라미터 (0) | 2024.08.01 |