Local LLM을 직접 띄워서 공부하려는데,

GPU를 갖고 있지 않다고 시작도 하기 전에 포기하는 분들이 의외로 많은 것 같다.

 

사실 인내심만 충분히 있다면 CPU로도 맛보기는 가능한데도 이를 모르는 경우도 많은 것 같고,

 

또 하나! 우리의 구글님께서는 아름다운 Colab을 무료로 제공해주고 있기에

이를 이용하면 어지간한 그래픽카드에서도 어려운 모델들을 이용할 수 있게 된다.

 

[ Gemma ]

이번에 사용해볼 모델은 구글님이 우리에게 은혜를 내려주신 Gemma 이다.

https://deepmind.google/models/gemma/

 

 

구글님이 상업적으로도 사용할 수 있도록 `open-weights`로 공개해준 모델로써,

그다지 많은 인기가 높지는 않지만 구글님이 꾸준히 신경써주셔서 성능도 어지간히 나오는 괜찮은 모델이다.

 

다양한 유형의 다양한 크기 모델을 제공해주기 때문에, 상황에 맞게 골라서 사용하면 된다.

- https://ai.google.dev/gemma/docs/get_started?hl=ko

 

 

다만, 상업용으로도 사용할 수 있는 괜찮은 라이선스 조건이지만

일반적인 라이선스 유형은 아니고 'Gemma License'라는 특화된 라이선스이기에 주의를 하기는 해야 한다.

 

[ Ollama ]

LLM 모델을 serving하기 위해서는 사실 공부해야할 것도 많고,

 vLLM이나 SGLang같은 솔루션들을 살펴보고 이를 실행해야하는 등 어려움이 많다.

 

하지만, Local LLM을 사용하는 사람들을 위해 은혜로운 솔루션이 등장했으니,

그것이 바로 Ollama이다 !!! 그것도 MIT 라이선스로 !!!

https://ollama.com/

 

 

사용법은 더 이상 쉬운 방법이 없을 정도이다.

홈페이지에서의 가이드도 너무나 깔끔하다.

https://ollama.com/library/gemma3:12b 

 

 

[ Ollama on Colab ]

Colab에서 GPU 리소스를 사용하도록 하자.

https://colab.research.google.com/

 

 

Ollama 설치를 위해서 기본적인 패키지들을 미리 설치해주자.

!sudo apt-get install zstd lshw

 

 

Ollama 설치 자체는 너무나 쉽다.

!curl -fsSL https://ollama.com/install.sh | sh

 

 

서비스 실행은 직접 해줘야 한다.

!nohup ollama serve > ollama.log 2>&1 &

 

 

실제 실행에는 소요시간이 조금 필요하다. 2~3초 정도!?

 

여기까지만 하면 기본적인 준비는 끝이다 !!! 너무 쉽지 않은가!?

 

이제 다양한 활용 방법을 알아보자.

 

 

[ Ollama CLI ]

Gemma3 12B 모델을 이용해서 질문을 해보자.

!ollama run gemma3:12b "한국의 수도는 어디야?"

 

 

잘 대답을 하기는 하는데, 첫 실행에는 3분 정도 소요가 된다.

Gemma3 12B 모델을 다운로드 받는 것에 시간이 걸리는 것이다.

 

다시 같은 질문을 해보자.

!ollama run gemma3:12b "동탄이 어디인지 알아?"

 

 

이번에는 13초 정도만에 답변을 해준다.

 

간단한 Local LLM 사용 ... 정말 쉽지 않은가?!

 

 

[ with Python ]

Python으로 LLM을 이용하도록 해보자.

 

그렇게 하기 위해서는 우선 필요한 Local LLM 다운로드를 먼저 해야한다.

!ollama list
!ollama pull gemma3:12b

 

 

`ollama list`를 이용해서 필요한 모델이 있는지 먼저 확인을 해보고

없으면 pull을 이용해 다운로드를 받으면 된다.

 

다운로드를 받았다면 이렇게 확인이 된다.

 

 

Python을 이용해서 ollama 활용을 하기 위해서는 패키지 설치가 필요하다.

!pip install ollama

 

 

이제 준비는 모두 끝났다.

코딩을 해보자.

import ollama 

try : 
    response = ollama.generate( 
        model= "gemma3:12b" , 
        prompt= "대한민국의 제2의 수도는 어디인가요?"
     ) 
    print (response[ "response" ]) 

except Exception as e: 
    print ( f"오류가 발생했습니다: {e} " )

 

 

순차적으로 문장을 생성하는 LLM 특성을 반영해서

stream 방식으로 처리하도록 해보자.

