Skip to content

Latest commit

 

History

History
111 lines (91 loc) · 10.9 KB

Curriculum.md

File metadata and controls

111 lines (91 loc) · 10.9 KB

커리큘럼

💡 해당 커리큘럼은 가이드라인입니다. 반드시 이 커리큘럼을 따라야하지 않습니다. 팀 별로 협의하에 새로운 커리큘럼으로 진행해주셔도 됩니다. 또한 새로운 커리큘럼으로 진행하시는 경우, 팀 별 노션 페이지에 커리큘럼을 정리해주세요. 서로 참고하며 발전하는 스터디를 지향합니다 😊 아래 커리큘럼에 잘못된 점이나 발전할 점이 보이는 경우, 해당하는 부분에 댓글을 달아주세요!

1차시: FastAPI 기초 및 환경 설정

  • 기술 스택: Python, FastAPI, Uvicorn
  • 학습 목표:
    • Python 및 FastAPI 설치: 학습자는 Python 환경 설정 및 FastAPI 설치 과정을 학습하게 됩니다. VSCode 같은 개발 도구의 기본 설정도 함께 진행합니다.
    • FastAPI의 기본 구조 이해: FastAPI가 어떻게 요청을 처리하고, 경로(route)를 설정하는지, 그리고 요청 데이터를 처리하는 방법을 이해합니다.
    • Uvicorn 서버 실행: FastAPI 애플리케이션을 실행하기 위해 Uvicorn을 사용하고, 이를 통해 로컬 서버에서 API를 테스트하는 방법을 배웁니다.
  • 실습 내용:
    • "Hello World" API 작성: 간단한 FastAPI 프로젝트를 생성하여 "Hello World" 메시지를 반환하는 엔드포인트를 작성합니다.
    • Path 및 Query Parameters 사용: 경로 매개변수와 쿼리 매개변수를 사용하여 계산기 API를 만들어, 숫자 두 개를 받아 더하거나 빼는 기능을 구현합니다.
    • Pydantic을 사용한 데이터 유효성 검사: Pydantic 모델을 사용해 API 요청 데이터를 유효성 검사하고, 잘못된 입력에 대해 적절한 오류 메시지를 반환하는 방법을 학습합니다.

2차시: 영화 리뷰 감성 분석 모델 학습

  • 기술 스택: Scikit-learn, Pandas, Joblib
  • 학습 목표:
    • 데이터셋 준비 및 전처리: 영화 리뷰 데이터셋을 Pandas를 사용해 로드하고, 텍스트 전처리 과정을 거쳐 모델 학습에 적합한 형태로 변환하는 방법을 배웁니다.
    • 텍스트 벡터화: Scikit-learn의 CountVectorizer를 사용해 텍스트 데이터를 벡터화하여 숫자 형태로 변환하는 방법을 학습합니다.
    • 모델 학습 및 평가: Logistic Regression 모델을 학습시키고, 모델의 성능을 평가하는 방법을 학습합니다.
    • 모델 저장: 학습된 모델을 Joblib을 사용해 파일로 저장하고, 이후 로딩하여 재사용하는 방법을 배웁니다.
  • 실습 내용:
    • 데이터셋 로딩: Pandas를 사용해 CSV 파일로부터 영화 리뷰 데이터를 로드합니다.
    • 텍스트 전처리: 텍스트 데이터를 소문자로 변환하고, 불필요한 문장 부호나 특수 문자를 제거하는 등의 전처리 과정을 수행합니다.
    • 모델 학습: CountVectorizer를 사용해 텍스트 데이터를 벡터화하고, Logistic Regression 모델을 학습시킵니다.
    • 모델 저장 및 로딩: 학습된 모델을 Joblib을 사용해 저장한 후, 저장된 모델을 다시 로딩해 성능을 테스트합니다.

