오늘은 프로젝트의 마지막 이야기를 써보려 한다!
1탄부터 5탄까지 prompt engineering, 웹 크롤링, langchain, gpt, 텍스트 임베딩 등 다양한 기술을 활용해서 AI 서비스를 개발해보았다.
이제 이렇게 개발된 파이썬 모델을 백엔드 측에 전달하기 위해서는 몇가지 단계가 필요하다.
1. API를 통한 소통 : FastAPI를 이용해 REST API로 래핑하고, 이를 통해 모델을 외부에서 호출 가능하게 만들 수 있다.
2. Docker : FastAPI로 구축한 API와 AI/ML 모델을 도커 컨테이너 내에 패키징하여 환경 차이로 인한 문제를 방지하고, 쉽게 배포할 수 있도록 한다.
3. Google cloud run : 컨테이너화된 애플리케이션을 서버리스 환경에서 실행할 수 있게 해주는 서비스이다.
위의 도구들은 모두 함께 작동하여 머신러닝 모델의 지속적인 통합과 배포를 자동화하는데 중요한 역할을 한다. 개발자는 코드를 커밋하고 푸시하기만 하면, CI/CD 파이프라인이 자동으로 빌드, 테스트, 컨테이너화 및 배포를 수행하여 최신 버전의 애플리케이션이 항상 사용 가능하도록 한다. 이 과정은 소프트웨어 개발의 효율성을 크게 향상시키고, 머신러닝 모델을 신속하게 프로덕션 환경에 적용할 수 있게 한다.
1. 우선 Docker를 설치하고 GCP에 회원가입과 프로젝트 생성을 해야한다. 이후 Docker Desktop을 실행한다.
https://www.docker.com/products/docker-desktop/
Docker Desktop: The #1 Containerization Tool for Developers | Docker
Docker Desktop is collaborative containerization software for developers. Get started and download Docker Desktop today on Mac, Windows, or Linux.
www.docker.com
2. Dockerfile 생성(+requirement.txt 생성)
Cloud Run을 사용하려면 Dockerfile이 필요하다. Cloud Run은 컨테이너화된 애플리케이션을 서버리스로 실행하므로, 파이썬 애플리케이션을 컨테이너로 패키징하기 위한 Dockerfile을 작성해야 한다. 우리가 사용한 Dockerfile은 아래와 같다.
# 파이썬 베이스 이미지 사용
FROM python:3.11.3
# 작업 디렉토리 설정
WORKDIR /app
# 필요한 패키지 및 도구 설치
RUN apt-get update && \
apt-get install -y wget unzip && \
apt-get install -y libx11-xcb1 libxcomposite1 libxi6 libxrandr2 libasound2 libpangocairo-1.0-0 libatk1.0-0 libatk-bridge2.0-0 libgtk-3-0 libnss3
# Chrome 및 ChromeDriver 설치
RUN wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb && \
apt-get install -y ./google-chrome-stable_current_amd64.deb && \
rm google-chrome-stable_current_amd64.deb
RUN wget https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/118.0.5993.70/linux64/chromedriver-linux64.zip && \
unzip chromedriver-linux64.zip && \
mv chromedriver-linux64/chromedriver /usr/bin/chromedriver && \
chmod +x /usr/bin/chromedriver && \
rm chromedriver-linux64.zip
# 환경 변수 설정
ENV GOOGLE_CHROME_BIN /usr/bin/google-chrome
ENV CHROMEDRIVER_PATH /usr/bin/chromedriver
# 의존성 파일 복사 및 설치
COPY requirements.txt requirements.txt
RUN pip install --no-cache-dir -r requirements.txt
# 애플리케이션 코드 복사
COPY . .
# 애플리케이션 실행
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8080"]
Google Cloud SDK를 설치한 후 다음 명령어들을 실행한다.
3. Docker 이미지 빌드
docker build -t gcr.io/PROJECT_ID/IMAGE_NAME:TAG .
4. Google Cloud 인증
gcloud auth login
gcloud auth configure-docker
5. GCR에 Docker 이미지 푸시
docker push gcr.io/PROJECT_ID/IMAGE_NAME:TAG
6. Google Cloud Run 배포
gcloud run deploy SERVICE_NAME --image gcr.io/PROJECT_ID/IMAGE_NAME:TAG --region REGION --platform managed
배포가 완료되면 접속 가능한 url이 뜰 것이다!
배포 단계에서 많은 오류가 발생하였는데..각 프로젝트의 설치해야 하는 패키지, 환경 변수 등 초기 설정을 잘하길 바란다.
그리고 우리 프로젝트는 원래 heroku 배포 방식을 썼는데, 자연어 응답 처리 속도에 따른 timeout error가 발생해서 google cloud run으로 바꾼 케이스이다. (비용 효율, 토큰 수 처리 등 많은 이점이 있으니 cloud run을 강추한다!!)
약 8개월간의 프로젝트를 마무리하는 날이 오다니..
기획부터 배포까지 하며 많은 에러와 난관에 부딪혔지만 어찌저찌 잘 해결해나가며 최종적으로 완성..했다..!!!
우리 팀 너무 고생많았고 마지막 시연 영상으로 마무리하겠다 안녕~~
https://youtu.be/kU2kh1HcYP4?si=Q3IuhmwtLZA54HJr
'인공지능 > Generative AI' 카테고리의 다른 글
[5탄] Langchain+GPT+텍스트 임베딩으로 상품에 대한 질의응답하기 (0) | 2023.11.13 |
---|---|
[4탄] Selenium을 이용한 동적 페이지 크롤링 (1) | 2023.11.13 |
[3탄] Beautifulsoup로 웹 크롤링하기 (0) | 2023.09.20 |
[2탄]Langchain+GPT로 summary와 QA 해보기 (0) | 2023.09.10 |
[1탄] ChatGPT Prompt Engineering & LangChain 을 활용한 온라인 가상 점원 프로젝트 (5) | 2023.05.26 |
댓글