import ollama 

try : 
    client = ollama.Client() 
    stream = client.generate( 
        model= "gemma3:12b" , 
        prompt= "대한민국의 제3의 수도는 어디인가요?" ,
        stream= True
     ) 

    print ( "Stream:" ) 
    for chunk in stream: 
        print (chunk[ 'response' ], end= '' , flush= True ) 
    print ()

except Exception as e: 
    print ( f"스트리밍 중 오류가 발생했습니다: {e} " )

 

 

 

[ REST API ]

Ollama는 실제로 REST API 방식으로 서빙이 된다.

그렇기에 `curl`을 통해서도 접근을 할 수가 있다.

!curl http://localhost:11434/api/generate -d '{ \
  "model": "gemma3:12b", \
  "prompt":"경기도의 대표 도시는 어디야?" \
}'

 

 

generate 방식 말고 chat 방식도 지원을 해준다.

!curl http://localhost:11434/api/chat -d '{ \
  "model": "gemma3:12b", \
  "messages": [ \
    { "role": "user", "content": "경기도의 대표 도시는?" } \
  ] \
}'

 

 

어!? 그렇다면,

Colab으로 서비스를 띄워놓고 내 PC에서 원격으로 사용할 수는 없을까!?

 

있다!!!! 가능하다!!!

 

 

[ ngrok ]

Colab에서 띄워놓은 서비스를 외부에서 접근할 수 있도록 하기 위해서

명시적인 주소를 하나 할당해주는 것이 필요하다.

- https://ngrok.com/

 

 

가입만 하면 무료로 사용할 수 있는 아주 아름다운 서비스이다.

하지만, 당연하게도 token 발급을 해야한다 ^^

https://dashboard.ngrok.com/get-started/your-authtoken

 

 

Colab에 어떻게 설치를 하면 좋을까!?

ngrok은 아주 친절하게 다양한 설치 방법을 제공해준다.

우리는 Download 방식으로 해보겠다.

https://ngrok.com/download/linux?tab=download

 

 

파일을 다운로드 받을 수 있는 주소를 먼저 확보해보자.

 

 

이제 Colab에서 설치를 진행하면 된다.

!wget <URL>

!tar -xvzf ngrok-v3-stable-linux-amd64.tgz ngrok

!./ngrok config add-authtoken <TOKEN>

!ollama serve & ./ngrok http 11434 --host-header="localhost:11434" --log stdout & sleep 5s && ollama run gemma3:12b

 

 

ngrok을 실행하면 URL 주소를 하나 알려준다. 메모하자.

 

 

 

[ Remote Connect with Python ]

집에 있는 내 PC에서 접근해보기 위해서 일단 Python 실행 환경을 확보하자.

최근 유행에 맞춰 `uv`를 이용해 보도록 하겠다.

> uv init gemma --python 3.12

> cd gemma

> uv add langchain_ollama

 

 

소스 코드는 단순하다.

from langchain_ollama import ChatOllama

model = ChatOllama(
       model="gemma3:12b",
       temperature=0,
       base_url="URL"
       )

response = model.invoke("대한민국의 수도는 어디야?")
print(response)

 

 

너무나 잘 된다 !!!

 

이제는 Colab에 나만의 LLM Server를 두고, 마음껏 LLM API를 사용할 수 있게 되었다 !!!

 

 

가난한 개발자의 몸부림은 계속 됩니다 !!! ^^

반응형

Google Colab을 사용하려면

Chrome 같은 브라우저를 실행하고 https://colab.research.google.com/ 사이트에 방문해야만 한다.

 

그런데, Colab을 그냥 내 PC에 설치된 VS Code에서 바로 사용할 수 있다면 얼마나 편하고 좋을까 ?!

그 방법을 알아보자 !!!

 

[ Google Colab is Coming to VS Code ]

25년 11월 13일에 구글에서는 새로운 VS Code Extexsion을 공개했다.

- https://developers.googleblog.com/en/google-colab-is-coming-to-vs-code/

 

 

귀염뽀짝한 하트가 눈길을 붙잡네!? 😅

 

구글에서 공식 배포하고 있으면서 별이 4.5개나 되는 괜찮은 평가를 받고 있는 extension 이다.

https://marketplace.visualstudio.com/items?itemName=Google.colab

 

 

공개 발표만 하고 버려둔 프로젝트가 아니라

아직 상당히 활발하게 계속 기능 추가 등 개발이 이루어지고 있다.

 

[ Install ]

VS Code가 설치되어 있다면, 편하게 extension을 설치할 수 있다.

Marketplace에서 `colab` 검색해서 설치하면 끝이다.

 

 

