Programming

A collection of 11 posts
CPU 서버 개발자를 위한 GPU 아키텍처
Programming

CPU 서버 개발자를 위한 GPU 아키텍처

최근 회사에서 CPU 서버에서 돌던 모델 서빙을 GPU로 옮기는 일을 준비하고 있습니다. 저는 그동안 CPU 아키텍처에 대해서는 공부를 해보았지만, GPU는 해본적이 없으나 막연히 비슷할 거라고 생각했었습니다. 그런데 자료를 읽다보니 혼란스러웠습니다. CUDA 코어가 만 개가 넘는다는데, CPU와 달리 코어 수에 맞춰 스레드 1만 개를 띄우면 안됩니다. 같은 GPU utilization(nvidia-smi)
26 min read
평범한 개발자들을 위한 LLM 에이전트 프레임워크 가이드
Programming

평범한 개발자들을 위한 LLM 에이전트 프레임워크 가이드

사방에서 AI와 LLM에 대한 얘기가 나오는 요즘입니다. LLM을 잘 사용하기 위해 LLM 모델을 공부하거나 서빙을 공부할 필요성은 점점 줄어들 거라 생각합니다. LLM API를 제공하는 서비스들은 점점 많아지고 있고 그 가격도 시간이 갈수록 떨어지고 있으니까요. 기업들도 LLM 모델을 공개하는 것을 넘어 AI를 활용한 서비스들을 내놓고 있습니다. AI 에이전트는 그 중 하나로
23 min read
[Go] 서버 개발자를 위한 graceful shutdown 가이드
Go

[Go] 서버 개발자를 위한 graceful shutdown 가이드

[요약] * graceful shutdown을 적용하면 클라이언트가 타임아웃으로 인해 실패한 요청을 다른 서버로 재시도를 못하는 케이스를 막을 수 있습니다. * gRPC와 echo 프레임워크 모두 graceful shutdown 함수를 지원하여 쉽게 구현할 수 있습니다. graceful shutdown 적용 필요성 서버가 요청을 처리하다 갑자기 종료되면 처리가 거의 완료된 요청들도 정상 응답을 반환하지 못하고 에러를 반환합니다. 클라이언트는 에러가
11 min read
[LLVM & Clang] LLVM 최적화, 어디까지 아시나요?(LTO, PGO, BOLT)
Compiler

[LLVM & Clang] LLVM 최적화, 어디까지 아시나요?(LTO, PGO, BOLT)

[요약] 1. Clang은 LLVM 기반 C/C++/Objective C 오픈소스 컴파일러다. Clang을 사용하면 LLVM의 최적화 기법을 적용하여 프로그램 성능 향상을 이끌어낼 수 있다. 2. C/C++ 외 다른 언어도 맞는 프론트엔드를 사용하면 LLVM을 사용할 수 있다. 3. LTO는 컴파일시 link 단계에서 적용되는 최적화이다. 함수를 사용하는 파일들이 나눠지거나 언어가 달라도 최적화를
27 min read
[RTK Query] useQuery 리렌더링 문제 해결기 - useLazyQuery 사용
Frontend

[RTK Query] useQuery 리렌더링 문제 해결기 - useLazyQuery 사용

[요약] 1. RTK Query의 useQuery는 호출이 되는 시점에 데이터를 fetch한다. 그리고 그 과정에서 컴포넌트의 렌더링이 여러 번 발생할 수 있다. 2. 이로 인해 개발자가 예상하지 못한 시점에 컴포넌트가 렌더링되며 사이드 이펙트가 생길 수 있다. 3. RTK Query의 useLazyQuery를 사용하면 데이터 fetch 시점을 조절할 수 있어 사이드 이펙트를 줄일 수 있다.
8 min read
[오픈소스 contribution 도전기] IBC Query
Blockchain

[오픈소스 contribution 도전기] IBC Query

[요약] 디사이퍼, a41에서 팀을 꾸려 오픈 소스 컨트리뷰션을 진행했고, 머지가 되는 성과를 얻었다(22.06 ~ 22.12) 1. 코스모스 IBC는 현재 체인 간 쿼리하는 기능이 없다. 2. 디사이퍼에서 이를 구현하여 contribution을 하려는 팀이 구성되었다. 3. 아키텍처를 설계하였고, 체인 모듈과 릴레이어를 구현하는 소규모 팀으로 다시 나누어졌다. 4. 체인 모듈은 구현 완료하였으나
11 min read
[Cosmwasm] Cosmwasm은 처음이지?(2) -  배포 및 실행하기
Blockchain

[Cosmwasm] Cosmwasm은 처음이지?(2) - 배포 및 실행하기

Cosmwasm은 처음이지?(1) - 구성요소 알아보기 와 이어지는 글입니다. [요약] * juno 테스트 네트워크 사용을 위해 juno 클라이언트 설치 및 Public RPC 설정을 진행한다. * rust optimzer를 통해 컴파일된 wasm 바이트 코드의 용량을 줄인다. * 컴파일된 바이트 코드를 배포해보고 init 트랜잭션을 보내본다. [목차] 1. juno 테스트 네트워크 사용 준비 2. cw20 배포 Juno 테스트
10 min read
[Cosmwasm] Cosmwasm은 처음이지?(1) -  구성요소 알아보기
Blockchain

[Cosmwasm] Cosmwasm은 처음이지?(1) - 구성요소 알아보기

개발 경험이 있으나 Rust에 익숙하지 않은 사람들을 대상으로 작성된 글입니다. [요약] * 보통 Cosmwasm 스마트 컨트랙트는 contract 모듈, msg 모듈, state 모듈로 이루어져 있다. * contract 모듈이 스마트 컨트랙트의 핵심 로직을 담당하며 나머지 두 모듈은 contract 모듈을 보조하는 역할이다. * contract 모듈은 무조건 instantiate(), execute(), query() 함수를 정의해야 하며 이 세 함수는 entry_
11 min read
[Go] kv 파일 스토리지를 골라보자! (부제: LSM Tree와 B Tree)
Go

[Go] kv 파일 스토리지를 골라보자! (부제: LSM Tree와 B Tree)

[요약] 1. kv storage는 LSM tree로 구현된 것과 B tree로 구현된 것으로 나뉜다 2. LSM tree는 쓰기가 빠르고 B tree는 읽기가 빠르다 3. Go의 KV 파일 스토리지 구현체는 badger, pebble, bbolt가 있다 4. badger와 pebble은 동일 db에 read 프로세스와 write 프로세스가 접근하면 에러가 발생한다. bbolt는 행이 걸린다 이 글에서는 Key-
8 min read
[Go] Map 사용시 Read도 RLock을 해야하는 이유
Go

[Go] Map 사용시 Read도 RLock을 해야하는 이유

[요약] * Map에 여러 프로세스가 접근할 때 다른 key에 대해 write을 하더라도 리밸런스로 서로 영향을 미칠 수 있다. * Read시 다른 Key에 write을 하는 프로세스에 영향을 받을 수 있으니 key별로 lock을 걸지 말고 전체 Map에 대해 RLock, WLock을 걸어야 한다. 멀티 프로세스 혹은 여러 고루틴을 이용해 병렬 프로그래밍을 할 때 가장 골치가
5 min read