전체 93편
-
시리즈 아홉 번째 편이자 "정렬/안전성" 트랙의 마지막 편. 지난 InstructGPT가 세운 RLHF 레시피는 강력했지만, 무해성을 학습시키려면 사람이 유해한 출력을 잔뜩 읽고 라벨을 달아야 한다는 부담이 그대로 남아 있었다. 이번에 다룰 Constitutional AI: Harmlessness from AI Feedback (Bai et al., 2022)은 그 라벨링을 원칙 목록 한 장 으로 대체하려는 시도다. 1. 기본적인 이해부터 쉽게 말하면, Constitutional AI(CAI)는 "사람이 유해한 답변에 일일이 빨간펜을 긋는 대신, 모델에게 원칙 목록(…
-
지난 편까지 Pod를 어디에 어떻게 배치하는지를 봤다. 1강부터 8강까지 오면서 손에 남은 건 결국 YAML 파일 뭉치다. 이번 편은 그 뭉치를 어떻게 하나의 패키지로 묶어 재사용하고 되돌리는가 — Helm 이야기. TL;DR - Helm은 쿠버네티스용 패키지 매니저 다. Chart(패키지 = 템플릿 묶음) / Values(주입할 설정값) / Release(설치된 결과물) 세 단어면 개념의 8할은 끝난다 - 매니페스트에서 환경마다 달라지는 값을 {{ .Values.x }} 자리로 파내고, 그 값을 values 파일로 분리한다 → 환경이 몇 개든 차트는 한 벌 - 렌더…
-
시리즈 여덟 번째 편이자 "정렬(Alignment)/안전성" 트랙의 첫 편. 지난 Toolformer까지가 "모델을 어떻게 더 똑똑하게 쓸 것인가"였다면, 이번에 다룰 Training language models to follow instructions with human feedback (Ouyang et al., 2022, NeurIPS)은 질문 자체가 다르다 — "똑똑한 것과 사용자가 원하는 대로 하는 것은 별개" 라는 이야기다. 흔히 InstructGPT라 불리고, 이후 ChatGPT로 이어지는 RLHF의 원형이 된 논문이다. 1. 기본적인 이해부터 쉽게 말하…
-
이 블로그는 2024년 2월부터 Jekyll(jekyll-theme-yat)로 굴러왔다. 오늘 Astro 5로 옮겼다. 시작은 거창한 기술 부채 청산이 아니라 이거였다 — "Jekyll 이름을 떼고 싶다." 푸터에 박힌 "Powered by Jekyll"과, 테마가 정해준 모양대로만 살아야 하는 상태가 슬슬 답답했다. 옮기면서 가장 신경 쓴 건 하나였다. 글 89편의 URL을 단 하나도 깨뜨리지 않는 것. 2년 반 동안 공유된 링크들이 있고, 검색엔진에 색인된 주소가 있다. 디자인이야 마음에 안 들면 다시 고치면 되지만, 깨진 링크는 조용히 죽는다. 결과부터 쓰면 성…
-
이 서비스의 커밋 855개 중 806개(94%)에는 Co-Authored-By: Claude 가 붙어 있다. 석 달 반 동안 사실상 모든 코드를 AI와 같이 썼다는 뜻이다. 이렇게 말하면 보통 "프롬프트를 어떻게 쓰세요?"라는 질문이 돌아온다. 그런데 실제로 해보니, AI와 함께 개발하는 일의 본체는 프롬프트가 아니었다. 이번 편은 그 얘기다 — 이 시리즈에 기록해온 사고들을 "AI와의 협업"이라는 축으로 다시 꿰어보면 뭐가 보이는지. 1. 동료는 세션마다 기억을 잃는다 AI가 낸 사고들을 돌아보면 패턴이 하나 있다. 몰라서 낸 사고가 아니라, 이 코드베이스의 암묵지…
-
5월 중순, 배팅 포인트 상점에 스크래치 복권을 넣었다. 50P를 내면 황금 카드가 나오고, 손가락으로 긁으면 당첨금이 드러나는 단순한 장치다. 그런데 커밋 로그를 다시 보니 재미있는 기록이 남아 있었다 — 출시하고 40여 분 동안 확률표를 네 번 고쳤다. 처음엔 당첨 확률을 두 번이나 올렸고, 30분 뒤엔 정반대로 꽝을 82%까지 끌어올렸다. 이번 편은 그 짧고 굵었던 밸런싱 시행착오의 기록이다. 시작 — 50P짜리 스크래치 카드 구현 자체는 소박하다. 서버는 누적 확률 테이블에서 가중 랜덤으로 당첨금을 뽑고, 프론트는 canvas의 destination-out 합…
-
오늘 "나만 하는 게 없는 것 같아서, 깃을 뒤져봤다"는 글을 쓰고 났는데, 문득 깃 로그보다 더 오래된 로그가 하나 더 있다는 생각이 들었다. 이 블로그다. 2024년 2월부터 2년 반, 80편 남짓. 이 블로그는 성장 곡선이 통째로 남은 기록이었다 시기별로 펼치면 이렇다. - 2024-02~03 — 첫 직장 입사 직후. 기술보다 "어떻게 배워야 하는가"가 주제였다. 남의 코드 읽는 법, 커밋 컨벤션 제안. 스스로를 "말하는 감자"라고 불렀다 - 2024-04~08 — 5개월 공백 - 2024-09~2025-03 — 복구. 북스터디 4편, 25일간 16편짜리 데일리…
-
실시간 경매 채팅의 말풍선에 스킨을 입히는 기능을 만들었다. 디자이너(라기보단 그림 그려주는 모임원)가 만든 말풍선 SVG를 등록하면, 그 유저의 채팅 말풍선이 기본 색상 박스 대신 그 그림으로 렌더되는 기능이다. 요구사항을 말로 하면 한 줄이다 — "이미지를 텍스트 길이에 맞춰 늘려주세요." 그 한 줄이 커밋 열네 개가 됐다. 이번 편은 시리즈에서 처음 다루는 순수 프론트엔드/CSS 이야기이고, 하이라이트는 캡(말풍선 양끝 조각)이 화면을 뒤덮을 때까지 스스로 커지던 순환 폭주 버그다. 시작 — 통짜 이미지를 늘리면 되겠지 첫 커밋은 플랫폼 관리자 전용 테스트 페이…
-
7월에 시즌패스 "함께하는 여름방학"을 만들어 배포했다. 30레벨 단일 트랙(무료 5개 / 유료 25개 보상), 6주 진행, 일일/주간 미션으로 XP를 모아 레벨을 올리는 전형적인 배틀패스 구조다. 출발점은 거창한 게 아니라 "배팅 포인트가 쌓이기만 하고 쓸 데가 없다"는 경제 문제였다 — 포인트 소진처를 만들면서 리텐션도 노려보자는 것. 14편에서 "이게 리텐션에 실제로 도움이 됐는지 아직 확정하지 않기로 했다"는 지표 이야기는 이미 했으니, 이번 편은 반대쪽 — 만드는 과정에서 했던 기획 판단들을 기록한다. 돌아보니 코드보다 "무엇을 보여주고 무엇을 가릴까", "…
-
설계 기록. 아직 실행하지 않았다. 코드도 인프라도 건드리지 않은 상태이고, 이 글은 13편에서 "별도 글감"이라고 미뤄뒀던 그 설계를 실측과 함께 정리해두는 것이다. 실행하고 나면 계획과 실제가 어디서 달랐는지 이어서 기록할 예정이다. Supabase 요금 조사에서 나온 두 가지 원인 중 Realtime은 13편에서 정리했다. 남은 하나가 이번 주제다 — RiotMatch.rawInfo , Riot API에서 받아온 전적 원본 JSON을 통째로 담고 있는 컬럼. 이게 DB 용량의 90% 이상을 혼자 먹고 있다. 실측부터 — 한 달 사이 얼마나 자랐나 6월 25일에…
마지막 글까지 다 봤어요.