3차시: FastAPI와 모델 통합

  • 기술 스택: FastAPI, Scikit-learn, Joblib
  • 학습 목표:
    • 모델을 API에 통합: Joblib으로 저장된 모델을 FastAPI 애플리케이션에 로드하여, API 엔드포인트에서 모델을 활용할 수 있도록 통합하는 방법을 학습합니다.
    • 의존성 주입: FastAPI의 의존성 주입(Dependency Injection) 기능을 사용하여 모델을 여러 엔드포인트에서 재사용할 수 있도록 관리하는 방법을 배웁니다.
    • POST 요청 처리: 클라이언트로부터 POST 요청을 받아, 모델을 사용해 감성 분석을 수행하고 그 결과를 반환하는 엔드포인트를 구현합니다.
  • 실습 내용:
    • 모델 로딩: FastAPI 애플리케이션에서 Joblib을 사용해 사전 학습된 모델을 로드합니다.
    • 의존성 주입: FastAPI의 Depends 기능을 사용해 모델을 다른 엔드포인트에서 공유할 수 있도록 설정합니다.
    • API 엔드포인트 작성: POST 요청으로 영화 리뷰 텍스트를 받아 모델 예측값(긍정/부정)을 반환하는 엔드포인트를 작성합니다.

4차시: API 성능 최적화

  • 기술 스택: FastAPI, Uvicorn, Background Tasks
  • 학습 목표:
    • Uvicorn 성능 최적화: Uvicorn 서버의 워커 수 조정과 같은 설정을 통해 FastAPI 애플리케이션의 성능을 최적화하는 방법을 학습합니다.
    • 비동기 작업 처리: FastAPI의 Background Tasks를 사용해 비동기 작업을 처리하고, 모델 예측과 같은 시간이 오래 걸리는 작업을 효율적으로 관리하는 방법을 배웁니다.
    • API 응답 시간 단축: 비동기 작업과 Uvicorn 설정을 활용해 API 응답 시간을 단축시키는 방법을 학습합니다.
  • 실습 내용:
    • Uvicorn 설정 최적화: Uvicorn 서버의 -workers 옵션을 조정하여 멀티-스레드 환경에서 FastAPI 애플리케이션을 실행해봅니다.
    • Background Tasks 구현: 감성 분석 모델의 예측 작업을 비동기 처리하여, 클라이언트 요청에 대한 응답 시간을 줄이는 예제를 작성합니다.
    • 성능 테스트: 최적화된 API의 성능을 로컬 환경에서 테스트하고, 개선된 응답 시간을 측정합니다.

5차시: Docker를 활용한 로컬 배포

  • 기술 스택: Docker, Dockerfile, Docker Compose
  • 학습 목표:
    • Docker 이해 및 활용: Docker의 기본 개념을 이해하고, FastAPI 애플리케이션을 Docker 컨테이너로 패키징하는 방법을 학습합니다.
    • Dockerfile 작성: Dockerfile을 작성해 FastAPI 애플리케이션을 컨테이너 이미지로 빌드하는 방법을 배웁니다.
    • Docker Compose 사용: Docker Compose를 사용해 데이터베이스와 FastAPI 애플리케이션을 포함한 멀티 컨테이너 환경을 설정하고 관리하는 방법을 학습합니다.
  • 실습 내용:
    • Dockerfile 작성: FastAPI 애플리케이션을 패키징하기 위한 Dockerfile을 작성하고, 이를 통해 Docker 이미지를 빌드합니다.
    • 컨테이너 실행: 빌드된 이미지를 사용해 Docker 컨테이너를 실행하고, 로컬 환경에서 FastAPI 애플리케이션을 실행합니다.
    • Docker Compose 설정: Docker Compose 파일을 작성해 FastAPI 애플리케이션과 데이터베이스를 함께 실행하고, 컨테이너 간의 네트워크 설정을 관리합니다.

