📌 강의 요약 (섹션 13)
1. 텍스트 생성 파이프라인 이해
- Hugging Face Transformers 라이브러리의 pipeline 객체를 활용해 텍스트 생성 모델을 사용.
- 기본 모델: gpt2 (OpenAI community/gpt2).
- 프로세스
- pipeline("text-generation")으로 모델 초기화.
- 사용자 입력 텍스트 + 고객센터 응답 템플릿을 프롬프트로 구성.
- 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) 배포 흐름
- GKE 클러스터 생성 (gcloud container clusters create ...).
- GitHub Actions 실행 → Docker 이미지 빌드 & GCR 푸시.
- Kustomize를 통해 deploy.yaml 이미지 태그 자동 업데이트.
- kubectl apply로 GKE에 배포 → kubectl rollout status 확인.
- 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/IMAGE:$GITHUB_SHA 형식으로 빌드된다 .