Programming, technology and life

[구글 시리즈] #2. Bigtable: A Distributed Storage System for Structured Data (2006)
Paper

[구글 시리즈] #2. Bigtable: A Distributed Storage System for Structured Data (2006)

현재 검색 시장뿐만 아니라 다양한 분야를 장악한 구글은 불과 1998년에 설립되었습니다. 구글은 매우 빠른 속도로 성장했고, 이를 위한 인프라 시스템들을 구축했습니다. 구글의 인프라 시스템은 다른 회사 및 개발자에게 많은 영향을 끼쳤습니다. 구글 시리즈는 이러한 논문들 중 일부를 뽑아 소개를 하고자 합니다. 1. The Google File System (2003) 2. BigTable: A
17 min read
[구글 시리즈] #1. The Google File System(2003)
Paper

[구글 시리즈] #1. The Google File System(2003)

현재 검색 시장뿐만 아니라 다양한 분야를 장악한 구글은 불과 1998년에 설립되었습니다. 구글은 매우 빠른 속도로 성장했고, 이를 위한 인프라 시스템들을 구축했습니다. 구글의 인프라 시스템은 다른 회사 및 개발자에게 많은 영향을 끼쳤습니다. 구글 시리즈는 이러한 논문들 중 일부를 뽑아 소개를 하고자 합니다. 1. The Google File System (2003) 2. BigTable: A
26 min read
AI 딥 다이브 리뷰
Book

AI 딥 다이브 리뷰

💡Disclaimer 이 리뷰는 한빛미디어로부터 책을 지원받아 작성하였습니다. 항상 AI에 관심이 있었지만, 많은 시간을 들여 공부할 여유는 없었다. 그래서 쉽고 빠르게 학습을 하기 위해 여러 AI 관련 책들을 살펴보곤 했었다. 대부분 일반인들을 위한 입문 책이거나 딥러닝 모델을 작성하기 위한 구현 위주의 책이었다. 큰 맥락을 짚어주는 책이 없었다. 이 책은 저자가 2015년부터
3 min read
eBPF/XDP: 당신만 모르는 안전하고 빠른 Networking
Linux

eBPF/XDP: 당신만 모르는 안전하고 빠른 Networking

[요약] * eBPF: kernel space 내에서 프로그램을 실행할 수 있도록 하여 어플리케이션 개발자가 런타임에 OS의 기능을 사용할 수 있도록 하는 기술 * XDP: eBPF를 기반으로 한 기술로 packet processing을 할 수 있도록 지원 * XDP는 XDP driver hook 및 eBPF virtual machine 등으로 구성되어 있고 높은 성능으로 안전하게 kernel space에서 packet processing을 할
21 min read
RAG의 짧은 역사 훑어보기(첫 논문부터 최근 동향까지)
Paper

RAG의 짧은 역사 훑어보기(첫 논문부터 최근 동향까지)

[요약] * RAG는 Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks(2020)에서 처음 등장하였고 모델과 Retriever을 학습시키는데 사용되었다. * 최근 RAG는 모델의 학습이 아닌 모델의 Inference 성능을 레버리지하기 위해 주로 사용되고 있다. * RAG는 문서를 어떻게 잘 검색해서 가져오고 LLM에 잘 넘겨주는지 중요하다. * RAG를 도와주는 구글의 Vertex AI는 문서 검색에 벡터 검색뿐만 아니라 전통적인
15 min read
[논문 리뷰] Efficient Memory Management for Large Language Model Serving with PagedAttention
Paper

[논문 리뷰] Efficient Memory Management for Large Language Model Serving with PagedAttention

[요약] 1. Efficient Memory Management for Large Language Model Serving with PagedAttention 은 vLLM의 기반이 된 논문이다. 2. LLM 서빙에서 throughput을 향상시키려면 배치 처리를 해야한다. 배치 처리의 바틀넥은 KV 캐시가 차지하는 메모리 크기이며 이에 따라 최대 배치 크기가 결정된다. 3. vLLM은 OS의 virtual memory처럼 KV 캐시가 저장되는 메모리를 block단위로 나누고
15 min read
구글 Spanner의 Paxos 및 TrueTime 활용을 알아보자
Paper

구글 Spanner의 Paxos 및 TrueTime 활용을 알아보자

[요약] * Paxos는 분산 시스템에서 사용되는 합의 알고리즘으로 2PC를 확장한 알고리즘으로 볼 수 있습니다. * Spanner는 lease를 활용한 리더 기반 Paxos를 사용합니다. * Spanner의 TrueTime은 오차가 제한되는 전역 동기화 시계로 이벤트 간 순서를 정할 때 도움을 줍니다. * TrueTime을 통해 Spanner는 external consistency 및 MVCC를 제공합니다. [목차] * 2PC * paxos * Spanner의 paxos * Spanner의 TrueTime 및
20 min read
[논문 리뷰] On-demand Container Loading in AWS Lambda
Paper

[논문 리뷰] On-demand Container Loading in AWS Lambda

