섹션 13: Project 2 - Building Generative AI App using Hugging

쌀과자AI·2025년 8월 26일

📌 강의 요약 (섹션 13)

1. 텍스트 생성 파이프라인 이해

  • Hugging Face Transformers 라이브러리의 pipeline 객체를 활용해 텍스트 생성 모델을 사용.
  • 기본 모델: gpt2 (OpenAI community/gpt2).
  • 프로세스
    1. pipeline("text-generation")으로 모델 초기화.
    2. 사용자 입력 텍스트 + 고객센터 응답 템플릿을 프롬프트로 구성.
    3. max_length 등을 지정하여 결과 생성.
  • 핵심: 프롬프트를 입력하면 생성형 NLP 모델이 응답 텍스트를 만들어냄 .

2. Hugging Face GPT Assistant 애플리케이션 구현

  • 구성 요소
    • main.py: FastAPI 기반 API 서버
      • /generate 엔드포인트에서 입력 텍스트를 받아 GPT2 모델로 응답 생성.
      • 기본 응답 길이: 35 (필요 시 200까지 확장 가능).
    • Dockerfile: Python 3.x 기반 이미지, requirements.txt 설치 후 80포트 노출.
    • requirements.txt:
      • transformers==4.37.0
      • tensorflow==2.15.0
      • fastapi==0.109.0
      • uvicorn[standard]
    • deploy.yaml: Kubernetes Deployment & Service 정의
      • Replica: 3개
      • Deployment 이름: gpt-deploy
      • Service: LoadBalancer 타입, 포트 80 공개 .
    • kustomization.yaml: deploy.yaml을 포함 .
    • actions.yaml: GitHub Actions CI/CD 설정
      • main 브랜치 푸시 시 빌드 & 배포 실행
      • Docker build → GCR push → Kustomize로 이미지 태그 교체 후 kubectl apply → rollout 확인 .

3. CI/CD 파이프라인 및 배포

  • Google Kubernetes Engine (GKE) 배포 흐름
    1. GKE 클러스터 생성 (gcloud container clusters create ...).
    2. GitHub Actions 실행 → Docker 이미지 빌드 & GCR 푸시.
    3. Kustomize를 통해 deploy.yaml 이미지 태그 자동 업데이트.
    4. kubectl apply로 GKE에 배포 → kubectl rollout status 확인.
    5. LoadBalancer 서비스 외부 IP를 통해 앱 접근 가능.
  • 테스트
    • /docs (Swagger UI)에서 {"text": "Hello I am a data scientist"} 입력 시 GPT2 모델이 새 문장을 생성하는 것을 확인 .

4. 코드 수정 및 배포 자동화 검증

  • 예: main.py의 버전 문구(v1 → v2) 수정 후 커밋 → GitHub Actions 트리거.
  • 약 3~4분 후 배포 완료, 웹 페이지에서 자동 반영된 v2 문구 확인.
  • 이를 통해 코드 수정 → 커밋 → CI/CD → GKE 자동 배포 전 과정을 실습 .

✅ 핵심 포인트 정리

  • Hugging Face pipeline("text-generation")을 이용한 텍스트 생성.
  • FastAPI + GPT2 기반 애플리케이션 개발.
  • Docker, Kubernetes, GitHub Actions를 통한 CI/CD 파이프라인 구축.
  • 코드 변경 시 자동으로 GKE 환경에 반영되는 엔드투엔드 ML Ops 워크플로우 구현.

📘 Project 2: Hugging Face GPT 애플리케이션 – 문제 세트


[하] 1번

문제: Hugging Face에서 텍스트 생성 모델을 간단히 사용할 수 있도록 제공하는 객체는 무엇인가?

① Trainer

② Pipeline

③ Tokenizer

④ Embedding

정답:

해설: Hugging Face에서는 pipeline("text-generation")을 통해 간단하게 텍스트 생성 모델을 실행할 수 있다 .


[중] 2번

문제: 본 프로젝트에서 main.py는 FastAPI를 활용해 API 서버를 구현한다. /generate 엔드포인트에서 수행하는 핵심 동작은 무엇인가?

① 입력 텍스트를 Embedding하여 벡터 DB에 저장

② 입력 텍스트를 기반으로 GPT2 모델로 응답 텍스트 생성

③ 입력 텍스트를 번역하여 반환

④ 입력 텍스트를 요약하여 반환

정답:

해설: /generate는 사용자 입력을 받아 Hugging Face GPT2 모델의 pipeline("text-generation")을 호출하여 응답을 생성한다 .


[상] 3번

문제: GitHub Actions(actions.yaml)에서 CI/CD 파이프라인은 어떤 과정을 거쳐 Kubernetes에 배포되는가? 올바른 순서를 고르시오.

ㄱ. Kustomize로 이미지 태그를 교체

ㄴ. Docker 이미지 빌드 후 GCR(Google Container Registry)에 Push

ㄷ. kubectl rollout status로 배포 상태 확인

ㄹ. GKE 클러스터 인증 정보 가져오기

① ㄱ-ㄴ-ㄹ-ㄷ

② ㄹ-ㄴ-ㄱ-ㄷ

③ ㄴ-ㄹ-ㄱ-ㄷ

④ ㄹ-ㄱ-ㄴ-ㄷ

정답:

해설: 올바른 순서는 GKE 인증 → Docker 빌드 & Push → Kustomize 태그 교체 → kubectl rollout 이다 .


[상] 4번

문제(서술형): deploy.yaml에서 Service 타입을 LoadBalancer로 지정한 이유를 설명하시오.

모범답안:

Service를 LoadBalancer로 지정하면 GKE가 외부 접근이 가능한 IP를 자동으로 할당하여, 클러스터 외부에서도 애플리케이션을 호출할 수 있게 된다 .


[중] 5번

문제: GitHub Actions에서 사용되는 환경 변수 중, Docker 이미지 이름을 지정하는 변수는 무엇인가?

① PROJECT_ID

② IMAGE

③ DEPLOYMENT_NAME

④ GKE_CLUSTER

정답:

해설: IMAGE 변수가 Docker 이미지 이름을 지정하며, 최종적으로 gcr.io/PROJECTID/PROJECT_ID/IMAGE:$GITHUB_SHA 형식으로 빌드된다 .


profile
AI에 관심이 많은 23살 대학생입니다.

0개의 댓글