Pangyoalto

Pangyoalto

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
[Ethereum] 상하이 업그레이드에서 무엇이 바뀔까?
Blockchain

[Ethereum] 상하이 업그레이드에서 무엇이 바뀔까?

[요약] 0. 상하이 업그레이드는 23년 3월 예정되어 있다 1. 머지 이전 업그레이드와 다르게 Execution 클라이언트와 Consensus 클라이언트 업그레이드가 동시에 이루어진다 2. 상하이 업그레이드에서 중요한 변경 두 가지는 EVM Object Format(EOF)과 비콘 체인 출금이다. 3. EOF는 EVM에 대한 변경으로 새로운 스마트 컨트랙트 포맷을 정의한다. 4. 비콘 체인 출금은 execution
13 min read
[Go] pprof를 사용해 profiling을 해보자(부제: 당신은 서버 이상 원인을 어떻게 찾으시나요?)
Go

[Go] pprof를 사용해 profiling을 해보자(부제: 당신은 서버 이상 원인을 어떻게 찾으시나요?)

[요약] 1. pprof는 go 어플리케이션을 profiling 해주는 도구이다. 2. go는 go tool에서 pprof를 기본적으로 지원해주기 때문에 쉽게 pprof를 이용할 수 있다. 3. graphviz를 통해 분석을 시각화해서 볼 수 있다. 4. cpu, 메모리, trace 등을 원하는 타겟, 기간에 설정해서 볼 수 있어 이상 원인 파악에 용이하다. pprof란? GitHub - google/pprof:
9 min read