반응형

2월 21일 (현지시간) 구글은 오픈 모델 "Gemma"를 공개했습니다. Gemma는 Gemini 모델을 개발하기 위해 활용된 기초 연구와 기술을 바탕으로 제작되었으며, 구글이 AI를 모두에게 유익하게 만들기 위한 지속적인 노력의 일환으로 보입니다.

Gemma의 핵심 기능

이번에 공개된 Gemma 모델은 두 가지 버전, Gemma 2B와 Gemma 7B로 제공됩니다. 각 모델은 사전 훈련된(pre-trained) 상태와 지시 조정(instruction-tuned) 상태로 제공되며, 이는 개발자들이 자신의 필요에 따라 경량 애플리케이션부터 계산량이 많은 작업까지 다양한 목적으로 최적의 모델을 선택할 수 있도록 합니다. 구글은 이를 통해 개발자들이 쉽게 접근할 수 있으며, 상업적 사용과 배포를 허용함으로써 AI 기술의 대중화를 촉진하고자 합니다.

구글에서 소개하고 있는 Gemma의 주요 특징은 아래와 같습니다.

  • 이번에 공개되는 모델은 젬마 2B와 젬마 7B 두 가지로 제공됩니다. 두 유형 모두 각각 사전 훈련(pre-trained) 및 지시 조정(instruction-tuned)된 변형(variants)과 함께 제공됩니다.
  • 새로운 책임감 있는 생성형 AI 툴킷(Responsible Generative AI Toolkit)은 젬마를 활용하여 더욱 안전한 AI 애플리케이션을 제작할 수 있도록 가이드와 필수 도구를 제공합니다.
  • 네이티브 케라스(Keras) 3.0을 통해 JAX, PyTorch, TensorFlow와 같은 주요 프레임워크에서 추론 및 지도 학습(supervised fine-tuning,SFT)을 위한 툴체인을 제공합니다.
  • 바로 이용할 수 있는 코랩(Colab)과 캐글 노트북(Kaggle notebooks)과 함께 허깅 페이스(Hugging Face), 맥스텍스트(MaxText), 엔비디아 네모(NVIDIA NeMo)와 같은 범용적인 툴들과 함께 통합 제공되어 이용자들이 젬마를 쉽게 이용할 수 있습니다.
  • 사전 훈련 및 지시 조정된 젬마 모델은 노트북, 업무용 컴퓨터 또는 구글 클라우드에서도 이용 가능하며 버텍스 AI(Vertex AI), 구글 쿠버네티스 엔진(Google Kubernetes Engine, GKE)을 이용해 쉽게 설치할 수 있습니다.
  • 다양한 AI 하드웨어 플랫폼 전반을 아우르며 최적화되어 있는 젬마는 엔비디아 GPU와 구글 클라우드 TPU 등을 포함해 업계를 선도하는 성능을 보장합니다.
  • 이용 약관을 통해 모든 규모의 기업에 책임 있는 상업적 사용 및 배포를 허용합니다.


Gemma 2B와 Gemma 7B 모델은 동일 규모의 다른 오픈 모델, LLama-2와 비교하여 최상의 성능을 제공합니다.

출처  : Google


여러 방법 중 Colab을 이용한 방법을 설명하려고 합니다.

Kaggle 계정 및 API 생성

일단 시작 전에 Kaggle 계정의 사용자 이름과 API 키가 필요합니다. Kaggle에서 제공하는 데이터셋과 API를 활용하기 위해 다음 단계를 따라 해당 정보를 얻을 수 있습니다.

Kaggle 계정 생성하기

