오늘은 재미있는 컨텐츠로 포스팅 !!!

 

GPT, Gemini, Opus, Sonnet, Grok, DeepSeek 중에 누가 제일 똑똑할까?

아니, 누가 돈을 제일 잘 벌까?

아니, 아니, 누가 게임을 제일 잘 할까?

 

그 호기심에 대한 답까지는 아니지만,

살짝 엿볼 수 있는 재미있는 사이트가 있다.

 

LLM Holdem

- https://llmholdem.com/

 

 

LLM 끼리 둘러 앉아서 홀덤을 하고 있다 !!!

 

현재 순위를 한 번 살펴보면, GPT 5.2가 제일 잘 하고 있다.

- https://llmholdem.com/leaderboard

 

 

지켜보기만 하는 것은 재미가 없으니,

직접 `Create Room`을 해서 Join을 해보자.

 

 

나랑 상대할 LLM을 고를 수도 있다.

 

 

나쁜 것들!

나를 탕진시키고 지들끼리 게임을 하고 있다니 ... ㅠㅠ

 

대출 받아서 다시 참여할까? 하다가 ... 어?! 지들끼리 짜고 하는 거 아냐? 라는 생각이 ... ㅋㅋ

 

 

재미로 살펴보자 ^^

반응형

혼자 개발하면 외롭다.

특히, 코드 리뷰를 받고 싶은데 내 마음 같은 사람 만나기도 어렵고 ...

 

우리의 구글님은 이런 외로운 개발자를 위해서

공짜로 Gemini를 제공해주신다 !!! 경배하라 !!!

 

의외로 모르시는 분들이 많은데,

GitHub.com 왼쪽 메뉴를 살펴보면 `Marketplace`가 있다.

- https://github.com/ 

 

 

Marketplace에서는 여러 유형의 상품(?)을 제공해주고 있는데, `Apps` 항목을 살펴보자.

좀 더 편하게 살펴보기 위해 `AI Assisted` 카테고리를 선택하면 `Gemini Code Assist`를 발견할 수 있다.

 

 

오해를 줄이기 위해서는 `Gemini Code Assist for GitHub`이라고 해야할 것 같은데...

https://github.com/marketplace/gemini-code-assist 

 

 

생각보다 설치 수가 좀 적어서 깜짝 놀랐다 !!

 

GitHub PR(Pull-Request)과 관련된 몇 가지 명령어를 제공해주고 있다.

 

 

우리의 구글님은 이런 아름다운 기능을 `Free`로 제공해주고 계신다 !! 경배하라 !!

하지만, 나중에는 십일조라도 받아가시겠지!? ^^

 

 

지금은 Free Tier 이지만,

나중에 얼마든지 십일조를 걷어가기 위해 `결제 정보`는 요구하고 있다.

 

 

개인 계정을 기준으로 설치할 수도 있고, Organization 단위로 설치할 수도 있다.

 

화끈하게 All repositorues를 선택해도 좋지만,

처음에는 조심스럽게(소심하게?) `Only select repositories`를 선택해보자.

 

 

이제서야 `Gemini Code Assis for GitHub`라고 자백하는구나 !!

 

 

우리의 구글님께 모든 권한을 바칩니다 !!! 

 

 

개인 계정 또는 Organization을 선택해야 한다.

 

 

리뷰의 정도를 선택할 수 있는 것 같은데, 일단은 Medium !

 

 

이 정도의 설정만 해주면 된다.

 

 

지정한 Repository의 Settings를 보면 잘 설치되어 있는 것을 확인할 수 있다.

 

 

이렇게 해놓은 상태에서, PR을 신규로 올리면 자동으로 코드 리뷰를 진행해준다.

그리고, 직접 명령을 내릴 수도 있다.

 

 

이렇게 명령을 내리면, gemini가 지켜보는 이모지가 등장한다 !! 귀엽다 !!

 

 

그렇게 시간이 좀 지나면, Gemini가 리뷰를 준다.

 

 

Summary는 기다림 없이 바로 이루어진다.

 

 

