GN⁺: GPT 토큰 5억 개 학습 후 얻은 교훈들
(kenkantzer.com)GPT 사용에서 간결한 프롬프트가 더 나은 결과를 제공함
- GPT는 이미 상식으로 알고 있는 내용을 프롬프트에 과도하게 명시하면 오히려 혼란스러워함
- 예를 들어, 텍스트에서 언급된 주(state)를 분류하는 작업에서 50개 주 목록을 제공하는 것보다 단순히 주 이름을 요청하는 것이 더 정확한 결과를 냄
OpenAI의 chat API만으로도 충분히 다양하고 강력한 기능 구현이 가능함
- Langchain 등 추가적인 도구 없이 chat API만 사용하여 JSON 추출 등 필요한 기능을 간단히 구현
- GPT 모델 업그레이드 시에도 코드베이스의 문자열 하나만 수정하면 됨
- OpenAI API의 에러 처리와 입력 길이 제한 등을 위한 간단한 로직만 추가하면 됨
GPT가 아무것도 찾지 못하는 경우를 처리하는 것이 어려움
- "아무것도 찾지 못하면 빈 값을 리턴하라"는 프롬프트에서 GPT는 종종 헛것을 만들어내거나 자신감이 부족해짐
- 입력이 비어있을 때 GPT에 프롬프트를 보내지 않도록 하는 것이 해결책
GPT는 제한된 길이의 출력만 생성할 수 있음
- GPT-4의 입력 제한은 128k 토큰이지만 출력 제한은 4k 토큰에 불과함
- JSON 객체 목록을 요청할 때 GPT는 10개 이상의 아이템을 안정적으로 생성하기 어려움
벡터 데이터베이스와 RAG/임베딩은 일반적인 용도에는 큰 도움이 되지 않음
- 검색 이외의 용도로는 RAG가 잘 동작하지 않음
- 관련성 판단의 어려움, 데이터 격리 문제, 사용자 만족도 저하 등의 이유로 실용성이 떨어짐
- 일반적인 검색에는 GPT를 사용한 패싯 검색이나 복잡한 쿼리 생성이 더 적합함
GPT는 사실상 환각(hallucination)을 만들어내지 않음
- 주어진 텍스트에서 정보를 추출하는 작업에서 GPT는 매우 신뢰할만한 결과를 제공함
- 다만 텍스트에 정보가 없는 경우에는 헛것을 만들어낼 수 있음
- 따라서 충분한 컨텍스트를 제공하고 GPT의 응답을 잘 다루는 것이 중요함
GN⁺의 의견
- 트랜스포머 모델과 웹 데이터, 대규모 인프라만으로는 AGI에 도달하기 어려울 것으로 보임
- GPT-4는 분명 유용하지만, 그 이상의 발전을 위해서는 모델 아키텍처 자체의 혁신이 필요할 듯함
- OpenAI 이외의 대안들은 아직 GPT에 미치지 못하는 것 같고, 결국 GPT의 버전업에 주목해야 할 것
- GPT-5의 성능은 GPT-4 대비 혁신적인 수준은 아닐 것으로 예상됨. 비용 대비 효용이 한계에 다다른 듯함
- 따라서 당분간은 GPT-4를 활용하여 최적의 프롬프트 설계와 응용에 집중하는 것이 현실적인 선택으로 보임
Hacker News 의견
- 한 팀에서 한 달에 50억 이상의 토큰을 처리하고 있으며, 이를 관리하는 엔지니어링 매니저의 경험을 공유함.
- Langchain 등 많은 추상화가 시기상조이며, 프롬프트는 단순히 API 호출이므로 특별한 것으로 취급하기보다는 일반적인 코드로 작성하는 것이 더 쉬움.
- 요약은 견고하지만 추론은 어려우며, 특히 LLM이 문맥을 이해하고 확신이 없을 때 말하는 것이 어려움.
- 게임 체인저이지만 세상의 종말은 아니며, 일부 직업에 큰 영향을 미치겠지만 인터넷처럼 획기적인 것은 아니고 힘을 증폭시키는 역할을 할 것임.
- 개인 작문 앱에서 OpenAI 모델을 사용한 경험을 공유함.
- Haskell을 언급한 최근 2년 간의 초안 노트를 찾는 등의 지능형 검색 기능을 구현하려 했으나, ChatGPT에게 구조화된 JSON 데이터를 반환하도록 요청하는 것은 일부만 작동함.
- 대신 데이터를 SQLite 데이터베이스에 넣고 ChatGPT에게 스키마를 보내 원하는 것을 반환하는 쿼리를 작성하도록 요청하는 것이 더 잘 작동함.
- 더 나은 프롬프트를 사용하면 더 저렴한 모델을 사용할 수 있음.
- LLM에게 부드러운 출구(sufficient information이 없을 경우 가설을 세울 수 있지만 명확히 언급하고 근거와 논리적 기반을 제시하도록 요청)를 제공한 다음 자체 응답을 평가하도록 요청함.
- JSON 모드가 필요하지 않은 이유에 대해 궁금해함.
- 규칙이 텍스트에 적용되지 않을 경우 원본 텍스트를 변경 없이 반환하도록 프롬프트를 테스트했으나, ChatGPT는 "The original text without any changes"라는 리터럴 문자열을 반환함.
- GPT는 매우 멋지지만 모호할수록 품질과 일반화가 향상된다는 해석에는 강하게 동의하지 않음.
- 자연어는 GPT에 가장 가능성 있는 출력이며, 개발자는 GPT가 잘하는 것에 더 의존했을 뿐임.
- 간단한 작업으로도 GPT를 실패하게 만들 수 있으며, GPT가 매핑을 "이해"한다는 것 자체가 고차 패턴 매칭을 암시함.
- GPT-4가 1년 전 모델임에도 불구하고 다른 LLM에 비해 훨씬 우수한 성능을 보이며, 사용 패턴에 따라 환각이 드물고 옳다는 것을 알 때 더 고집스러움.
- 회사 이름을 추출할 때 텍스트에 회사가 없다면 임의의 회사를 제시하는 null 가설 문제가 있음.
- 먼저 "이 텍스트가 회사를 언급하는가?"를 물은 다음, 그렇다면 "이 텍스트에서 회사 이름을 나열해 달라"고 요청하는 2단계 접근이 필요함.
- GPT가 10개 이상의 항목을 안정적으로 반환하지 못하는 것은 프롬프트 문제일 뿐이며, JSON 키를 사용하면 최대 200개 항목을 정확한 순서로 반환할 수 있음.
- 'null' 문제 해결을 위한 팁:
- "아무것도 반환하지 마라" 대신 "XYZ의 기본값을 반환하라"고 하고, 주 이름을 검색하는 것처럼 해당 기본값(XYZ)에 대한 텍스트 검색을 수행하면 됨.
- 시스템 프롬프트를 사용하면 LLM이 X 역할을 하도록 할 수 있음.
- 토큰 기반 잘림에 대한 마이크로 패키지를 소개함.