1. Kaggle 웹사이트(https://www.kaggle.com/)에 방문합니다. 페이지 우측 상단의 'Register' 버튼을 클릭합니다.

2. 이메일로 가입하기를 선택하거나, Google, Facebook, Yahoo 계정을 이용해 가입할 수 있습니다. 필요한 정보(이름, 이메일, 비밀번호)를 입력하고 'Next'를 클릭합니다. 'Privacy and Terms' 동의함을 클릭하여 약관에 동의합니다.

3. 이메일 주소를 인증하기 위해 Kaggle에서 보낸 6자리 코드를 입력하고 'Next'를 클릭하여 계정 등록을 완료합니다.

Kaggle API 키 생성하기

1. 이미 로그인되어 있지 않다면, Kaggle 홈페이지 우측 상단의 'Sign In' 버튼을 클릭합니다. 이메일로 로그인하기를 선택하거나, Google, Facebook, Yahoo 계정을 이용해 로그인할 수 있습니다. 이메일/사용자 이름과 비밀번호를 입력하고 'Sign In'을 클릭합니다.

2. 페이지 우측 상단의 프로필 사진을 클릭합니다. 팝업 메뉴에서 'Settings' 옵션을 클릭합니다.

3. 계정 설정에서 API 섹션으로 스크롤 다운하여 'Create New API Token' 버튼을 클릭합니다. Kaggle은 kaggle.json이라는 JSON 파일을 생성하며, 이 파일을 컴퓨터에 저장하라는 메시지가 표시됩니다. kaggle.json 파일을 다운로드하고 컴퓨터의 안전한 위치에 저장합니다.

이 파일에는 Kaggle API 키와 사용자 이름이 포함되어 있습니다.

Kaggle 리소스 접근 허용

1. Keras 구현의 Gemma 모델에 접근하기 위해 먼저 Kaggle 계정의 리소스 접근 권한을 설정해야 합니다. keras/gemma 경로로 이동하여 Request Access 버튼을 클릭합니다.

2. Gemma에 접근하기 전, 이용 약관을 확인하고 'Accept' 버튼을 클릭하여 동의합니다.

3. 이제 Gemma 사용이 가능해졌습니다.


Colab에서 Gemma 수행하기

이제 Kaggle 사용자 이름과 키를 확보했으니, Colab을 통해 Gemma를 실행해보겠습니다. 아래 URL을 통해 Colab에 접속합니다.
Google Colab

작업을 시작하기 전에, 먼저 Google Colab의 런타임을 GPU로 변경해야 합니다. 이는 Gemma 모델과 같은 머신러닝 작업을 수행하기 위해 필요한 고성능 컴퓨팅 자원을 확보하기 위함입니다. Google Colab 상단 메뉴에서 '런타임' > '런타임 유형 변경'을 선택합니다. '하드웨어 가속기' 메뉴에서 'GPU'를 선택하고 저장합니다.

환경 변수 설정하기

KAGGLE_USERNAME과 KAGGLE_KEY에 대한 환경 변수를 설정합니다. 조금 전에 얻은 Kaggle의 username과 key를 입력합니다.

import os
from google.colab import userdata

os.environ["KAGGLE_USERNAME"] = 'YOUR KAGGLE USERNAME'
os.environ["KAGGLE_KEY"] = 'YOUR KAGGLE KEY'

의존성 설치하기

Keras와 KerasNLP를 설치합니다.

!pip install -q -U keras-nlp
!pip install -q -U keras>=3

패키지 가져오기

Keras와 KerasNLP를 가져옵니다.

import keras
import keras_nlp

백엔드 선택하기

Keras는 단순함과 사용 용이성을 위해 설계된 고수준, 다중 프레임워크 딥러닝 API입니다. Keras 3에서는 TensorFlow, JAX, 또는 PyTorch 중 백엔드를 선택할 수 있습니다. 이 튜토리얼에서는 세 가지 모두 사용할 수 있습니다. 여기서는 JAX을 선택하도록 하겠습니다.

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

모델 생성하기

KerasNLP는 많은 인기 있는 모델 구조의 구현을 제공합니다. 이 튜토리얼에서는 GemmaCausalLM을 사용하여 모델을 생성할 것입니다. GemmaCausalLM은 인과적 언어 모델링을 위한 종단 간 Gemma 모델로, 이전 토큰을 기반으로 다음 토큰을 예측합니다.

from_preset은 사전 설정된 구조와 가중치로 모델을 인스턴스화합니다. 위 코드에서 "gemma_2b_en" 문자열은 20억 개의 매개변수를 가진 Gemma 모델의 사전 설정 구조를 지정합니다. (70억 개의 매개변수를 가진 Gemma 모델도 사용할 수 있습니다. Colab에서 더 큰 모델을 실행하려면 유료 플랜에서 제공하는 프리미엄 GPU에 접근해야 합니다. 대안으로, Kaggle이나 Google Cloud에서 Gemma 7B 모델에 대한 분산 튜닝을 수행할 수 있습니다.)

gemma_lm = keras_nlp.models.GemmaCausalLM.from_preset("gemma_2b_en")
더보기

"You don't have permission to access resource at URL: https://www.kaggle.com/models/keras/gemma/frameworks/keras/variations/gemma_2b_en/versions/2
Please make sure you are authenticated if you are trying to access a private resource or a resource requiring consent." 메시지 발생 시 Kaggle 리소스 접근 허용을 하지 않은 것이니 위에 내용을 참고하여 접을 허용하시기 바랍니다.

요약에서 볼 수 있듯이, 모델은 25억 개의 학습 가능한 매개변수를 가지고 있습니다.

gemma_lm.summary()

텍스트 생성

이제 텍스트를 생성할 시간입니다! 모델에는 프롬프트를 기반으로 텍스트를 생성하는 generate 메소드가 있습니다. 선택적인 max_length 인자는 생성된 시퀀스의 최대 길이를 지정합니다.

"What is the meaning of life?"라는 프롬프트를 사용해 시도해 보겠습니다.

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

 

JAX 또는 TensorFlow 백엔드에서 실행하고 있다면, 두 번째 generate 호출이 거의 즉시 반환된다는 것을 알게 될 것입니다. 이는 주어진 배치 크기와 max_length에 대한 각 generate 호출이 XLA와 함께 컴파일되기 때문입니다. 첫 번째 실행은 비용이 많이 들지만, 이후의 실행은 훨씬 더 빠릅니다.

입력으로 리스트를 사용할 수 있습니다.

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

답변은 다음과 같습니다.

['What is the meaning of life?\n\nThe question is one of the most important questions in the world.\n\nIt’s the question that has been asked by philosophers, theologians, and scientists for centuries.\n\nAnd it’s the question that has been asked by people who are looking for answers to their own lives',
 'How does the brain work?\n\nThe 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.\n\nThe brain is made up']

현재 gemma_2b_en 모델은 이름에서 알 수 있듯이 영어 버전으로 제공됩니다. 따라서 한국어 지원에 대해 문의하면, 이 모델은 한국어를 직접 처리할 수 없다는 답변을 받게 됩니다.

gemma_lm.generate("한국어 할 수 있어?", max_length=64)

따라서 한국어 지원에 대해 문의하면, 이 모델은 한국어를 직접 처리할 수 없다는 답변을 받게 됩니다.

I'm not sure if I'm doing this right, but I'm trying to learn Korean. I'm not sure if I'm doing this right, but I'm trying to learn Korean. I'm not sure if I'm doing this right

이번 튜토리얼을 통해 Google Colab을 활용하여 Gemma 모델을 사용하는 방법을 살펴보았습니다. 지금까지의 예시는 Colab을 사용한 경우를 다루었지만, Kaggle, Hugging Face, MaxText 등 다른 플랫폼에서도 Gemma 모델을 활용하는 것이 가능합니다. 개발자와 연구자들에게 더욱 폭넓은 AI 애플리케이션 개발의 기회를 제공하며, 혁신적인 솔루션을 창출할 수 있는 길을 열어줍니다. 앞으로 Gemma 모델을 활용한 다양한 프로젝트와 연구가 어떻게 진행될지 기대가 됩니다.

반응형