Post

[KT Aivle 3기 AI] 빅프로젝트 5주차

🌟 빅프로젝트 5주차 !

5주차에는 기능 구현을 마무리하고 발표준비에 들어갔다.

✅ uwsgi 서버 부하 관련 설정

AWS EC2에서 AI 모델을 돌리거나 동시에 API 요청이 많이 들어왔을 때 서버가 죽는 문제가 있었다. 찾아보니 서버 부하 관련해서 설정 값을 주는 것이 있어서 설정을 넣어주니 서버가 더이상 죽지는 않았다.

간단하게 적어보면, 일단 Django를 배포하는데에 있어서 uwsgi 또는 gunicorn 를 사용하는데 gunicorn이 빠르고 가볍고 간단해서 더 좋다고 한다. 일단 나의 경우 구현하는 것이 우선이었기 때문에 uwsgi로 배포하는 자료를 보고 구현했었다. 그래서 uwsgi 관련해서 uswgi.ini에 서버가 재시작되도록 하는 설정을 추가해줬더니 해결되었다.

1
2
3
4
5
6
7
## uswgi.ini

# Worker Management
max-requests = 1000                  ; Restart workers after this many requests
max-worker-lifetime = 3600           ; Restart workers after this many seconds
reload-on-rss = 512                  ; Restart workers after this much resident memory
worker-reload-mercy = 60             ; How long to wait before forcefully killing workers

참고한 자료

✅ Q&A 게시판 검색 기능 구현

Q&A 게시판에서 검색을 할 수 있도록 Qeustion title과 contents 기반으로 검색이 되도록 했다. views.py에 두 줄만 추가하면 되서 간단하게 구현할 수 있었다.

1
2
3
4
5
6
7
class QuestionViewSet(ModelViewSet):
    ...
    # 검색 기능
    # posts/api/question/?search={검색어}
    filter_backends = [SearchFilter] # SearchFilter 기반으로 검색
    search_fields = ('title', 'contents', ) # 어떤 컬럼을 기반으로 검색할 건지 튜플 형식으로 작성
    ...

✅ ChatGPT 답변

우리 서비스에서 ChatGPT는 두 곳에서 사용된다. 먼저 사진을 올렸을 때, AI 모델이 진단한 질병에 대해 ChatGPT가 설명한다. 그리고 질문을 등록했을 때 그 질문에 대해 ChatGPT가 답변하는 것이다. 첫 번째 ChatGPT 기능은 Front에서 ChatGPT API를 호출해서 DB에 업데이트하는 방식으로 구현했고, 두 번째 ChatGPT 기능은 BackEnd에서 Question이 등록 될 때 해당 정보를 바탕으로 ChatGPT API를 호출해서 Answer를 등록하는 방식으로 구현했다.

그래서 두 번째 기능의 경우 Question이 등록되는 것과 ChatGPT의 Answer가 등록되는 것이 병렬적으로 작업하도록 Thread를 사용하여 구현했다. 왜냐하면 ChatGPT의 응답을 받는 것이 최소 10초 정도 걸렸고, 이를 직렬적으로 처리하면 질문이 등록되는 시간이 그만큼 늦어지게 되어 사용자 입장에서는 답답할 것으로 판단했다.

✅ AI 모델

AI 모델이 성능개선이 계속 안일어나서 데이터를 뜯어봤더니, 클래스 별로 중복되어있는 사진도 많고 한 클래스에 중복된 사진도 많이 있는 것으로 확인이 되었다. (관리 똑바로 안하나…ㅡㅡ) 그래서 직접 데이터를 선별해서 정제하는 작업을 거쳤다. 이 과정에서 데이터의 수는 엄청나게 줄었지만, 알짜배기 데이터가 모였다. 그래서 이 데이터로 다시 학습을 했더니 validation에서 대략적으로 85% 정도의 정확도를 보였다. 역시 데이터가 가장 중요하구만..

😂 기타

이제 기능 개발은 끝났고 발표 준비를 하고 있으니 이 AIVLE School이 끝나가고 있구나를 느꼈다. 정말 시간이 짧은 것 같다. 끝날 때가 되니 아쉬워진다.. 얼마 안남았는데 남은 시간 마무리 잘하면 좋겠다!!!

This post is licensed under CC BY 4.0 by the author.

[KT Aivle 3기 AI] 빅프로젝트 4주차

[KT Aivle 3기 AI] 빅프로젝트 6주차