뉴스레터 1월 3주

Jan 15, 2023

파이선 프레임웍이 Golang Fiber보다 더 빠르다.

Socketify.py는 고성능, 신뢰성 있는 파이선 웹 프레임웍으로 대규모 앱 백엔드와 마이크로 서비스를 만드는 용도이다.

Socketify.py 기능:

  • pub/sub 웹 소켓 지원
  • 빠르고 신뢰성 있는 HTTP/HTTPS
  • 윈도, 맥OS 실리콘과 인텔, 리눅스 지원
  • PyPy3와 CPython 지원
  • 와일드카드와 파라미터로 동적 URL 라우팅 지원
  • 동기, 비동기 함수 지원

socketify.py가 초당 약 1.2메가 HTTP 요청이 되는 것으로 벤치마크 결과가 나타났다. GO의 fiber보다 더 나은 결과이다. 해커 뉴스에서 성능을 주제로 여러 가지 논쟁을 하고 있다.

Just. 커맨드 실행기

Just는 프로젝트에 특화된 커맨드를 정의하고 실행할 수 있다. Make와 같은 역할을 한다. 맥, 윈도, 리눅스를 지원한다. 그뿐만 아니라 Make를 뛰어넘는 유용하고, 개선된 기능을 제공한다. VS Code, Emacs를 포함한 다양한 에디터를 지원한다.

alias b : build
host := `uname -a`

# build main
build:
    cc *.c -o main

# test everything
test-all: build
    ./test --all

# run a specific test
test TEST: build
    ./test --test {{TEST}}

이렇게 사용할 수 있다.

$ just build

매뉴얼 내용은 충분한 것 같다. 해커 뉴스 평가도 좋다. 많은 플랫폼에서 설치 방법을 제공하는데, 가벼운 프로젝트에서 사용하기 좋을 것 같다.

nanoGPT

nanoGPT는 중간 크기의 GPT를 훈련, 파인튜닝 하기 위한 가장 단순하고, 빠른 저장소이다.

이 저장소에 있는 train.py 파일은 OpenWebText 데이터세트1에서 GPT-2를 재현할 수 있다. 8 x A100 40GB 노드에서 실행하고, 훈련에 38시간 걸린다.

훈련에 상당한 자원이 필요하다. 이 프로젝트는 GPT-3에 비하면 교육용으로 시도할 정도 규모로 보인다.

OPFS(Origin Private File System) 백엔드를 사용하는 브라우저 SQLite Wasm

원문 : SQLite Wasm in the browser backed by the Origin Private File System

SQLite는 서버리스 데이터베이스라서 따로 프로세스를 분리하지 않는 것이 특징이다. 파일 하나가 데이터베이스가 되는 구조이다.

모바일, 데스크톱 애플리케이션뿐만 아니라 웹에서도 SQLite를 사용할 수 있다. sql.js처럼 비공식적으로 Wasm2 기반의 SQLite가 있었지만, 공식 버전은 SQLite3 WASM/JS subproject가 처음이다.

SQLite3 WASM/JS subproject에는 다음 목표가 있다.

  • 저수준 SQLite3 API 바인딩
  • 자바스크립트 API를 사용한 퍼시스턴트 클라이언트 사이트 스토리지 지원. OPFS 포함

공식 홈페이지에서 WASM 압축 파일을 내려받고, 테스트할 수 있다.

스크린샷

OPFS Explorer 크롬 확장을 사용하면 SQLite Wasm이 OPFS에 쓰는 데이터 내용을 디버깅할 수 있다.

YouPlot

YouPlot은 터미널에서 차트를 그리는 커맨드 라인 도구이다. barplot, lineplot, histogram, scatter, density, boxplot, count 형태의 차트를 그릴 수 있다.

사용 방법은 다음과 같다. 터미널에서 얻은 RAW 데이터를 바로 차트로 만들 수 있다.

curl -sL https://git.io/ISLANDScsv \
| sort -nk2 -t, \
| tail -n15 \
| uplot bar -d, -t "Areas of the World's Major Landmasses"

  1. OpenWebText는 HTML 페이지가 천만 건, URL이 2,300만 건이 넘는다고 한다. 이 데이터세트는 GTP-2 훈련에 사용되었다. ↩︎

  2. Web Assembly ↩︎