가이드/Ollama의 메모리 과다 사용

Mac에서 Ollama가 메모리를 너무 많이 쓰나요? 로드된 모델을 확인하고 언로드하는 방법

Atta 🐬

Vitals 창립자

게시일

간단한 답

Ollama는 다음 질문에 빨리 답할 수 있도록 마지막 답변 뒤 5분 동안 모델을 메모리에 유지합니다. 그래서 사용을 멈춘 뒤에도 몇 기가바이트를 붙잡고 있습니다. ollama ps를 실행하면 어떤 모델이 로드되어 있고 각각 언제 언로드되는지 볼 수 있으며, ollama stop 뒤에 모델 이름을 붙이면 바로 언로드합니다. 모델이 쓰는 메모리는 모델의 크기와 실행할 때의 컨텍스트 길이에 따라 달라집니다. Mac용 시스템 모니터인 Vitals는 Ollama의 메모리, 그래픽 칩의 부하, Mac의 메모리 압력을 메뉴 막대에 보여 줍니다.

Ollama의 메모리를 확인하고 확보하는 방법

  1. 01 터미널에서 ollama ps를 실행합니다. 각 행은 메모리에 있는 모델이며, 크기, 그래픽 칩에서 실행되는지 여부, 언로드될 때까지 남은 시간이 함께 나옵니다.
  2. 02 바로 언로드하려면 ollama stop 뒤에 모델 이름을 붙입니다. 예를 들면 ollama stop llama3.2입니다. 메모리는 1~2초 안에 돌아옵니다.
  3. 03 활성 상태 보기를 열고 메모리를 클릭한 다음 하단의 메모리 압력을 봅니다. 녹색이면 모델이 메모리에 맞는 것입니다. 모델이 로드된 동안 노란색이나 빨간색이면, 열려 있는 다른 것에 비해 모델이 너무 큰 것입니다.
  4. 04 모델이 더 빨리 언로드되게 하려면 유지 시간을 설정합니다. 터미널에서 launchctl setenv OLLAMA_KEEP_ALIVE 1m를 실행한 다음, 메뉴 막대 아이콘에서 Ollama를 종료하고 다시 엽니다.
  5. 05 모델이 로드될 때마다 Mac의 메모리가 부족하다면, 더 작은 모델이나 같은 모델의 더 작은 버전을 쓰세요. ollama list를 실행하면 갖고 있는 모델과 크기가 나옵니다.

유지 시간(keep-alive)이 0이면 모델이 답하자마자 언로드되고, -1이면 직접 중단할 때까지 로드된 채로 있습니다. Ollama와 통신하는 앱은 요청마다 자체 값을 지정할 수 있어서, 모델이 설정한 것보다 오래 남아 있을 때가 있습니다.

자신의 Mac에서 모델을 실행한다는 것은 모델 전체를 한꺼번에 메모리에 올려 둔다는 뜻입니다. Apple silicon Mac은 프로세서와 그래픽 칩이 하나의 메모리를 함께 쓰므로, 다른 곳에서는 전용 그래픽 카드가 필요한 모델도 들어가지만, 앱이 쓰는 것과 같은 메모리에서 나갑니다. 16GB Mac에서 8GB 모델을 쓰면 나머지 모든 것에 8GB가 남습니다. Ollama가 그만큼 붙잡고 있다고 해서 메모리가 새는 것은 아닙니다. 모델을 담고 있는 것입니다. 아래 표는 그 수치를 정하는 요인을 보여 줍니다.

Ollama의 메모리를 정하는 것

보이는 것이유할 일
채팅을 멈춘 뒤에도 몇 GB를 붙잡고 있음 모델이 5분 동안 로드된 채로 있음 ollama stop, 또는 유지 시간 줄이기
모델 파일 크기보다 메모리를 더 많이 씀 실행할 때의 컨텍스트에도 메모리가 필요함 컨텍스트 길이 줄이기
모델 두 개가 동시에 메모리에 있음 첫 번째 모델이 언로드되기 전에 두 번째 모델을 요청함 ollama ps로 확인한 다음 쓰지 않는 모델 중단하기
메모리 압력이 노란색이나 빨간색이고 Mac이 느림 남은 메모리에 비해 모델이 너무 큼 더 작은 모델을 쓰거나 다른 앱 닫기
답이 느리고 CPU가 바쁨 모델의 일부가 그래픽 칩에 들어가지 못함 ollama ps로 어떻게 나뉘었는지 확인하고, 더 작은 모델 쓰기

Ollama가 모델을 로드된 채로 두는 이유

모델을 로드한다는 것은 디스크에서 몇 기가바이트를 메모리로 읽어 들인다는 뜻이며, 몇 초에서 1분이 걸립니다. 질문마다 그렇게 하면 모든 답이 느려지므로, Ollama는 마지막으로 쓴 뒤 5분 동안 모델을 유지하고 그 뒤에 언로드합니다. 새 질문이 올 때마다 시간이 다시 시작됩니다. 편집기의 자동 완성처럼 Mac의 어떤 앱이 몇 분마다 모델에 무언가를 묻는다면 모델은 언로드되지 않습니다.

이 설정의 이름은 keep-alive입니다. OLLAMA_KEEP_ALIVE는 모든 모델의 기본값을 바꿉니다. 값을 0으로 하면 메모리를 바로 돌려받는 대신 매번 첫 답이 느려집니다.

모델에 필요한 메모리

대체로 필요한 메모리는 모델 파일의 크기에 대화를 위한 공간을 더한 만큼입니다. 매개변수가 80억 개인 모델은 일반적인 압축 수준에서 약 5GB이고, 300억 개인 모델은 약 20GB입니다. ollama list에 나오는 디스크상의 크기가 좋은 첫 추정치입니다.

