개발 이야기/아키텍처(6)
-
고성능 LLM 서비스 구현을 위한 GPU 커널 튜닝 전략
대규모 언어 모델(LLM)을 서비스하기 위해서는 최적의 하드웨어 활용이 필수적입니다. 특히, GPU는 LLM 서비스의 핵심 하드웨어로, GPU 커널의 효율을 최적화하면 서비스 속도와 비용을 크게 개선할 수 있습니다. 이번 블로그에서는 GPU 커널 튜닝에 초점을 맞춰 LLM 서비스 효율성을 극대화하는 방법을 다룹니다.1. GPU 커널 성능 이해하기GPU의 성능은 크게 아래와 같은 요소로 결정됩니다:메모리 대역폭: GPU의 Global Memory, Shared Memory 등을 얼마나 효율적으로 사용하는가.연산 집약도: 컴퓨팅 자원을 얼마나 최대한 활용하는가.병렬 처리 능력: GPU의 워프(Warp)와 블록(Block)을 얼마나 최적으로 구성하는가.2. GPU 커널 튜닝 주요 요소(1) 메모리 최적화Glo..
2024.11.23 -
MSA(Microservices Architecture) 이해하기: HTTP와 gRPC를 통한 통신 방식
현대 소프트웨어 개발에서는 시스템을 작은 서비스 단위로 나누는 MSA(Microservices Architecture)가 점점 더 인기를 끌고 있습니다. 이를 통해 개발팀은 독립적으로 배포 가능한 서비스들을 구축하고, 각각의 서비스가 독립적으로 발전할 수 있게 합니다. 이번 포스팅에서는 MSA의 통신 방식, HTTP와 gRPC에 대해 살펴보고, 코드 레벨에서 어떻게 구현되는지에 대해 설명하겠습니다. 또한, 모놀리식 아키텍처와 비교하여 MSA의 장점도 살펴보겠습니다.모놀리식 vs MSA모놀리식 아키텍처는 애플리케이션의 모든 기능이 하나의 큰 코드베이스에 통합된 형태입니다. 이 방식은 초기 개발 및 관리가 비교적 단순하다는 장점이 있지만, 프로젝트가 커질수록 유지보수와 배포에서 문제점이 발생할 수 있습니다...
2024.11.18 -
락 프리 큐(Lock-Free Queue)에 대한 이해와 예제 코드
멀티스레딩 환경에서의 데이터 공유는 매우 도전적인 문제 중 하나입니다. 락을 사용해 공유 자원을 보호하는 것은 가장 일반적인 방법이지만, 락을 사용하면 성능 저하와 데드락 같은 문제에 부딪힐 수 있습니다. 이러한 문제를 해결하기 위해 등장한 개념 중 하나가 바로 락 프리(Lock-Free) 자료구조입니다. 이번 포스팅에서는 락 프리 큐(Lock-Free Queue)의 개념을 이해하고, 코드 예제를 통해 어떻게 동작하는지 알아보겠습니다.락 프리 자료구조란?락 프리 자료구조는 스레드 간의 동시 접근이 발생해도 락을 사용하지 않고 안전하게 데이터를 관리할 수 있는 구조를 말합니다. 락 프리 자료구조의 주요 목표는 성능 향상입니다. 이를 위해 락 대신 원자적 연산(Atomic Operation)을 사용하여 데이..
2024.11.04 -
# Kubernetes Cluster Architecture
안녕하세요. 해커의 개발일기 입니다. 오늘은 지난번에 소개했던, 컨테이너 오케스트레이션인 Kubernetes의 기본적인 아키텍처를 소개하려고 합니다. Kubernetes의 목적은 자동화된 방식으로 Container 기반의 Application을 호스팅하는 것 인데요. 이런 목적을 달성하기 위해서 Kubernetes 아키텍처를 이루는 컴포넌트들이 어떤 것들이 있고 어떤 기능을 통해 Kubernetes의 목적을 달성하고 있는지 알아보도록 하겠습니다. 쿠버네티스 클러스터는 물리적 또는 가상의 노드 집합으로 구성되어 있습니다. 이 노드 집합의 클러스터에서 논리적으로 Master 노드와 Woker 노드로 구분됩니다. 실제로 컨테이너를 띄우고 제어하는 것은 Worker 노드가 하게 되며, Master 노드는 컨테이..
2021.05.02 -
# MSA(Micro Service Architecture) 서비스 간 통신
안녕하세요. 정말 오랜만에 글을 쓰는 해커의 개발일기 입니다. 오늘은 쿠버네티스의 소개와 OpenTracing - Jaeger의 소개 때언급했던 MSA에 대해서 다시금 고뇌하는(?) 시간을 갖도록 하겠습니다. 솔직하게 얘기를 하자면 MSA를 위한 솔루션을 개발하고 있지만, 어렴풋이 이해만 하고 있는 수준의 MSA 이해도를 가지고 있었습니다. 그러다가 불현듯이 어떤 생각이 들어 조금 더 깊은 이해를 하게 되었는데요. 제 머릿속에 떠오른 질문은 이랬습니다."MSA(Micro Service Architecture)에서 서비스를 별도 프로세스 혹은 별도 서버에 띄우게 된다고 하는데, 그래서 gRPC를 쓰는 건가?"왜 gRPC가 떠올랐냐면, 저는 Jaeger라는 OpenTracing 기술을 커스터마이징 하고 있는..
2020.05.19 -
#1 데이터베이스의 무결성을 보장해주는 WAL(Write-Ahead Logging)
안녕하세요. 오랜만에 글을 쓰는 해커의 개발일기 입니다. 요즘은 대학원도 대학원이지만 ,, 회사에서 golang으로 만들어진 오픈소스들을 분석해 회사 솔루션에 맞게 커스터마이징을 하다 보니 정말 시간이 나질 않았습니다. 하지만 정말 정말 유익한 시간을 보내고 있는 요즘입니다..(뿌듯) 사실 요즘 지난번에 소개했던 #오픈소스 모니터링 시스템 Prometheus 프로메테우스를 커스터마이징하고 있습니다. 대규모 솔루션에 맞게 kafka(메시징 큐) 연동을 만들고 쓸모없는 disk write 등을 최소화하기 위해 열심히 노력 중에 있습니다. 그러던 중에 당연히 프로메테우스 소스코드를 분석하고 아키텍처를 파악하던 중에 WAL이라는 것을 알게 되었는데요. 이 WAL이 DBMS의 무결성을 보장해주는 장치 역할을 해주..
2020.04.20