로컬에서 대규모 언어 모델 API 제공하기

로컬 또는 자체 배포 목적으로 대규모 언어 모델(LLM)을 제공하는 여러 가지 방법이 있습니다.

MistralAI은 모델을 위해 두 가지 서로 다른 서빙 프레임워크를 권장합니다:

  • vLLM: OpenAI의 사양과 일치하는 API를 배포하는 Python 전용 서빙 프레임워크입니다. vLLM은 서빙 처리량을 향상시키기 위해 페이지드 어텐션 커널을 제공합니다.
  • Nvidia의 TensorRT-LLM는 Nvidia의 Triton 추론 서버로 제공되는데, TensorRT-LLM은 대규모 언어 모델을 위한 전용 커널로 빠른 추론 엔진을 구축하기 위한 DSL을 제공합니다. Triton 추론 서버는 이러한 추론 엔진을 효율적으로 제공할 수 있도록 합니다.

이러한 솔루션들은 연산을 위해 CUDA 그래픽 API에 의존하므로 Nvidia GPU에 액세스해야 합니다. 그러나 Ollama은 이를 하기 위한 저 구성 cross-platform 솔루션을 제공합니다. 우리가 탐구할 솔루션은 바로 이것입니다.

Ollama

Ollama은 로컬에서 대규모 언어 모델을 쉽게 설정하고 실행할 수 있도록 도와주는 오픈 소스 프레임워크입니다. 지원되는 LLMs를 제공합니다. 또한 직접 만들어서 Hugging Face에 올릴 수도 있습니다.

LLM은 보통 매우 무겁기 때문에 주의해야 합니다.

그러므로, 우리는 상대적으로 가볍기 때문에 실행하기 쉬운 mistral:instruct 모델을 중점적으로 제공하는 것으로 하겠습니다.

Ollama 설정

당신의 OS에 맞게 이 지침을 따라 Ollama를 설치하세요.

MacOS에서는 터미널에서 brew install ollama을 실행하여 별도로 Homebrew를 사용할 수 있습니다.

설치한 후, 터미널에서 ollama pull mistral:instruct을 사용하여 모델을 가져오세요.

모델이 성공적으로 가져와졌다면, ollama run mistral:instruct로 실행하세요. 모델을 테스트한 후에 프로세스를 종료하세요.

이제 Ollama 서버를 사용할 수 있습니다. http://localhost:11434/를 방문하면 Ollama is running을 볼 수 있습니다. 이것은 이미 서버가 실행 중이라는 의미입니다. 그렇지 않다면 터미널에서 ollama serve를 실행할 수 있습니다. Homebrew로 설치했다면 brew services start ollama를 사용하세요.

Ollama 서빙 프레임워크는 OpenAI와 호환되는 API를 제공합니다. API 참조는 여기에서 문서화되어 있습니다. 다음은 시도해볼 수 있는 간단한 예제입니다:

curl "http://localhost:11434/api/chat" \
  --data '{
    "model": "mistral:instruct",
    "messages": [
      {
        "role": "user",
        "content": "why is the sky blue?"
      }
    ],
    "stream": false
  }'

기본적으로 이것은 포트 11434에서 실행됩니다. 다른 응용 프로그램이 해당 포트를 이미 사용하고 있어 문제가 발생한다면, 이 지침을 따르세요.