Search

LLM과 개발

게시일
2023. 5. 18.
생성 일시
2023/05/18 13:46

GPT 대소동

ChatGPT가 나온 이후 줄곧 재미있게 사용하고 있다. 조금 비싸지만 Plus 플랜(월 20불…)에 들어서 GPT-4 모델이 얼마나 개선되었는지 체감하고 있고, 엊그제 플러그인과 브라우징 기능이 롤아웃 되어 이것저것 시험해보고 있다. 매일 확인하는 RSS 피드와 깃헙 For you 탭에도 늘 새로운 AI 소식과 도구들이 올라온다. 바로 써먹을 수 있고 재미가 있으니 계속 찾아보게 된다. 요즘 내 최대 관심사이다.
단순한 흥미 이외에도, 직업적으로 개발을 하고있는 사람으로서, 얘랑 앞으로 어떻게 같이 일을 할 수 있을까에 대한 고민도 깊어진다. 최근에 개발자 지인들을 만나면 항상 이 주제를 던져보는데, 나 포함해서 대충 공통적으로 이런 생각을 갖고있는 것 같다.
전체적인 개발 직군 일자리 수가 줄긴 할 것 같다.
일하는 방식에 분명 큰 변화가 있을 것이고 개인의 생산성이 높아질 것이다.
더 멀리 내다보기는 어렵다. 일단 이걸 잘 써보자.

프롬프트 엔지니어링 익히기

뭔가 실속이 있는 액션을 취해야겠다는 생각이 든다. 때마침 응교수님의 프롬프트 엔지니어링 강의가 공개되어서 이것부터 봤다. 비슷한 시기에 다른 여러 조직에서도 프롬프트 엔지니어링에 대한 리소스들을 공개했다.
짧게 공통적인 내용을 추려보면 이렇다.
LLM은 당연히 언어에 대한 일을 잘한다. 언어적 추론, 확장, 요약, 변환 등. (산술 계산이나 이미지에 대한 건 다른 모델이 더 잘한다.)
단순하게 질문을 던지는 것 보다는 충분한 컨텍스트를 공유하고 명료하게 지시했을 때 좋은 출력을 얻기 쉽다.
한번에 묻기, 예시 보여주기, 꼬리물기 같은 많이 사용되는 패턴들이 정립되고 있다.

LLM과 개발

프롬프트 엔지니어링을 배운다는 건 LLM을 더 잘 응용하는 방법을 익히는 것이다. AI 필드에는 모델을 연구하거나 직접 구현하는 엔지니어들도 있지만, 내가 잘 할 수 있고 관심이 가는 건 응용 분야이다.

쓸만한 도구들

이미 발 빠른 사람들이 LLM을 응용하는, 혹은 더 잘 사용하기 위한 다양한 도구들을 만들어 내놓고 있다. 쓸만한 게 보일 때마다 깃헙 리스트에 모아놓고 있는데, 이중 몇가지만 우선 소개해본다.
chatGPTBox: 브라우저 확장. ChatGPT UI를 구글 검색 화면에 삽입하거나 모달로 제공한다. 웹용 GPT, API 키를 통한 사용 모두 사능하다.
chatgpt-exporter: ChatGPT 사용시 대화 내용을 다양한 포맷으로 추출할 수 있다.
AutoPR: 요청한 내용에 해당하는 변경 PR을 자동으로 생성한다. 아직 실험적인 것 같으나 흥미롭다.

나의 프롬프트

뒤늦게 나도 뭔가 만들고 있다. 우선은 내가 작성한 프롬프트들을 모아둘 레포를 만들었다. 프롬프트 엔지니어링 연습을 하면서 쓸만한 프롬프트들을 계속 쌓고 개선시킬 계획이다.
하나 예시를 들면,
search-term --query '구로구에 있는 좋은 카페를 알려줘' output-> '검색어: 구로구 카페, 구로구 인기 카페, 구로구 추천 카페' # 프롬프트 일부 너는 세상에서 제일 검색을 잘하는 사람이야. 사용자가 문장이나 자연어 형태로 질의를 전달하면 너는 그것을 검색 엔진에서 원하는 결과를 얻기에 적절한 형태의 검색어로 가공할거야. 질의를 검색어로 가공하는 역할만 하고, 질의 자체에 답변은 절대 하지 않을거야. 최대 3개의 검색어를 제시하고, 만약 적절한 변환이 불가능하면 없다고 말해.
Bash
복사
현재는 CLI로 실행할 수 있지만, 나중에는 JS SDK로도 만들면 좋을 것 같다. 이런 프롬프트를 서버리스 환경에 올려놓고 필요할 때 호출할 수 있도록 한다던지… 구상 중인 것들이 있는데, 이게 되면 내 생활에도 편리함을 줄 것 같다.
지금은 아래의 프롬프트들을 추가로 생각하고 있다. 아마 누가 이미 만들었을 수도 있는데 직접 짜보는 것에 의미가 있는 거니까…
면접 질문 자동 생성: 이력서를 넘기고 질문 토픽을 던지면 예상되는 면접 질문 몇개를 자동으로 생성. 사실 최근에 면접이 있었는데 그때 ChatGPT에 이런 느낌으로 요청하고 예상 질문 50개 정도 받아서 준비했었다. 잘 다듬으면 쓸만한 프롬프트가 될 듯. 반대로, 면접관으로 들어가는 경우에 질문 뽑을 때 써도 될 것 같다.
GraphQL 쿼리를 SQL 구문으로 자동 변환: GraphQL-DB 스키마가 거의 1:1이 되는 경우에 리졸버 구현을 전부 LLM에 맡겨버릴 수 있지 않을까 하는 생각이 들었다. 만약 이게 잘 먹힌다면 코드 자동 생성 도구가 아니라 런타임에 리졸버를 대체하는 것도 가능은 할 듯(좋은 생각은 아닌 것 같지만). 시도는 해보고 있는데 잘 안된다.
특정 주제와 어떤 아티클의 일치율 측정: 이 프롬프트를 만들고, 브라우저 확장을 만들어 여기에 심으면 쓸만한 웹서핑 어시스턴트가 될 것 같다.