Jupyter Notebook 파일 하나 만들어서 불러오면 바로 살펴볼 수 있다.

 

 

그런데, 바로 사용할 수 있는 것은 아니고

어떤 kernel을 사용할 것인지 선택을 먼저 해야 한다.

 

kernel이 뭐냐면 작성한 코드를 실행해주는 환경을 의미한다.

 

[ Kernel - Local ]

먼저, 내 PC에 설치된 kernel로 선택하는 것에 대해서 알아보자.

 

`Select Kernel`을 선택하면 나오는 메뉴에서 `Python Environments…` 항목을 선택하자.

 

 

`Create Python Environment` 항목을 선택하면 새로운 Python 가상환경을 구성하도록 해주지만,

지금은 일단 전역 환경(Global Environment)으로 되어 있는 Python을 선택하자.

 

 

Colab 환경에서는 ipykernel 패키지가 필요하다.

 

 

이렇게 하면 로컬 환경에서 Colab 인터페이스를 사용할 수 있게 되지만,

사실 우리가 원하는 것은 로컬 환경이 아니라 구글의 Colab 환경을 사용하려는 것이니... 😍

 

[ Kernel - Colab(CPU) ]

kernel 부분을 클릭하면 다시 Kernel을 선택하는 메뉴가 나온다.

`Select Another Kernel...` 항목을 선택하자.

 

 

`Colab`을 선택해보자.

 

 

`Auto Connect`를 선택해보자.

 

 

Colab 인증이 필요하기에 많은 팝업창들이 뜰 것이다. 진행하면 된다.

 

 

인증 및 권한 허용을 모두 마쳤으면, `Python 3(ipykernel)`을 선택하자.

 

 

지금 내가 선택한 것이 Colab 것인지 의심이 간다면,

kernel 부분을 선택하면 확인 된다.

 

 

어?! 그런데 사실 Colab을 사용하는 중요한 이유 중의 하나는 GPU를 사용해보기 위해서인데 ...

 

 

지금 환경은 CPU 환경인 것이다 !!!

 

[ Kernel - Colab(GPU) ]

GPU를 사용할 수 있는 Kernel로 바꿔보자.

Kernel 부분을 클릭 후 `Select Another Kernel...` 항목을 선택하자.

 

 

`Colab`을 선택

 

 

이번에는 `New Colab Server` 항목을 선택해야 한다.

 

 

`GPU - T4`를 차례대로 선택하면 된다.

 

 

이렇게 만들고 있는 server의 별칭을 지어주면 된다. 귀찮으면 그냥 바로 엔터 !

 

 

이렇게 만들어진 GPU server의 kernel을 선택해주면 된다.

 

 

`!nvidia-smi` 실행해보면 GPU가 붙어 있는 리소스임을 알 수 있다.

 

 

이제, 마음껏 GPU 가지고 놀면 된다 !!!

 

[ File in Colab ]

그런데, 가지고 놀던 중 이상한(?) 상황을 만나게 되었다.

 

Notebook이 있는 디렉토리에 같이 있는 파일을 인식을 못하는 것이다.

 

 

Notebook 파일이나 텍스트 파일은 현재 로컬에 위치하고 있지만

코드를 실행하고 있는 kernel은 원격에 있는 Colab의 것을 사용하고 있기에 맞지 않는 것이다.

 

[ Settings of Colab extension ]

Colab extension의 Settings 항목을 살펴보자.

 

 

아직 한창 개발 중이라서 그런 것인지 대부분의 옵션이 Experimental 항목이다.

 

 

Terminal, Uploading 항목을 활성화 하자.

 

[ Uploading ]

직관적이다 !

로컬에 있는 파일에 오른쪽 버튼 메뉴를 살펴보면, `Upload to Colab` 항목이 있다. 선택 !

 

 

이제는 정상 동작 한다.

 

 

정말 파일이 있는지 확인해보자.

 

 

기본 파일 위치는 `/content` 디렉토리 밑이다.

업로드 잘 되어 있는 것이 보인다.

 

[ Terminal ]

Colab에 있는 server의 terminal에 접근해보자.

상단에 있는 메뉴 버튼 중 가운데에 있는 `Colab`을 선택해보자.

 

 

팝업으로 나오는 메뉴 중 `Open Terminal` 항목을 선택해보자.

 

 

서버가 한 대 생겨버렸다 !!!

 

 

정말 괜찮은 extension을 하나 찾은 것 같다.

회사에서도 사용할 수 있으면 좋겠는데 ... 집에서라도 잘 갖고 놀아야겠다.

반응형

+ Recent posts