6차시: MLflow를 활용한 모델 실험 관리 및 모니터링

  • 기술 스택: MLflow, Scikit-learn, Pandas
  • 학습 목표:
    • MLflow 기본 개념 이해: MLflow의 기본 개념과 실험 관리 기능을 이해하고, 이를 통해 모델 학습과 관련된 실험을 추적하는 방법을 학습합니다.
    • Experiment Tracking: MLflow의 Experiment Tracking 기능을 활용해 모델 학습 과정에서 발생하는 메트릭, 파라미터, 모델 아티팩트를 기록하고 추적하는 방법을 배웁니다.
    • Model Registry: 학습된 모델을 MLflow Model Registry에 등록하고, 모델의 버전을 관리하는 방법을 학습합니다.
    • 로컬에서 MLflow 서버 실행: MLflow 서버를 로컬에서 실행하고, 웹 UI를 통해 실험 기록과 모델을 관리하는 방법을 학습합니다.
  • 실습 내용:
    • MLflow 설치 및 설정: MLflow를 설치하고, 로컬에서 MLflow 서버를 실행해 웹 UI에 접근합니다.
    • 모델 학습 기록: Scikit-learn을 사용해 모델을 학습시키면서 MLflow를 사용해 실험을 기록하고, 파라미터와 메트릭을 추적합니다.
    • Model Registry 사용: 학습된 모델을 MLflow Model Registry에 등록하고, 모델 버전을 관리합니다.
    • 실험 기록 분석: MLflow UI를 사용해 기록된 실험 결과를 시각화하고, 실험 간의 비교를 통해 최적의 모델을 선택합니다.

7차시: API 테스트 및 문서화

  • 기술 스택: FastAPI, Swagger, OpenAPI, Postman
  • 학습 목표:
    • Swagger 및 OpenAPI 활용: FastAPI의 내장 Swagger UI와 자동 생성되는 OpenAPI 문서를 활용해 API 문서화를 자동으로 생성하고 관리하는 방법을 학습합니다.
    • Postman을 통한 API 테스트: Postman을 사용해 작성한 API 엔드포인트를 테스트하고, API의 기능과 성능을 검증하는 방법을 배웁니다.
    • 자동화된 테스트 스크립트 작성: 반복적인 API 테스트를 자동화하기 위해 Postman의 스크립트 기능을 사용해 테스트 자동화 방법을 학습합니다.
    • 프로젝트 문서화: 프로젝트의 전체적인 사용법과 API 명세를 포함한 문서화를 작성하고, 이를 바탕으로 README 파일을 구성합니다.
  • 실습 내용:
    • Swagger UI 활용: FastAPI 애플리케이션을 실행하고, /docs 경로에서 자동 생성된 Swagger UI를 확인합니다.
    • Postman을 사용한 테스트: Postman을 사용해 API 엔드포인트를 호출하고, 요청과 응답을 확인하여 API의 기능을 검증합니다.
    • 테스트 스크립트 작성: Postman에서 테스트 스크립트를 작성해 여러 요청을 자동으로 실행하고, 결과를 비교합니다.
    • 프로젝트 문서화 작성: API의 사용법과 주요 기능을 설명하는 문서화 작업을 진행하고, README 파일로 구성합니다.

8차시: 프로젝트 유지보수 및 최종 검토

  • 기술 스택: Git, MLflow, FastAPI

  • 학습 목표:

    • Git을 활용한 버전 관리: Git을 사용해 프로젝트 버전 관리와 협업을 효율적으로 수행하는 방법을 학습합니다.
    • 모델 성능 모니터링: MLflow를 사용해 배포된 모델의 성능을 지속적으로 모니터링하고, 필요한 경우 모델을 재학습하고 업데이트하는 방법을 학습합니다.
    • FastAPI 서버 유지보수: FastAPI 서버에서 발생할 수 있는 문제들을 해결하고, 서버의 안정성을 유지하기 위한 최적화 방법을 학습합니다.
  • 실습 내용:

    • Git을 사용한 코드 관리: Git을 사용해 프로젝트를 버전 관리하고, 브랜치를 활용해 코드 변경 사항을 관리합니다.
    • MLflow를 통한 모델 모니터링: MLflow UI에서 모델의 실험 기록을 확인하고, 배포된 모델의 성능을 모니터링합니다. 필요한 경우 새로운 데이터로 모델을 재학습하고, 이를 다시 배포합니다.
    • FastAPI 서버 문제 해결: 서버에서 발생하는 문제를 디버깅하고, 성능 최적화 작업을 통해 서버의 안정성을 유지합니다.