사람들이 놓치는 부분은 컨텍스트 길이입니다. 모델이 한 번에 염두에 둘 수 있는 텍스트의 양이며, 채우든 채우지 않든 모델이 로드될 때 그만큼의 메모리가 따로 잡힙니다. 작은 모델에 긴 컨텍스트를 쓰면 모델 자체보다 더 많이 쓸 수 있습니다. ollama ps에 나오는 크기가 파일 크기보다 훨씬 크다면 컨텍스트 때문입니다.

모델이 내 Mac에 맞나요?

정직한 확인 방법은 모델을 로드하고 평소 쓰는 앱을 연 상태에서 메모리 압력을 보는 것입니다. 녹색이면 맞는 것입니다. 노란색이면 macOS가 공간을 만들려고 메모리를 압축하고 있으며, 조금 느려집니다. 빨간색이면 디스크로 스왑하고 있으며, 모델과 Mac 모두 느려집니다. 그래픽 칩에 다 들어가지 못해 일부가 프로세서에서 실행되는 모델도 훨씬 느립니다. ollama ps를 실행하면 어떻게 나뉘었는지 나옵니다.

같은 모델의 더 작은 버전은 대개 품질은 조금만 떨어지고 메모리는 훨씬 덜 씁니다. 16GB Mac에서는 약 8GB까지의 모델이 작업할 여유를 남겨 줍니다. Mac이 메모리를 어떻게 함께 쓰는지는 통합 메모리를 참고하세요.

LM Studio와 다른 앱

모델을 로컬에서 실행하는 앱이라면 모두 마찬가지입니다. LM Studio는 꺼내거나(eject) 유휴 시간이 다할 때까지 모델을 로드된 채로 두며, 윈도우 상단에 로드된 모델을 보여 줍니다. 모델을 대신 실행해 주는 편집기와 채팅 앱도 보이지 않는 곳에서 똑같이 합니다. 어떤 앱이 붙잡고 있든 그 메모리는 모델입니다.

Vitals가 더해 주는 것

Vitals는 로드된 모델이 Mac의 자원을 얼마나 쓰는지, 작업하면서 볼 수 있는 곳에 보여 줍니다.

  • Ollama의 메모리를 도우미 프로세스까지 합산해 한 행으로 표시
  • 메뉴 막대에 메모리 압력과 여유 메모리를 표시하므로, 모델이 맞는지 바로 알 수 있음
  • 그래픽 칩의 부하를 메뉴 막대와 전용 탭에, 그래픽 칩을 쓰는 앱과 함께 표시
  • 앱의 메모리가 계속 늘 때 보내는 알림
  • 어떤 앱이 에너지를 가장 많이 썼는지 시간 단위로 표시. 모델 실행은 Mac이 배터리로 하는 일 중 가장 무거운 편에 속함

알아 두면 좋은 점

  • Vitals는 Ollama가 붙잡고 있는 메모리를 보여 주지만, 어떤 모델이 로드되어 있는지는 보여 주지 않습니다. 그것은 ollama ps로 볼 수 있습니다.
  • Vitals는 모델을 언로드하지 않습니다. ollama stop로 언로드합니다.
Vitals 구입 $9 출시 할인 기간 $9, 이후 $29. 14일 이내 환불.

자주 묻는 질문

Ollama가 메모리를 많이 쓰는 이유는?

모델을 메모리에 담고 있기 때문입니다. 모델은 마지막 답변 뒤 5분 동안 로드된 채로 있습니다. ollama ps를 실행해 무엇이 로드되어 있는지 확인하고, ollama stop에 모델 이름을 붙여 언로드하세요.

Ollama에서 모델을 언로드하려면 어떻게 하나요?

ollama stop 뒤에 모델 이름을 붙여 실행하세요. 모델이 저절로 더 빨리 언로드되게 하려면 OLLAMA_KEEP_ALIVE를 더 짧은 시간으로 설정하세요.

Mac에서 Ollama가 모델을 로드된 채로 두는 시간은 어떻게 바꾸나요?

터미널에서 원하는 시간을 넣어 launchctl setenv OLLAMA_KEEP_ALIVE 1m를 실행한 다음 Ollama를 종료하고 다시 여세요. 0은 바로 언로드하고, -1은 모델을 계속 로드된 채로 둡니다.

Ollama로 모델을 실행하려면 메모리가 얼마나 필요한가요?

대략 모델 파일의 크기에 컨텍스트를 위한 공간을 더한 만큼입니다. 16GB Mac에서는 약 8GB까지의 모델이 다른 앱을 쓸 여유를 남겨 줍니다.

Ollama가 모델 크기보다 메모리를 더 많이 쓰는 이유는?

컨텍스트 길이만큼의 메모리가 모델이 로드될 때 따로 잡힙니다. 긴 컨텍스트는 몇 기가바이트를 더할 수 있습니다. 필요하지 않다면 더 작은 컨텍스트로 모델을 실행하세요.

Ollama는 쓰지 않을 때도 메모리를 쓰나요?

마지막 답변 뒤 5분 동안만 씁니다. 다만 어떤 앱이 계속 무언가를 묻거나 유지 시간을 더 길게 설정했다면 다릅니다. 그 뒤에는 모델이 언로드되고 Ollama는 메모리를 거의 쓰지 않습니다.

로컬 모델이 내 Mac의 메모리에 맞는지 보여 주는 앱이 있나요?

Vitals는 메모리 압력, 여유 메모리, 그래픽 칩의 부하를 메뉴 막대에 보여 주므로, 로드된 모델이 자원을 얼마나 쓰는지 작업하면서 볼 수 있습니다.

용어집에서 보기

다른 가이드