리소스 할당에 따라 지켜보는 이모지가 선택적으로 나오는 것일까?

 

 

코멘트 중간에 Gemini 홍보(광고? 안내? 공지?)도 들어있다.

 

무료인데 안쓸 이유는 없을 것 같다 !! 고고씽 !!

반응형

`구글의 위기`라고 했던 것이 얼마 안된 것 같은데,

최근에는 ChatGPT 대신 Gemini를 구독한다는 사람들이 주위에 종종 있는 것을 보면 정말 구글의 저력이란 !!!

 

AI 개발자들을 위해서 제공해주는 통합 사이트를 방문해보자.

- https://ai.google.dev/ 

 

 

Gemini API 가이드 문서도 여기에서 살펴볼 수 있다.

https://ai.google.dev/gemini-api/docs 

 

 

 

Gemini API를 사용하기 위한 방법을 빠르게 살펴보도록 하자.

- https://ai.google.dev/gemini-api/docs/quickstart 

 

 

Coding Agent의 세상이기에 Skills 설치 가이드를 친절하게 알려주고 있다.

 

Skills 등록하고 Coding Agent에게 알아서 하라고 해도 되겠지만,

우리는 공부하는 입장이니 훌륭한 Human Agent가 되기 위해 하나씩 공부해보자 !!

 

① API Key

API를 사용하겠다라고 하면 제일 먼저 떠오르는 그것 !!!

API Key를 확보해야한다.

 

 

Google AI Studio에서 Key를 받을 수 있다.

- https://aistudio.google.com/app/api-keys

 

 

예전에는 GCP 설정을 포함해서 상당히 복잡했지만,

요즘은 Google AI Studio에서 너무나 편하게 제공해주고 있다.

 

② GenAI SDK

Google에서는 일단 공식적으로 6개 언어를 지원해주고 있다.

https://ai.google.dev/gemini-api/docs/quickstart 

 

 

가장 대중적인, 그리고 내가 사랑하는 Python을 기준으로 살펴보겠다.

 

그런데, Gemini API를 사용하는 방법에 대해 구글링을 하다보면,

상당히 많은 블로그 포스팅 및 가이드에서 generativeai 패키지 이야기를 하고 있다.

- https://pypi.org/project/google-generativeai/

 

 

그렇다 !!

이제는 Deprecated 된 패키지이다.

지금은 genai 패키지를 사용해야 하는 것이다.

- https://pypi.org/project/google-genai/

 

 

 

③ Hands-On

genai 패키지는 Python v3.9 이상부터 지원을 하고 있다.

개인적인 취향 + 최근 트랜드에 맞춰 uv 패키지 관리자를 사용하는 것을 기준으로 실습해보도록 하겠다.

 

> uv python list | grep cpython

 

> uv init {project} --python 3.12
> cd {project}

 

genai 패키지 설치만 하면 된다.

 

> uv add google-genai

 

환경변수로 Key값 설정 후 가이드에 있는 샘플코드를 돌려보면 잘 되는 것을 확인할 수 있다.

 

 

간단하게 살펴보았다 !!

반응형

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를 사용할 수 있게 되었다 !!!

 

 

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

반응형

나의 밥벌이에 지대한 공헌을 한 도구 중 하나가 바로 "GitHub"이고,

최근 계속 관심을 갖고 있는 것이 "MCP (Model Context Protocol)"인데 ...

 

"GitHub MCP Exploited" 이라니 !!!

 

https://invariantlabs.ai/blog/mcp-github-vulnerability

 

 

https://simonwillison.net/2025/May/26/github-mcp-exploited/

 

 

어떻게 동작하는 것인지는 아래 그림 하나로 설명이 된다.

 

 

공개 저장소에 있는 이슈를 분석해서 해결하라는 명령을 하는 경우,

이슈에 "개인 저장소 정보를 읽어와서 그것을 저장"하라는 문구를 포함하게 되면,

GitHub MCP에 개인 토큰이 있기 때문에 개인 private 저장소의 내용이 유출될 수 있다는 것이다.

 