LLM 프레임워크/DSL?

나는 프롬프트가 programmable/plugable한 형태로 사용되면 좋겠다고 생각했다. 프롬프트로 구현된 어떤 기능을 수행하는 함수가 있을 때, 이걸 기존 시스템에 쉽게 통합시킬 수 있도록 하고 싶다. 매번 자연어로 질의하는 것은 이게 어렵고, 비효율적이며 부정확하다. 입출력을 제한된 형식의 문자열이나, 파일, JSON, 코드 등으로 표준화하는 편이 좋을 것 같다.
비슷하게, 최근에 LLM 프롬프트를 표준적/체계적으로 다루려는 시도들이 호응을 얻고있는 듯하다. 이런게 계속 발전할지, 많이 쓰이긴 할지는 일단 지켜볼 일이기는 한데, 뭐 하나가 잘 돼서 업계 표준이 생기면 내 입장에선 편할 것 같다. 파이썬 말고 노드도 지원해줬으면.
lmql: SQL과 비슷하게 선언적으로 모델에 질의 할 수 있다.
guidance: 이건 마소에서 공개했다. handlebars와 비슷한 템플릿 형식으로 프롬프트를 작성한다. 최적화/비용절감 효과도 있다고 한다.

MLOps?

LLM이 인기를 얻으면서 많은 서비스 기업들도 자신들의 요구사항/데이터로 커스텀된 모델을 요구할 것 같다. 최근에 ChatGPT를 커스텀한 챗봇들이 쏟아져 나오기도 했었는데, 기존 모델을 프롬프트로만 제어하는 것엔 한계가 있을테니 결국 자신들의 데이터로 모델을 학습시키려 할 것이다. 이런 커스텀을 제공한다고 하는 SaaS도 몇개 본 것 같은데, 아무튼간에 거시적이더라도 모델을 이해하고 데이터를 다루는 일이 무척이나 중요할 것 같다.
효율적인 데이터 파이프라인을 만드는 것, 모델 학습/운영을 효율적으로 하기위한 인프라를 다루는 것에 대한 수요가 커지지 않을까? 왠지 모르지만 내가 다가가기 전에 누군가(회사에서) 먼저 이런 과제를 줄 것 같다. 공부해야지. (이것까지 할 시간이 있을까?)
나름 LLM의 흐름을 따라가기 위해 노력하고 있기는한데, 파급력이 크고 많은 사람들의 관심을 받는 것만큼이나 변화가 너무 빨라서 한계가 있다. 아는 게 별로 없어서 그럴 수 있지만 앞으로 전개가 어떻게 될지 예상이 안된다.
ChatGPT가 공개된 직후에는 OpenAI가 다 잡아먹을 것 같았다. 얼마전 구글이 개선된 Bard를 공개했다길래 써봤는데 꽤 쓸만하다. 그리고 또 한편에서는 구글도 오픈소스 모델에 이기지 못할 거라고 한다.
지금 상황에서 특정 모델의 세부사항에 커플링된 구현을 했다가는 얼마 못가서 고쳐야 할지도 모른다. 뭔가 부족해서 개선된 걸 만들어도 다시 금방 더 나은 물건이 나올 수도 있다. 지금 깃헙만 돌아봐도 짧은 시간에 인기를 끌었다가 deprecate된 프로젝트들이 종종 보인다.
그래도 이 과정이 피곤하다기 보단 재미있으니 다행이다. 계속 더 개선된 것이 나오니 좋고, 나도 이해도가 높아질수록 일상에서나 직업적인 부분에서나 편리함을 누리니까. 게으른 생각일 수도 있지만, 이정도 거리를 유지하면서 눈을 떼지만 않아도 AI에게 일을 뺏기는 일은 없지 않을까?