본문 바로가기
728x90
SMALL

Python23

WSGI와 ASGI 비교 (feat. gunicorn, uvicorn) 1. 글을 쓰게 된 계기 WSGI 그리고 ASGI 아마 API를 만들어본 사람들은 많이 들어본 키워드일 것이다. 여기서 두 개를 비교하고 어떻게 정의하고 평소에 궁금했던 내용들에 대해서 정리해보고자 한다. 2. WSGI(Web Server Gateway Interface)가 뭐야? Web server의 Request를 python application으로 보내주고 Response를 받아서 Web server로 보내주는 것이 WSGI이다. 2003년 파이썬 표준으로 WSGI가 나온 이후로 현재까지 사용되었으며, WSGI Middleware는 WSGI의 구현체로 Request를 Flask, django와 같은 Web Framework에 연결하는 WSGI server 역할을 한다. (대표적인 예시로는 guni.. 2024. 4. 5.
Celery 란 무엇인가? 1. 글을 작성하게 된 계기 기존에 운영하던 환경이 fastapi-redis-celery 형태였으며 django에서도 동일하게 celery를 활용해서 배포하고 있다. 이번 기회에 이론적인 내용에 대해서 정리하고 한다. 2. Celery는 무엇인가? Celery는 Python으로 작성된 분산 작업 대기열 시스템이다. 대규모 시스템에서 비동기 작업 실행과 작업 스케줄링을 용이하게 위해 설계되었다. 예를 들자면, 웹 서비스에서 응답시간은 생명과 같다. 빨리 응답해야 하는 웹 서비스에서 3초 이상 아니 1초 이상의 딜레이는 유저에게는 오류와 같으며 렉이라고 인지하게 된다. 그래서 이를 위해 비동기 작업을 처리할 수 있도록 넘기고 뒤에서 작동은 되게 하고 유저에게는 바로 응답하기 위해 사용된다. 즉, 백그라운드에.. 2024. 4. 4.
uvicorn 이란 무엇인가? (feat. ASGI) 1. 글을 쓰게 된 계기 이전에 말했던 것처럼 gunicorn과 Uvicorn은 약속처럼 늘 같이 사용하고 있다. 그래서 이론적으로 다시 한번 정리하고자 글을 쓰게 되었다. 혹시 gunicorn에 대해서 궁금하신 분은 아래 링크를 참고하면 좋을 것 같다. gunicorn은 무엇인가? (feat. WSGI) 1. 글을 쓰게 된 계기 이전에 작고 큰 API들을 많이 개발했었다. 이전에는 flask나 django를 많이 사용했다면 최근에는 오히려 더 빠르게 개발할 수 있는 fastapi를 자주 사용하곤 한다. 그럴 때마다 guni jongsky.tistory.com 2. ASGI란 무엇인가? ASGI(Asynchronous Server Gateway Interface)는 WSGI의 비동기 버전이라고 생각할 .. 2024. 4. 3.
gunicorn은 무엇인가? (feat. WSGI) 1. 글을 쓰게 된 계기 이전에 작고 큰 API들을 많이 개발했었다. 이전에는 flask나 django를 많이 사용했다면 최근에는 오히려 더 빠르게 개발할 수 있는 fastapi를 자주 사용하곤 한다. 그럴 때마다 gunicorn과 uvicorn을 이용해서 배포를 하곤하는데 이를 이론적으로 정리하고자 해서 글을 작성하게 되었다. 2. WSGI란 무엇인가? gunicorn을 알기 전 WSGI에 대해서 먼저 알아보도록 하자. WSGI, 즉 Web server Gateway Interface는 파이썬 웹 애플리케이션과 웹 서버 사이의 표준 인터페이스로 웹 애플리케이션 개발과 배포를 단순화하는데 중요한 역할을 한다. WSGI는 파이썬 웹 개발의 핵심 구성 요소이며, 다양한 웹 서버와 애플리케이션 간의 통합을 .. 2024. 4. 3.
Kafka 설치하는 방법 (feat. ubuntu) 1. 글을 작성하게 된 계기 기존에 회사에서 Redis를 이용해서 fastapi - redis - celery 구조로 서빙을 구축했었다. 그러나 앞으로는 kafka를 사용하기 위해서 ubuntu 서버에 kafka를 설치하는 방법에 대해서 정리하고자 한다. 2. Apache Kafka 설치 방법 1. 다운로드를 위해 kafka 사이트 접속 - 링크 2. 우클릭 후 링크 주소 복사 클릭 3. 링크를 활용해 필요파일 설치 wget -d https://downloads.apache.org/kafka/3.7.0/kafka_2.13-3.7.0.tgz 4. 다운로드한 파일 압축 풀기 tar -xzf kafka_2.13-3.7.0.tgz 5. 잘 설치되었는지 확인을 위한 zookeeper 실행 설치된 폴더로 이동 cd.. 2024. 4. 3.
LLM 학습 시 메모리 고려(feat. LLaMA-7B) 1. 메모리 사용량 계산 (모델의 파라미터가 fp32일 때) 파라미터 당 bytes : 32 bits / 8 bits = 4 bytes 2. 모델 학습 시 메모리 사용량 고려 Forwarding을 위해 필요한 모델 파라미터를 N이라고 가정했을 때, 모델 메모리는 4 * N Optimizer 메모리 - 4 * 4 * N Gradient 메모리 - 4 * N 예시 모델 : LLaMA-7B 모델 메모리는 4 * 7B = 28GB Optimzer(AdamW) 4 * 4* 7B = 112GB Gradient 4 * 7B = 28GB 총 메모리 사용량 = 28 + 112 + 28 = 168GB LLaMA-7B 모델 훈련을 위해서는 168GB 이상의 vRAM이 소요 한정된 자원에서 모델을 훈련시키는데에 메모리가 너무.. 2024. 1. 13.
728x90
LIST