전체 글 (6)
6-1. 대규모 트래픽 설계서비스를 운영하다 보면 특정 순간에 엄청난 양의 요청이 몰릴 수 있음.예를 들어 로그인 API, 게시글 조회 API, AI 모델 호출 API 등에 수천 명의 사용자가 동시에 접근하면 서버가 버티지 못할 수도 있음.그래서 대규모 트래픽 환경에서는 서버를 보호하기 위한 다양한 기법을 사용하게 되는데, 그중 가장 기본적인 기술 중 하나가 Rate Limiting 임 ! 1. Rate Limiting 이란 ?Rate Limiting은 일정 시간 동안 허용 가능한 요청 수를 제한하는 기술임.쉽게 말하면 사용자가 API를 너무 많이 호출하지 못하도록 제한을 거는 것이라고 생각하면 됨.예를 들어1분 동안 최대 10회 요청 허용1시간 동안 최대 1000회 요청 허용하루 동안 최대 10000회..
무거운 모델들을 어떻게 렉 없이 초고속으로 굴릴 것인가에 대해 알아봅시다로컬에서 오픈소스 LLM을 서비스하려고 할 때 무조건 짚고 넘어가야 하는 핵심 엔진, 바로 vLLM 1. Continuous Batching (쉬지 않고 일함 노동...ㅋ)정의: 앞사람의 질문이 끝날 때까지 기다리지 않고, 빈자리가 생기면 실시간으로 다음 사람의 토큰을 끼워 넣어서 처리하는 기법임.원리: 기존에는 3명이 질문하면 제일 긴 답변이 끝날 때까지 다 같이 기다려야 했음(Static Batching). 근데 Continuous Batching은 짧은 답변이 먼저 끝나면 바로 그 자리에 4번째 사람의 질문을 밀어 넣음. GPU가 1초도 쉬지 않게 풀가동 돌려버리는 거임 ! 2. PagedAttention (ㄹㅇ 진짜 핵심! v..
[파이썬 성능 최적화 #1] 오늘은 파이썬 내장 도구인 cProfile과 강력한 라인별 분석 도구인 line_profiler를 활용해, 느려진 코드의 원인을 검거하는 방법을 알아보겠음 !!!!! cProfile은 파이썬 코드의 실행 시간을 함수 단위로 측정해 병목을 찾는 프로파일러임 !! cProfile은 파이썬 내장 표준 라이브러리 라서 pip 없이 사용 가능합니둥line_profiler 는 설치해야댐 ...pip install line_profiler 예시 코드: 알고리즘 함수에서 어떤 코드가 느린지 찾고 싶을 때 import cProfileimport randomimport time#일부러 1초 기다렸다가 정렬하도록 예시들겠음.def slow(arr): time.sleep(1) ret..
AI가 어려운 문제를 풀기 위해서 제대로 생각하는 방법에 대해 생각해봅시다앙.복잡한 논리 구조나 외부 데이터가 필요한 시점부터는 Chain of Thought(CoT)와 ReAct(리액트)가 핵심 엔진임 ! 1. Chain of Thought (Langchain같은 느낌이라고 생각하면 될듯 chain으로 엮어 !)정의: 모델에게 곧바로 최종 정답을 요구하지 않고, 문제를 해결하기 위한 중간 단계의 논리적 추론 과정을 순서대로 거쳐 답을 내도록 유도하는 기법임.원리: 문장제 수학 문제나 수수께끼를 풀 때 연습장에 풀이 과정을 적어가며 정답률을 높이는 것처럼, LLM에게 생각과 논리적 흐름을 제공하여 정답 도출 확률을 높임. 1. ReAct (React랑 헷갈리면 안댑니다) 정의: CoT의 추론(Reason..
생성형 AI와 LLM을 원하는 대로 조종하기 위해 가장 중요한 것이 프롬프트 엔지니어링임. 그 중에서도 AI에게 예시를 주느냐 마느냐에 따라 나뉘는 Zero-shot과 Few-shot은 프롬프트 작성을 시작할 때 가장 먼저 마주하는 핵심 개념임.1. Zero-shot (제로부터 시작하는 이세카이)정의: 모델에게 사전 예시를 전혀 제공하지 않고, 곧바로 질문이나 명령을 던져 답을 얻는 방식임.원리: LLM이 이미 방대한 데이터로 사전 학습한 지식과 문맥 이해 능력만을 믿고 답을 출력하게 만듬. 2. Few-shot (힌트 주고 스따또)정의: 모델에게 원하는 결과물의 형태, 스타일, 규칙을 담은 몇 개 예시를 프롬프트에 포함하여 질문하는 방식임.원리: 모델이 거대한 가중치를 바꾸는 파인튜닝을 거치지 않고도,..
GIL (Global Interpreter Lock)파이썬의 성능과 멀티스레딩을 이야기할 때 빼놓을 수 없는 핵심 개념, GIL 상세 분석 가이드1. GIL이 무엇인가GIL(Global Interpreter Lock)은 파이썬 인터프리터(CPython)가 한 번에 하나의 스레드만 Python bytecode를 실행할 수 있도록 제한하는 글로벌 락(Lock)입니다. 즉, 여러 개의 프로세서 코어가 있고 다중 스레드가 존재하더라도, 실제로 파이썬 코드는 동시에 실행되지 못하고 단 하나의 스레드만 실행 권한을 가집니다.2. 파이썬이 GIL을 사용하는 이유CPython은 메모리 관리를 위해 레퍼런스 카운팅(Reference Counting) 방식을 사용합니다. 여러 스레드가 동시에 객체의 레퍼런스 카운트를 증가..