[요약] 1. On-demand Container Loading in AWS Lambda는 Block-level loading, Deduplication 및 Tiered cache을 도입해 scalability 및 cold start latency를 줄이는 방법을 소개한다. 2. Block-level loading은 이미지를 flattening process를 거쳐 하나의 파일 시스템으로 만든 뒤 chunk로 나누어 캐시에 올린다. 3. 캐시에 이미지를 올릴 때 같은 내용의 이미지는 같은 key로 암호화하여
15 min read
[FAISS 뜯어보기(1)] Similarity Search와 HNSW
Information Retrieval

[FAISS 뜯어보기(1)] Similarity Search와 HNSW

[요약] 1. FAISS는 similarity search를 도와주는 Facebook에서 만든 라이브러리다. 2. Voronoi diagram은 데이터 셋을 region으로 나누어 벡터 검색 인덱스를 만들 수 있다. 3. Product Quantization은 데이터 벡터를 압축하여 스토리지를 아낄 수 있다. Voronoi diagram과 같이 사용할 수 있다. 4. NSW는 ANN 검색시 사용하는 graph 자료구조다. Skip list는 검색과 입력이 평균
23 min read
[논문 리뷰] ColBERT, ColBERTv2
Paper

[논문 리뷰] ColBERT, ColBERTv2

[요약] ‌1. IR의 랭킹 방법은 BM25가 널리 쓰이고 있지만 2016년부터 Neural Network를 사용한 랭킹 방법들이 등장하기 시작했다. 2. Neural IR은 대체로 높은 MRR을 보여주었지만 계산이 비싸다는 단점이 있었다. 특히 BERT는 월등한 MRR을 보이지만 서비스에 적용하기에 너무 느리다. 3. ColBERT는 BERT보다 약간 모자란 MRR을 보이지만 훨씬 빠른 성능을 보여주었다. 4. ColBERTv2는
17 min read
[Blockchain 입문] 개발자를 위한 Why Blockchain
Blockchain

[Blockchain 입문] 개발자를 위한 Why Blockchain

[요약] * 비트코인은 인터넷 결제 시스템에서 처음으로 중앙 주체를 성공적으로 없앤 시스템이다. * 비트코인은 분산 DB의 일종으로 볼 수 있다. 일반적인 분산 DB와 다른 점은 Permissionless 하여 어느 노드든 이 시스템에 참여할 수 있다는 점이다. * 이더리움은 월드 컴퓨터를 표방한다. 화폐 결제 시스템이 목표인 비트코인과 다르다. * 이더리움의 등장으로 web3가 본격적으로 논의되기 시작했다. Web3는
32 min read
[Blockchain] 가버넌스 토큰에 밸류에이션을 할 수 있을까?
Blockchain

[Blockchain] 가버넌스 토큰에 밸류에이션을 할 수 있을까?

[요약] 1. 가버넌스 토큰은 소유권을 가진다는 점에서 web2의 주식과 유사한 성격을 가지고 있다 2. 주식의 경우 대량 매수를 통해 회사의 경영에 깊게 관여할 수 있다. PEF는 이를 통해 회사 자산을 매각하여 배당을 늘리거나 경영을 도와 회사 가치를 키우는 등 여러 전략을 구사한 바 있다. 3. Defi 프로젝트의 경우 시가총액이 자본(
38 min read
[Go] Interface 구현과  Reflection Package
Go

[Go] Interface 구현과 Reflection Package

[요약] * Go의 interface는 내부적으로 한 쌍의 word로 구성된다. 하나는 itable을, 하나는 data를 가리킨다. * Go의 컴파일러는 concrete 타입과 interface 타입마다 메소드 리스트를 작성한다. 런타임 때 이 둘을 조합하여 itable을 생성한다. * Golang의 reflect 패키지는 interface 타입 객체로부터 concrete 타입 및 값을 다룰 수 있도록 도와준다.   * Interface와 reflect 패키지를 활용하면 인자의 타입과 상관
7 min read
[K8s & Github Action] self-hosted-runner를 k8s로 구성해보자
k8s

[K8s & Github Action] self-hosted-runner를 k8s로 구성해보자

[요약] k8s 클러스터 구성 1. k8s 클러스터 구성시 공식 문서에 나와있는 kubeadm 쓰지 말자. 훨씬 편리한 프로젝트들 많이 있다(k0s, k3s). Github Action 1. Github Action은 runner로 자신의 서버를 쓸 수 있는 self-hosted runner를 지원한다. 2. ARC를 사용하면 k8s에 self-hosted runner를 비교적 쉽게 구성할 수 있다. 3. 그러나 ARC는 self-hosted
13 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
[도서 리뷰] 인피니트 게임
Book

[도서 리뷰] 인피니트 게임

[요약] 이번 요약은 이 책에서 기억하고 싶은 구절들로 대체하겠다. * 비즈니스라는 무한게임에서 대의명분은 제품이나 서비스보다 더 중요하다. * 제품을 그 무엇보다도 중요하게 여기는 현상은 IT 기업에서 흔히 일어난다. 그렇게 되면 엔지니어나 제품 개발자가 아닌 직원들은 상대적 박탈감을 느끼며 실제로 차별받기도 하는 문제가 발생한다. * 유한게임식 리더는 "좋은 일을 하려면 돈을 벌어야 한다"라고
21 min read
[오픈소스 contribution 도전기] IBC Query
Blockchain

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

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