구글 생성형AI Gemma에 대해 알아보고 한번 사용해보자

하나둘셋·2024년 5월 16일

프로젝트에서 LLM을 사용해야 하고, 특정 데이터셋을 사용하여 추가적인 학습도 진행해야 한다.
따라서 프로젝트에 맞는 생성형 AI 오픈 모델을 선정해야 하는데 구글이 새롭게 발표한 생성형 AI Gemma에 대해 알아보기로 했다.




Gemma는 어떤 모델인가

젬마(Gemma)는 최근 구글이 발표한 새로운 인공지능 모델로 대규모 언어 모델이다.
Google이 작년에 발표했던 제미나이(Gemini)모델의 핵심 기술과 연구를 기반으로 제작된 최점단 경량 오픈 모델로, 모델은 매개변수가 20억개인 젬마 2B와 70억개인 젬마 7B이 존재한다.

젬마(Gemma)의 가장 큰 장점은 다른 오픈 LLM보다 주요 벤치마크에서 더 뛰어난 성능을 보여주고 있으며, 노트북, 데스크탑, 모바일 및 클라우드를 포함한 범용적인 디바이스에서 실행될 수 있어 폭넓게 이용 가능하다.

또한, 코랩(Colab), 캐글 노트북(Kaggle notebooks), 허깅 페이스(Hugging Face) 등 다양한 환경에서 젬마를 이용할 수 있다. 이러한 다양한 환경에서 쉽게 이용해 볼 수 있도록 가이드가 모두 존재하고, 새로운 데이터들로 파인 튜닝된 모델도 쉽게 구할 수 있다.

더 자세한 내용은 구글의 문서를 참고하길 바란다.



Gemma를 사용해보자

구글 젬마(Gemma) 가이드를 보면서 Gemma를 사용해 보았다.
KerasNLP는 TensorFlow, Jax, PyTorch에서 기본적으로 작동하는 자연어 처리 라이브러리다. 위의 가이드에서는 KerasNLP를 사용하여 Gemma를 사용해본다.

1. Gemma Setup

Gemma를 사용하기 전에 Kaggle을 통해 모델에 대한 엑세스를 요청해야 한다.
Kaggle에 로그인 후 Gemma 모델 카드에서 Request Acess를 눌러 접근 요청을 한다.





엑세스 요청 후 Gemma를 사용하기 위해 Kaggle 사용자 이름Kaggle API Key가 있어야 한다.
Kaggle 사용자 계정 👉 Settings 로 이동한 후 아래의 API 메뉴에서 Create New Token을 누르게 되면, 사용자 인증 정보가 담긴 Kaggle.json 파일이 다운로드 된다.


Kaggle.json 파일은 다음과 같은 내용이 존재한다.

{"username":"your_username","key":"012345678abcdef012345678abcdef1a"}






코랩의 런타임 유형도 설정해줘야 한다.
코랩 상단메뉴에 런타임 👉 런타임 유형 변경을 선택하고, 젬마 2B를 사용하기 위해 T4 GPU 하드웨어 가속기를 선택한다.
젬마 7B를 사용하기 위해선 A100 GPU같은 유료 프리미엄 GPU를 설정해줘야 한다.





2. 환경 변수 설정

Gemma 설정을 완료하고 colab 환경의 환경변수를 설정한다.

import os
from google.colab import userdata

# Note: `userdata.get` is a Colab API. If you're not using Colab, set the env
# vars as appropriate for your system.
os.environ["KAGGLE_USERNAME"] = userdata.get('KAGGLE_USERNAME')
os.environ["KAGGLE_KEY"] = userdata.get('KAGGLE_KEY')

위의 코드를 보면 userdata.get() 함수를 이용해 환경 변수를 설정하는 것을 볼 수 있다. 이는 코랩에서 비밀키로 지정한 값을 가져오는 역할을 한다.

코랩 보안 비밀 칸에서 Kaggle.json 파일의 정보들을 입력해 Kaggle 사용자 이름Kaggle API Key를 추가할 수 있다.

위의 그림을 보면 KAGGLE_USERNAME 이름으로 username 사용자 이름을 저장하고, KAGGLE_KEY 이름으로 API Key를 저장한 것을 볼 수 있다.





3. 필요 라이브러리 설치

Keras와 KerasNLP를 설치한다.

# Install Keras 3 last. See https://keras.io/getting_started/ for more details.
pip install -q -U keras-nlp
pip install -q -U keras>=3


이런 식으로 설치되는 것이 보이고 밑에 빨간 오류 메시지는 무시하고 지나갔다.(keras 3.3.3을 사용하기 때문에 무시해도 된다...)



4. 백엔드 설정

