소프트웨어 엔지니어의 관점에서 본 LLM의 좁지만 강력한 활용처들: 고객 대화 검색, 알림에서 로그 분석으로의 연결, 콘텐츠 단축, 전사, 채용 스팸 필터링, Instagram 동영상 검색 아이디어까지.
LLM의 한계에 대한 이야기는 아주 많다. 실제로 추론하지는 못한다. 특히 루프 안에서 돌릴 때는 비용이 많이 든다. 일을 처리하는 속도도 꽤 느리다.
LLM이 탁월한 좁은 범주의 사용 사례가 있는데, 그중 하나가 바로 “노이즈를 헤집고 지나가기”다. 여기서 노이즈란 우리가 정말 원하는 것에 도달하기 위해 처리해야 하는 모든 것이다.
여기 소프트웨어 엔지니어로서 내가 즐겨 사용해 왔지만, 많이 언급되는 것은 보지 못한 몇 가지 사용 사례가 있다.
PM 동료 한 명이 우리 주요 고객들과의 모든 통화 기록을 Embedding DB에 업로드했다. 이제 그들의 제품 제안은 증거로 아주 탄탄하게 뒷받침된다. 우리 주요 고객의 40%가 이 고충 지점을 언급했다는 것을 안다. 그 PM은 또 우리의 새 기능을 시험해 볼 의욕적인 비공개 베타 고객 목록도 찾아냈다.
이건 고객의 문제가 추상적일 때 유용하다. 이런 이슈들은 분명한 해결책이 없는 경우가 많고, 해결책이 있어도 뚜렷한 이름이 없는 경우가 많다. 그래서 Feature Request를 등록하기가 어렵고, 정리하거나 중복 제거를 하기는 더 어렵다. LLM 이전에는, 팀 안의 누군가가 이 문제가 충분히 자주 등장하는 것을 오랫동안 봐 왔고, 모든 링크와 연결고리를 어떻게 찾는지 기억하고 있기를 바라는 것이 최선이었다. 이제는 RAG다.
Any large system is going to be operating most of the time in failure mode.
— John Gall, via Lorin Hochstein, Netflix
내가 온콜일 때, 내 책임 중 하나는 우리 팀이 소유한 API 엔드포인트의 장애를 분류하는 것이다. 이런 장애는 “HTTP 4XX/5XX 비율 높음”으로 보고된다. 가끔은 pod의 DB 연결 hiccup 같은 노이즈일 때도 있다. 다른 때는 고객이 더 이상 무언가를 삭제할 수 없게 되는 식의 버그 신호일 수도 있다.
분류 작업은 지루하다.
전체적으로 보면, 헤집고 지나가야 할 것들이 아주 많다. 너무 많은 판단이 필요하고, 나는 아직 문제를 찾지도 못했으며, 해결책에 대해 생각조차 시작하지 못했다.
그런데 agent harness는 이런 일에 거의 완벽하다. 어떤 알림과 timestamp가 주어지면, 로그든 소스 코드든 군집 분석이든 올바른 방향으로 나를 이끌어 달라는 것이다. 이 덕분에 내 분류 시간은 이슈당 15분 이상에서 1-2분으로 줄었다. 굳이 SotA ($$$$) 모델이 필요하지도 않다. 돈을 아끼고 더 빠른 모델을 써라.
나는 실제로 관련된 인간의 기술을 공유하려는 의도로 이 워크플로를 팀원들을 위한 skill로 공개했다. 출력에는 시도한 모든 쿼리가 이름과 함께 나오고, 정보가 있었는지 없었는지로 분류되며, 더 깊이 파고들 수 있는 링크도 포함된다. 나는 이것이 마술처럼 보이길 원하지 않는다. 팀원들이 장애 분류를 어떻게 생각해야 하는지 알기를 바라기 때문이다. 또한 이것이 독립적인 발견으로 가는 경사로가 되길 원한다.
내가 이것을 요약이라고 부르지 않은 이유는 다음과 같다.
ChatGPT doesn’t summarise. When I asked ChatGPT to summarise this text, it instead shortened the text.
— https://ea.rna.nl/2024/05/27/when-chatgpt-summarises-it-actually-does-nothing-of-the-kind/
그런데도 나는 여전히 텍스트를 줄이는 것에서 엄청난 가치를 느낀다! 가끔 1시간이 넘는 팟캐스트나 영상을 추천받는다. 때로는 처음 5분 안에 완전히 빠져들기도 한다. 하지만 기술 콘텐츠의 경우, 내가 흥미를 느끼는 부분은 영상 깊숙이 묻혀 있는 경우가 많고, 녹화된 발표라면 30분쯤 지나서야 나올 수도 있다. 뭔가가 내게 흥미로운지 알아내기 위해 그렇게 많은 시간을 쓰고 싶지 않으며, LLM은 이 점에서 큰 도움을 준다.
내 경험상, 줄인 버전에 흥미로운 내용이 충분히 있다면 원본에도 풍부하게 있다. 어떤 영상은 미국의 east-coast 대 west-coast 프로그래밍을 무심코 언급했다. 줄이기가 없었다면, 나는 흥미를 잃고 19초 더 일찍 시청을 멈췄을 것이다.
좋다, 텍스트 줄이기는 내게 정말 유용한데, 그러면 이걸 영상과 팟캐스트에 어떻게 적용할까? 나는 링크가 주어지면 다음을 확인하는 작은 자동화를 만들었다.
느린 영상이나 오디오 형식을 텍스트로 변환하고 나면, 요약할 수 있다!
다만 이 모든 말에는 어쩌면 이것이 내 ADHD를 위한 대처 기술일 수도 있다는 단서를 붙여야겠다. 나는 주의 집중을 유지하는 것이 어렵고, 특히 오디오에서 그렇다. 실제로 내 검사 결과에는 청각적 집중, 일관성, 그리고 지속력에서 하위 1%라고 적혀 있다. 이건 서로 다른 세 가지 기술인데, 나는 통계적으로 셋 다 형편없다. 그래서 어쩌면 가장 중요한 것은 오디오를 텍스트로 변환하는 능력일지도 모른다. 나는 오디오보다 텍스트를 훨씬 더 잘 처리할 수 있기 때문이다(그래도 통계적으로는 평균 수준이지만).
나는 하루에 1-4통 정도 “recruiter” 또는 그들의 Agents로부터 이메일을 받는다. 꽤 짜증 난다. 주말에도 오고, 밤사이에도 오고, 공휴일에도 온다.
그래서 나는 15분마다 내 이메일을 읽고 recruiter인지 아닌지 분류하는 자동화를 설정했다. recruiter라면 읽음으로 표시하고 라벨을 붙인다.
이런 작은 것만으로도 이메일 관리 부담이 크게 줄었다.
가끔 그것들을 훑어보며 구독 해지를 시도하지만, 대개는 진짜 메일링 리스트 구독이 아니라 개인 이메일 스팸일 뿐이다.
예전에는 지금은 이직을 찾고 있지 않다고 답장하곤 했다. 하지만 이메일의 양이 너무 많아서, 실제로 내 답변을 사람이 볼 일은 없을 것 같은 느낌이 든다. 그저 또 다른 LLM일 뿐이다.
이건 내 꿈인데, Instagram에서 내가 하트를 눌렀던 모든 영상을 인덱싱하고 싶다. 화면에 있는 자막은 OCR하고, 영상의 오디오는 전사하고, 썸네일에서는 객체 탐지를 하고 싶다. 내가 이걸 원하는 이유는 3년 전에 좋아요를 눌렀던 그 영상 하나를 찾기가 너무나도 어렵기 때문이다. 그건 그냥 인터넷 어딘가, Instagram이나 TikTok 어딘가에 떠다니고 있다. 나는 그걸 어떻게 찾아야 할지 전혀 모르겠다. 하지만 embeddings라면 할 수 있다고 생각한다.
물론 Google은 “세상의 정보를 정리”하고 싶어 한다. Apple Photos 앱에서 “horse”를 검색해서 내가 본 모든 말을 찾을 수 있는 것은 고맙게 생각한다. 하지만 나는 내 밈에도 그런 기능을 원하고, Instagram이 이 점에서 얼마나 뒤처져 있는지 놀랍다.
내가 할 말은 여기까지다.
나는 여전히 LLM에 대해 꽤 갈팡질팡하고 있다. open-weight 모델을 쓰는 것은 즐겁다. 추론 비용을 감당 가능하게 만드는 작업이 기대된다. 그리고 그것들이 우리 경제, 사회적 결속, 그리고 개인의 정신에 미칠 영향은 무섭다. 하지만 그 덕분에 재미있는 작은 결과물 몇 개는 얻었다.

그래, 지구는 파괴됐다. 하지만 아름다웠던 잠깐의 순간 동안 우리는 주주들을 위해 많은 가치를 만들어 냈다.