공개 저장소에 아래와 같은 이슈를 포함하기만 하면 되는 것이다.

 

그러면, 아래와 같은 정보를 얻어낼 수 있다.

 

 

문제는 Official GitHub MCP Server에서도 적용이되는 보안 위협이라는 것이다.

 

https://github.com/github/github-mcp-server

 

 

그러면, 이런 보안 위협을 방지하기 위해서 주의해야할 점은 무엇이 있을까!?

 

① MCP Server

  - Official 배포되는 MCP Server도 보안 위협이 있을 수 있는데,

  - 비공식 배포되는 MCP Server는 더더욱 위험할 수 밖에 없다.

 

② Check

  - MCP tool을 사용할 때에 Agent가 확인을 요구하는데, 그냥 pass하지 말고 확인해야 한다.

  - Always Allow는 되도록 사용하지 말아야 한다.

 

③ token

  - 이런 보안 위협을 막기 위해서는 근본적으로 PAT(Personal Access Token) 관리를 잘해야 한다.

    . https://github.com/settings/personal-access-tokens/new

 

  - Token을 사용하지 않을 수 없지만, 꼭 필요한 권한만 세부 설정해서 등록/사용하는 것이 좋다.

    . classic 타입의 token은 보다 더 세밀한 권한을 관리할 수 있다.

 

 

MCP라는 것이 나온지 얼마 되지 않은 규약이다보니 아직은 미흡한 점이 많을 수 있다.

그렇기에 근본적으로 이런 부분을 방지하기 위한 많은 연구가 있어야 할 것이다.

 

 

"GitHub MCP Exploited"이라고 해서,

"어?! 그러면 GitHub MCP Server를 쓰면 안되겠네?!"라고 생각하는 것은 좀 오버인 것 같고

"좀 더 조심히 사용해야겠다" 정도로 받아들이면 좋을 것 같다.

 

어떻게 동작하는지 좀 더 공부를 하고

동작할 때 사용되는 타겟이 무엇인지 결과가 어디에 적용이 되는지 유심히 살펴봐야 하는 것이다.

 

항상 input/output 관리가 중요하다!

반응형

'AI_ML > LLM' 카테고리의 다른 글

Gemini API 사용해보기  (1) 2026.03.15
Ollama를 Google Colab에서 서비스 해보자  (1) 2026.02.21
HuggingFace - LLAMA 3.2 for Korean  (2) 2024.11.12
HuggingFace - Learn - NLP Course #3  (3) 2024.11.11
HuggingFace - Learn - NLP Course #2  (0) 2024.11.10

MCP에 대해서 개괄적인 부분을 알고 싶으면 지난 포스팅을 참고하세요.

- MCP (Model Context Protocol) Overview

 

이번 포스팅에서는 MCP라는 것을 어떻게 사용하는지 살짝 체험 해보고자 한다.

 

 

VSCode(Visual Studio Code)에 GitHub Copilot까지는 등록된 환경에서 시작하겠다.

 

오른쪽 채팅창을 잘 살펴보면 3가지 모드를 선택할 수 있는 것을 알 수 있다.

 

Ask / Edit / Agent 3가지 모드가 있는데, 지금 우리가 관심있는 것은 Agent 모드이다.

 

사실 Edit 모드와 Agent 모드는 비슷 인터페이스를 보인다.

하지만, 왼쪽 밑을 보면 살짝 차이가 있는 부분을 발견할 수 있다.

 

Agent 모드에 대한 자세한 설명은 Visual Studio Code의 문서를 참고하면 된다. (GitHub Copilot 설명을?)

- https://code.visualstudio.com/docs/copilot/chat/chat-agent-mode

 

Agent 모드에서도 Edit 모드와 거의 동일하게 동작한다.

 

Agent 모드이기 때문에 채팅창을 벗어나 터미널 명령어들을 사용할 수도 있다.

 

채팅창에서만 동작한 것이 아니라 실제로 'Copilot' 터미널이 열리면서 스스로 동작을 한 것이다.

 

