본문 바로가기

반응형

전체 글

(35)
[논문 리뷰] Orca: A Distributed Serving System forTransformer-Based Generative Models 안녕하세요, 오늘은 이전에 발표한 vLLM이 사용하는 배치 최적화 기법인 Continous Batching(Iteration Level Batching)을 제시한 논문인 Orca: A Distributed Serving System forTransformer-Based Generative Models에 대한 리뷰를 해보도록 하겠습니다.논문 원본 PDF는 아래와 같습니다.https://www.usenix.org/system/files/osdi22-yu.pdf 본 논문은 22년 07월에 발표되었습니다.Introduction생성 모델을 사용하기 위해 별도의 서비스에 추론 절차를 위임하게 됨.위임받은 서비스는 낮은 대기 시간과 높은 처리량으로 추론 결과를 제공해야 하며, Triton Inference Serve..
[논문 리뷰] Efficient Memory Management for Large Language Model Serving with PagedAttention 이번에는 대표적인 LLM Serving Framework인 vLLM의 기반 논문에 대해 리뷰를 해보겠습니다.논문 원본 링크와 vLLM의 github 링크는 아래와 같습니다.https://arxiv.org/pdf/2309.06180https://github.com/vllm-project/vllm 개요KV 캐시는 LLM의 추론 속도를 올려주는 역할을 수행함.하지만, vLLM 이전의 LLM 추론 프레임 워크는 메모리 관리 정책이 부족해 메모리 낭비가 심했음.PagedAttention과 이를 적용한 vLLM은 2가지의 핵심 키워드로 LLM 추론 시에 메모리를 최적화 시킴OS의 가상 메모리 및 페이징 기법 적용메모리 공유이전 LLM 추론 프레임 워크의 문제점이전 LLM 추론 프레임 워크(논문에서는 Orca와 비교..
[논문 리뷰]Attention is All You Need 안녕하세요, 이번에 준비한 글은 Transformer 아키텍처가 처음 시작된 Attention is All You Need 논문 번역 + 정리본입니다. 복잡한 수식은 제외하고 전체적인 흐름을 파악하는데 집중하였습니다. 논문 본문의 링크는 다음과 같습니다.https://arxiv.org/pdf/1706.03762    개요기존의 시퀀스 변환 모델은 RNN 기반의 Encoder, Decoder로 구성되며, 그 중 Attention 매커니즘을 사용하는 구조가 가장 성능이 뛰어나다.하지만 RNN 기반의 시퀀스 변환 모델은 두가지의 문제가 있음.새 은닉 상태 생성 시 이전 은닉상태를 사용하는 순환적 특성으로 병렬화의 어려움Context Vector의 고정된 크기로 인해 긴 길이의 문장을 처리하는데 성능이 떨어짐해..
기반 다지기 - Docker 편 도커란?도커 공식 홈페이지에서 정의하는 도커는 아래와 같습니다.Docker는 애플리케이션을 개발, 배포, 실행하기 위한 개방형 플랫폼입니다. Docker를 사용하면 애플리케이션과 인프라를 분리하여 소프트웨어를 빠르게 제공할 수 있습니다. Docker를 통해 애플리케이션을 관리하는 것과 동일한 방식으로 인프라를 관리할 수 있습니다. Docker의 코드 배포, 테스트, 배포 방법론을 활용하면 코드 작성과 프로덕션 환경에서 실행하는 사이의 지연을 크게 줄일 수 있습니다.즉 도커는 개발, 배포, 실행할 때 필요한 어플리케이션을 인프라에 종속적이지 않게 사용할 수 있다는 것을 의미합니다.하나의 개발팀이 React, Python API 서버, PostgresSQL DB를 사용한다고 가정해볼 때, 도커가 없다면 팀의..
기반 다지기 - Python 편 개요이번에는 Python의 구조를 알아보는 시간을 가져보도록 하겠습니다.PVM의 내부 구조Python도 Java와 마찬가지로 VM 내에서 동작하는 것으로 알려져 있습니다. 그럼 Python VM(PVM)이 어떤 구조로 되어 있고 어떤식으로 Python 파일을 실행하는지 알아보도록 하겠습니다.Python 파일이 실행될 때까지Python이 Virtual Machine에서 실행되는 것은 맞지만, .py 파일이 PVM 내에서는 실행되지 못한다고 합니다. 따라서 Java의 .java 파일이 Java Interpreter이 해석할 수 있게 .class로 1차 컴파일 되듯, Python의 .py 파일도 VM이 해석할 수 있도록 .pyc 파일로 컴파일 되어야 한다고 합니다.이렇게 .pyc로 컴파일된 파일은 Python..
기반 다지기 - CPU, GPU, CUDA 편 CPU vs GPUCPU와 GPU의 관계는 흔히 수학 교수 1명과 초등학생 100명으로 구분되고는 합니다.그럼 CPU와 GPU가 정확히 뭔지, GPU Memory는 무엇인지 알아보는 시간을 가져보도록 하겠습니다.또 이에 이어서 GPU를 사용할 때 빠질 수 없는 CUDA 라이브러리가 어떤 역할을 하는지 알아보도록 하겠습니다.CPU와 GPU의 유사한 점CPU와 그래픽 처리 장치(GPU)는 모두 컴퓨터를 작동시키는 HW로, Processor라고 불립니다. 둘다 유사한 구조(ALU, Control Unit, Register, Cache)등의 유사한 구조를 가지고 있습니다.각 Core 당 처리할 수 있는 명령어 단위를 HW Level Thread라고 하며, HyperThreading와 같은 Simultaneous..
직접 Language Model을 Fine-Tuning 해보고 Container 환경에 API 서버 구축해보기 개요이번에 저는 LM을 Fine-Tuning해보고 API 서버를 구축해보며 Ops의 관점에서 어느 부분이 불편하고 고민해 볼만 하는가 생각해 보는 시간을 가졌습니다. 목표는 다음과 같습니다.Model을 Fine-TuningModel을 저장하고, FastAPI 구축FastAPI를 Docker Image로 구축하고, 컨테이너로 실행시키기 Fine-Tuning하기먼저 처음으로 모델을 Fine-Tuning 해보았는데요, Dataset 까지 정제하기에는 시간이 너무 오래걸릴 것 같아 전처리 과정은 생략하고, HuggingFace의 Dataset을 가져와서 Pre-Trained Model에 학습 시키기로 결정했습니다. 따라서 사용하는 DataSet에 따라 어떤 서비스를 만들지가 결정되는데요, 저는 아래의 DataS..
내가 백엔드 개발자에서 LLMOps로 전환을 결정하게 된 이유 개요저는 약 2주간의 고민 끝에 Java Backend 직무에서 LLMOps로 전환하는 것을 결정하게 되었는데요. 그 이유와 고민 과정을 적어보려고 합니다.고민의 시작 저는 Java Backend로 약 4년정도 공부를 했고, 취업 준비를 하고 있던 상황이였습니다. 그래서 원서도 하나 둘 넣고 있었는데요, 저는 LLM을 다루는 연구실에서 LLM의 API 서버를 만들어 본 경험이 있었기 때문에 AI Backend 직무도 지원하고 있었습니다.그러면서 자연스럽게 AI Backend 공고의 자격 조건이나 기술 스택등을 보았는데, 확실히 Java Backend와는 많이 다른 것을 알 수 있었습니다. 또 AI Backend가 아닌 MLOps나 LLMOps라는 직무도 있다는 것을 알게되었습니다.최근에 Ticketing..

반응형