Keras 3는 새로운 대규모 모델 학습과 배포기능을 제공하며 tensorflow, PyTorch, Jax 중에 하나를 설정하여 사용할 수 있다.
가장 적합한 프레임워크를 선택하고 상황에 따라 프레임워크를 전환할 수 있다.

import os

os.environ["KERAS_BACKEND"] = "jax"  # Or "tensorflow" or "torch".
os.environ["XLA_PYTHON_CLIENT_MEM_FRACTION"] = "0.9"



5. 패키지와 모델 가져오기

kerasNLP은 다양한 모델 아키텍처들을 제공하고 있고, from_preset( ) 메서드를 통해서 모델을 불러올 수 있다.

import keras
import keras_nlp

gemma_lm = keras_nlp.models.GemmaCausalLM.from_preset("gemma_1.1_instruct_2b_en")


위의 목록 처럼 다양한 Gemma 모델 중 하나를 지정하면 모델을 가져올 수 있고, 처음에는 가이드에 따라 gemma_2b_en 모델을 사용했다.
gemma_2b_en 모델은 한국어에 대한 이해력이 좋지 않고, 만족할 만한 답변을 얻지 못해서 gemma_1.1_instruct_2b_en 모델을 가져와 사용해 보았다.

gemma의 다른 버전 모델로 바꿔 사용하기 위해서는 코랩의 런타임 연결을 해제 및 삭제해야 한다. gemma 모델의 용량이 크기 때문에 코랩 리소스를 초기화 시킨 후 다른 모델을 받아 올 수 있다.




summary() 메서드를 통해서 모델의 자세한 정보를 확인할 수 있다.

gemma_lm.summary()






6. 텍스트 생성하기

모델에는 프롬프트를 기반으로 텍스트를 생성하는 Generate 메서드가 있다.
Generate 메서드 파라미터로 질문을 전달할 수 있고, 선택사항인 max_length 인수는 모델이 생성할 수 있는 텍스트의 최대길이를 지정할 수 있다.

gemma_lm.generate("What is the meaning of life?", max_length=64)

결과)

What is the meaning of life?

The question is one of the most important questions in the world.

It’s the question that has been asked by philosophers, theologians, and scientists for centuries.

And it’s the question that has been asked by people who are looking for answers to their own lives




한국 여행지를 추천해달라는 질문을 해보았다.
gemma_1.1_instruct_2b_en 모델은 한국어 지원이 잘 되었고, 나름 구체적인 답변을 얻을 수 있었다.

gemma_lm.generate("한국 여행지 좀 추천해줄래?", max_length=500)

결과)

한국 여행지 추천 좀 해줄래?

**목표:** 한국 여행지 추천

**요건:**

* 관광지와 자연 경관이 풍부한 지역
* 문화적 가치가 높은 지역
* 다양한 활동과 경험 제공
* 편리한 이동 환경

**추천 지역:**

**1. 경기도:**

* 경주: 경기도의 전통 문화와 전통 음식
* 평택: 한국의 최고의 수산물 중 하나인 평택 생선의 가치
* 부산: 한국의 대표적인 해안 도시

**2. 충청도:**

* 천안: 천안의 천연 풍경과 역사적 가치
* 홍천: 한국의 최고의 농경지 중 하나인 홍천 농경지
* 제주도: 한국의 제주도는 자연 풍경과 문화적 가치가 풍부한 지역

**3. 전라도:**

* 전주: 전주는 전통 문화와 전통 음식의 가치
* 강릉: 강릉은 한국의 최고의 수산물 중 하나인 강릉 생선의 가치
* 울산: 울산은 한국의 대표적인 산악 지역


**추천 활동:**

* 관광지 방문
* 자연 경관 관찰
* 수산물 구매
* 전통 음식 경험
* 활동과 경험 제공

**추천 경험:**

* 한국의 전통 무용수 경험
* 한국의 전통 음식 경험
* 한국의 수산물 구매 경험
* 한국의 자연 경관 관찰 경험




질문을 묶어서 한꺼번에 물어볼 수 있고, 그에 대한 답변도 한번에 받을 수 있다.

gemma_lm.generate(
    ["What is the meaning of life?",
     "How does the brain work?"],
    max_length=64)

['What is the meaning of life?


The question is one of the most important questions in the world.

It’s the question that has been asked by philosophers, theologians, and scientists for centuries.

And it’s the question that has been asked by people who are looking for answers to their own lives',
 
'How does the brain work?

The brain is the most complex organ in the human body. It is responsible for controlling all of the body’s functions, including breathing, heart rate, digestion, and more. The brain is also responsible for thinking, feeling, and making decisions.

The brain is made up']
profile
하나씩 뚝딱뚝딱

0개의 댓글