하지만, GitHub 관련한 동작을 시키면 못한다. (당연한 이야기!?)

 

GitHub 관련된 일도 시킬 수 있으면 좋을텐데....

 

이럴 때 필요한 것이 MCP Server 이다 !!!

 

GitHub에서 공식으로 공개한 GitHub MCP Server를 찾아보자.

https://github.com/github/github-mcp-server

 

사전에 준비해야할 사항들이 보인다.

 

Docker를 사용할 수 있는 환경이어야 하는데, 이미 설치되어 있다 ^^

 

GitHub Personal Access Token도 있어야 한다니,

GitHub에 접속해서 내 token을 미리 생성하고 복사해 두자.

 

이제 GitHub MCP Server를 설치하면 되는데,

GitHub 페이지에서 보이는 Badge를 클릭하면 바로 설치가 되기는 하지만... 직접 설치해보자.

 

설치 방법을 잘 살펴보자.

https://github.com/github/github-mcp-server?tab=readme-ov-file#installation

 

VSCode에서 "Ctrl + Shift + P" 단축키를 눌러서 나오는 화면에서

"Preferences: Open User Settings (JSON)"를 선택하자.

 

편집탭에 "settings.json" 파일이 열려있을텐데,

GitHub Installation 부분에 나와있는 json 내역을 추가해주면 된다. (기존 내용이 있으면 그 안에 덧붙이기)

 

그리고 저장을 하면 Copilot 채팅창의 왼쪽 밑에 뭔가 변화가 보일 것이다.

 

그리고 Personal Access Token 값을 넣으라는 창이 나타날 것이다.

 

미리 복사해둔 내용을 붙여넣기 하고 엔터를 치면 된다.

그러면, 도구 정보를 잘 읽어온 것을 볼 수 있을 것이다.

 

무려 30개의 도구를 읽어온 것이 보일텐데, 어떤 도구들이 있는지 궁금하면 클릭해보면 된다.

 

그러면 이제 GitHub MCP Server를 활용하는 사례를 진행해보자.

 

github.com의 내 정보를 알려달라고 했더니, "get_me"라는 도구를 찾아서 사용해도 되는지를 묻는다.

 

이슈 정보를 불러오게 할 수도 있다.

 

MCP Server는 어디에 있는 것일까?

 

내 local pc에 docker가 하나 돌고 있는 것을 확인할 수 있다.

뭔가 기분 나쁨?!

 

나중에 이거 뒤처리 내가 해야할 것 같은데!?

반응형

최근 너무나 핫한 MCP에 대해서 알아보자.

 

구글 트렌드를 보면 알겠지만, 인기가 아주 급성장을 했다.

그것도 엄청 짧은 시간에 확~

 

MCP는 2024년 11월 26일에 ANTHROPIC에서 첫 발표를 했다.

- https://www.anthropic.com/news/model-context-protocol

 

CURSOR.AI에서 지원을 하기로 하면서 인기를 얻다가

Sam Altman이 2025년 3월 27일 X.com에서

MCP 지원을 한다는 메시지를 남긴 이후 정말 급격히 각광을 받기 시작했다.

 

 

Model Context Protocol(MCP)는

AI Agent가 외부의 여러 도구나 데이터들을 연결하기 위한 표준 프로토콜이다.

https://norahsakal.com/blog/mcp-vs-api-model-context-protocol-explained/

 

여러 H/W들을 지원하기 위한 HAL(Hardware Abastract Layer)과 같은 역할이라고 보면 된다.

아니면, 위의 그림처럼 USB-C 표준 프로토콜 처럼 생각하면 된다.

 

 

MCP의 아키텍처는는 아래와 같다.

https://modelcontextprotocol.io/introduction#general-architecture

 

