ai

[LLM] 로컬에서 LLM 실행하기

bbidag ㅣ 2023. 12. 31. 11:22

반응형

올해는 chatgpt로 인해 연구 단계가 아닌 일반인 입장에서 체감할 수 있는 진짜 인공지능 시대가 열렸다고 해도 과언이 아니다.  

chatgpt는 회원가입만 한다면 쉽게 사용할 수 있지만, 기업에서는 사용하기에 기업의 중요 데이터들이 노출될 수 있기 때문에 on-premise 환경에서 실행할 수 있는 LLM들을 고려하고 있을 것 같다.

일반 사용자 입장에서도 보면 내가 작성하는 대화 내용이 LLM의 학습 데이터로 활용될 수 있다는 점이 좀 껄끄러울 수도

있는데, 오픈소스로 제공하는 각종 LLM들이 존재하기 때문에, 아직은 부족한 점이 많지만 앞으로 더 모델들이 발전한다면 고객의 데이터를 보내지 않고도 생성형 AI를 활용할 수 있는 날도 오지 않을까 한다.

이번 글에서는 현 시점에서 로컬로 내려 받아 간편하게 사용 가능한 LLM들을 소개해 보기로 한다.
아래 내용들은 Apple M1 Pro, RAM 16GB, macOS 14.2.1 버전에서 실행되었다.


1) ollama

  • https://ollama.ai/
  • 해당 사이트에서 macOS 버전으로 다운로드를 받으면 실행가능한 애플리케이션이 다운로드 된다.

  • 설치 과정이 끝나면 ollama 서버가 실행된다.
  • ollama 애플리케이션이 실행되면 ollama 서버가 구동되기 때문에 11434 포트로 접근이 가능하다.
  • ollama run llama2
    해당 커맨드를 입력하면 모델을 웹에서 내려받고 메세지를 입력할 수 있는 cli가 바로 실행되는 것을 볼 수 있다.

  • rest api로 모델에 쿼리를 날릴 수도 있다.
curl http://localhost:11434/api/generate -d '{ "model": "llama2", "prompt":"hello. who are you?" }' 
### 결과 
{"model":"llama2","created_at":"2023-12-30T12:09:37.250371Z","response":"\n","done":false}
{"model":"llama2","created_at":"2023-12-30T12:09:37.277096Z","response":"Hello","done":false}
{"model":"llama2","created_at":"2023-12-30T12:09:37.305448Z","response":"!","done":false} ...
  • 해당 모델 서버를 서빙할 웹 애플리케이션으로 자바를 사용한다면 써볼만한 라이브러리도 있는것 같다.
  • https://github.com/amithkoujalgi/ollama4j
  • 유닛 테스트 코드를 대충 보면 모델의 rest api를 꽤나 그럴싸하게 감싸서 객체지향적으로 만들어 놓은듯 하다.
  @Test
  void testAsk() {
    OllamaAPI ollamaAPI = Mockito.mock(OllamaAPI.class);
    String model = OllamaModelType.LLAMA2;
    String prompt = "some prompt text";
    try {
      when(ollamaAPI.ask(model, prompt)).thenReturn(new OllamaResult("", 0, 200));
      ollamaAPI.ask(model, prompt);
      verify(ollamaAPI, times(1)).ask(model, prompt);
    } catch (IOException | OllamaBaseException | InterruptedException e) {
      throw new RuntimeException(e);
    }
  }

 

  • 종료 방법 : 상단바에서 quit ollama를 하면 서버가 종료된다.

  • 마지막으로, 테스트 삼아 codellama:13b 모델을 띄우고 코딩 테스트 문제를 내보았는데, 문제를 맞췄다.

  • easy 문제는 맞췄길래 hard 문제 한개도 돌려봤는데 실패했다.
  • llama2 모델 이외의 모델들은 해당 링크를 통해 확인할 수 있다.

 2) llamafile

  • 라마 모델을 파일 하나로 쉽게 설치 후, 실행 가능하다.
  1. curl --location --output llava-v1.5-7b-q4-server.llamafile https://huggingface.co/jartine/llava-v1.5-7B-GGUF/resolve/main/llava-v1.5-7b-q4-server.llamafile?download=true
  2. chmod +x llava-v1.5-7b-q4-server.llamafile
  3. ./llava-v1.5-7b-q4-server.llamafile

  • 마찬가지로 같은 easy 문제는 맞추고, medium이나 hard 문제는 맞추지 못하는 모습을 보였다.


결론

  • 아직 아쉬운 점은 ollama나 llamafile을 통해 실행할 수 있는 한국어 전용 LLM이 없다.
  • 몇 개의 대화를 해보면 성능도 chatgpt에 비해 매우 아쉬운 편이라서 모델 개선이 지속적으로 이뤄져야 할 것 같다.
  • 하지만 해당 github 링크를 보면 한국어 전용 LLM 모델이 계속 등장하고 있는걸 보면, 언젠가는 한국어 모델도 딥러닝 모델에 익숙하지 않은 일반 개발자들도 쉽게 올릴 수 있는 모델이 지원되지 않을까?
반응형