llm-ls에 llm 서버 데몬 적용하기


주의사항

블로그 주인장이 코파일럿보다 2배 비싼 cursor.sh를 한달 결제했기 때문에 한동안 이 툴에서 생성한 글로 대충 날먹하려는 심보가 보일 수도 있습니다.

요약

코드 자동완성은 개발자의 생산성을 크게 향상시키는 도구 중 하나입니다. LLM-LS는 이러한 자동완성 기능을 제공하는 플러그인이지만, 때로는 기본 제공 서버의 한계로 인해 사용자의 특정 요구를 충족시키지 못할 수 있습니다. 이 글에서는 LLM-LS 플러그인에 사용자가 직접 구축한 서버를 연결하여 보다 맞춤화된 자동완성 경험을 제공하는 방법을 소개하고자 합니다.

프로젝트 코드: https://github.com/blmarket/llm-ls

문제 - 왜 로컬 서버?

  1. 개인정보 보호와 데이터 보안: 유료 서비스들은 사용자의 코드를 외부 서버로 전송하므로, 민감한 데이터가 외부에 노출될 위험이 있습니다. 로컬 서버를 사용하면 모든 데이터가 사용자의 컴퓨터 내에서 처리되어 데이터 보안이 강화됩니다.
  2. 인터넷 연결 의존성: 대부분의 유료 자동완성 서비스는 인터넷 연결을 필요로 합니다. 인터넷 연결이 불안정하거나 없는 환경에서는 이러한 서비스를 사용할 수 없습니다. 로컬 모델은 오프라인에서도 작동할 수 있어, 언제 어디서나 일관된 성능을 제공합니다.
  3. 비용: 유료 서비스는 지속적인 구독 비용이 발생합니다. 로컬 서버를 사용하면 초기 설정 비용 이외에 추가 비용이 발생하지 않아 장기적으로 경제적입니다.
  4. 맞춤화의 제한: 유료 서비스는 일반적으로 모든 사용자에게 동일한 서비스를 제공합니다. 반면, 로컬 서버를 사용하면 사용자의 특정 요구에 맞게 서비스를 맞춤 설정할 수 있습니다.
  5. 응답 시간: 외부 서버에 요청을 보내고 응답을 받는 데 시간이 걸릴 수 있습니다. 로컬 서버는 네트워크 지연 없이 빠른 응답 시간을 제공할 수 있습니다.

자, 이중에서 응답 시간은… 여러분이 3090 이상 급의 GPU를 로컬에서 구동하는 게 아니라면 일단 제끼자. OpenAI 서비스가 무난하게 쓰기에 더 편하고 성능도 부족함이 없다.

그럼 왜 로컬 모델을 안하는데?

  1. 하드웨어, 하드웨어, 하드웨어: 모든 컴퓨터가 GPU 혹은 애플 M시리즈 CPU를 탑재하고 있다고 가정할 순 없어서, 컴퓨터 사양을 심하게 탄다고 할 수 있다. 특히 윈도우 경량 랩탑은 M시리즈 맥북이랑 비교하면 완전히 망한 성능이라, MS가 AI 컴퓨터 표준사양을 정해서 거기에 맞추려는 게 다 이유있는 전략이라는 생각이 든다.
  2. 초기 설치가 번거로워: 모델을 구동하는 환경도 여러가지 있고, 모델 자체도 엄청 큰 용량이라 신중하게 접근해야 할 부분이다. 모델 하나 바꿀때마다 3~6기가바이트 단위의 다운로드를 해야하는데 유저한테는 큰 부담이 될 수 있다.

llm-daemon을 쓰면 뭐가 좋은데?

아직 ollama같이 모델 가중치를 바로 다운로드받는 수준의 자동화는 못했지만, 그래도 괜찮은 성능 + 최적화 구현 앱을 제공하고, 별도로 실행할 필요 없이 language server의 일부로 동작하기 때문에 유저가 그냥 에디터만 열면 된다는 점이 최대 장점이라고 할 수 있습니다.

해봤더니

되긴 되는데… 생성된 결과물의 퀄리티가 영~ 좋지 않았다.

어떻게 해야하나

보니까 Copilot에서 주고받는 트래픽을 살짝 엿봐서 어떻게 만들었는지 좀 참고가 필요할 것 같다. 근데 먼저 지금 쓰고있는 cursor.sh의 사용기간이 만료될 때까지 기다려야 할 것 같아…

아 잠깐, cursor.sh에서 주고받는 트래픽도 비슷한 방법으로 엿볼 수 있으려나?