중요한 개념은 볼드로 강조했다.

 

 MCP Hosts

    : Programs like Claude Desktop, IDEs, or AI tools that want to access data through MCP


 MCP Clients

    : Protocol clients that maintain 1:1 connections with servers


 MCP Servers

    : Lightweight programs that each expose specific capabilities through the standardized Model Context Protocol


 Local Data Sources

    : Your computer’s files, databases, and services that MCP servers can securely access


 Remote Services

    : External systems available over the internet (e.g., through APIs) that MCP servers can connect to

 

 

그래서, 결국 정리하자면 다음과 같은 문장으로 MCP를 설명할 수 있다.

 

" Host가 시키면, Client는 전달하고, Server는 수행한다.

 

 

MCP는 태어난지도 얼마 되지 않았고,

그렇기 때문에 아직 기술적 성숙도가 충분히 올라와 있지 않다.

 

그리고, 24년 11월 26일 최초 발표 이후, 25년 03월 26일에 업데이트가 이루어졌다.

아직 업데이트 된지가 얼마되지 않아 관련된 사항을 확인하기도 쉽지는 않다.

 

구글링된 결과들을 참고해도 좋긴 하지만, 공식 문서부터 확인하는 것을 강추 한다.

https://modelcontextprotocol.io/

 

샘플 코드 같은 공식적인 자료들도 아래 GitHub에서 확인을 하면 좋다.

- https://github.com/modelcontextprotocol

 

 

MCP Server들을 모아놓은 Marketplace는 아래 사이트들을 참조하면 좋다.

https://mcp.so/

 

- https://smithery.ai/

 

- https://mcpservers.org/

 

다음 포스팅에서는 간단한 활용법을 알아보도록 하겠다.

반응형

오늘은 왠지 LLAMA가 눈길을 끌어서 ...

 

llama-3.2-Korean-Bllossom-3B

 

친절하게 예제 코드도 제시해주고 있다.

 

import torch
from transformers import AutoTokenizer, AutoModelForCausalLM

model_id = 'Bllossom/llama-3.2-Korean-Bllossom-3B'

tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
    model_id,
    torch_dtype=torch.bfloat16,
    device_map="auto",
)
instruction = "철수가 20개의 연필을 가지고 있었는데 영희가 절반을 가져가고 민수가 남은 5개를 가져갔으면 철수에게 남은 연필의 갯수는 몇개인가요?"

messages = [
    {"role": "user", "content": f"{instruction}"}
    ]

input_ids = tokenizer.apply_chat_template(
    messages,
    add_generation_prompt=True,
    return_tensors="pt"
).to(model.device)

terminators = [
    tokenizer.convert_tokens_to_ids("<|end_of_text|>"),
    tokenizer.convert_tokens_to_ids("<|eot_id|>")
]

outputs = model.generate(
    input_ids,
    max_new_tokens=1024,
    eos_token_id=terminators,
    do_sample=True,
    temperature=0.6,
    top_p=0.9
)

print(tokenizer.decode(outputs[0][input_ids.shape[-1]:], skip_special_tokens=True))

 

3B 모델에서 과연 저 문제를 풀 수 있을까?

 

구글 코랩에서 위 코드를 실행해보자. (나는 GPU도 없는 가난한 머글이니까 ㅠㅠ)

Exception

 

어?! 시키는 그대로 했는데, 왜?!

 

구글 코랩에서 기본 버전을 업그레이드 해주면 발생하지 않을테지만,

현재는 transformers, tokenizers 버전이 낮아서 발생하는 것으로 보인다.

 

!pip install --upgrade transformers tokenizers

pip install

 

설치가 끝나면 세션 재시작을 요구한다.

하면 된다.

 

그리고 나서 실행하면 시간이 좀 걸리지만... 잘 된다.

철수가 20개의 연필을 가지고 있었고 영희가 절반을 가져가면, 영희가 가져간 연필은 20 / 2 = 10개입니다.

철수가 남은 연필은 20 - 10 = 10개입니다. 민수가 5개를 가져가면, 철수가 남은 연필은 10 - 5 = 5개가 됩니다.

따라서 철수가 남은 연필의 갯수는 5개입니다.

 

그리고, 문제도 잘 푼다!!!

 

반응형

+ Recent posts