catch-img

【LLM】Google Gemmaとは?使い方・性能・商用利用について解説

Gemmaは、Googleが公開した軽量かつ高性能なLLMで、商用利用可能なオープンモデルです。

この記事では、Gemmaの使い方から性能・安全性・商用利用まで紹介しています。


目次[非表示]

  1. 1.Gemmaとは
  2. 2.Gemmaの性能
  3. 3.オープンモデル・商用利用
  4. 4.安全性・ローカルで使える
  5. 5.モデルの種類
  6. 6.Gemmaのモデル申請
  7. 7.Gemmaを使ったテキスト生成(推論)
  8. 8.Jupyter Labを起動
  9. 9.ライブラリのインストール
  10. 10.モデルの設定
  11. 11.生成タスク1
    1. 11.1.プロンプトの実行
    2. 11.2.生成結果
    3. 11.3.日本語訳
  12. 12.生成タスク2
    1. 12.1.プロンプトの実行
    2. 12.2.生成結果
    3. 12.3.日本語翻訳
  13. 13.生成タスク3
    1. 13.1.プロンプトの実行
    2. 13.2.生成結果
  14. 14.LLMならGPUクラウド
  15. 15.まとめ


Gemmaとは

Gemmaは、Googleが公開したGeminiと同じ技術を活用した軽量なLLMモデルで、ローカルPCの環境でも動かすことができます。

Gemmaの性能は、MetaのLlama2など同規模のモデルを上回ると言われています。学習データから特定の個人情報や機密データを除外しており、安全性の高さも誇ります。

またGemmaはオープンモデルとして公開されており、利用規約に同意をすれば商用利用が可能です。

gemma


Gemmaの性能

Googleのレポートによると、Gemma(7B)が他のモデルと比較して、質疑応答、推論、数学・科学、コーディングの分野において優れたベンチマークを記録しています。

比較したLlama2のパラメータサイズが13Bに対して、Gemmaのパラメータサイズは7Bであることから、Gemmaは軽量で性能が高いことがわかります。

gemma_inference


オープンモデル・商用利用

Googleは、Gemmaは完全なオープンソースとしてではなく、オープンモデルとして公開しています。Googleの利用規約に同意をすれば商用利用が可能です。

オープンモデルでは、モデルの重みと事前訓練済みパラメータを利用できますが、実際のソースコードや訓練データにはアクセスできないと言われています。

またGoogleが掲げる「安全で責任ある開発」を保証するために、「利用規約」と「使用禁止ポリシー」の中で細かく禁止項目を設けています。性的、違法、詐欺的、暴力的、憎悪を助長するコンテンツ、なりすましなど、生成AIで悪用が懸念される使い方を禁止しています。


安全性・ローカルで使える

Gemmaは、安全性を重視して設計されており、データセットから特定の個人情報や機密事項などセンシティブなデータを自動的にフィルタリングする技術があります。

Gemmaの事前訓練モデルを安全かつ信頼できるものにするために、広範なファインチューニングと人間のフィードバックによる強化学習(RLHF)などを利用しています。

GemmaはローカルPCでも使用することができ、入力するデータを外部に学習されるリスクもありません。


モデルの種類

Gemmaのモデルには、20億パラメータの「Gemma 2B」と70億パラメータの「Gemma 7B」があります。

それぞれに事前学習済みのbase modelと人間の指示に基づいた回答をするためのinstruction modelが用意されています。

パラメータサイズが大きいほどGPUメモリとストレージの容量が必要になります。

model_id

パラメータサイズ

タイプ

GPUメモリ(VRAM)使用量
ストレージ使用量
推論に使用したGPU
google/gemma-2b

20億

base model

5.2GB
4.9GB
NVIDIA A4000 16GB x1
google/gemma-2b-it

20億

instruct
model
5.2GB
4.9GB
NVIDIA A4000 16GB x1
google/gemma-7b

70億

base model

17GB
16.8GB
NVIDIA A100 80GB x 1
google/gemma-7b-it

70億

instruct
model
17GB
17GB
NVIDIA A100 80GB x 1


Gemmaのモデル申請

Gemmaのモデルを使うためには利用申請が必要になります。

Gemmaの利用申請の方法は、以下の記事で詳しく解説しています。


  【LLM】Google Gemmaのモデル利用申請 この記事では、Gemmaのモデルを使用するための利用申請について解説しています。 業界最安級GPUクラウド | GPUSOROBAN


Gemmaを使ったテキスト生成(推論)

この記事では、Gemmaを使ったテキスト生成(推論)を行います。

実行環境はGPUクラウドサービス(GPUSOROBAN)を使用しました。

  • インスタンス名:t80-1-a-standard-ubs22-i
  • GPU:NVIDIA A100 80GB x 1
  • OS :Ubuntu 22.04
  • CUDA:11.7
  • Jupyter Labプリインストール


GPUSOROBANはメガクラウドの50%以上安いGPUクラウドサービスです。 GPUSOROBANの使い方は以下の記事で解説しています。


  会員登録~インスタンス接続手順 | GPUSOROBAN GPUSOROBANの会員登録からインスタンス作成・接続までの手順を詳しく解説する記事です。会員登録、電話番号認証、SSHキー作成、インスタンスの作成、キーの設置、ターミナルからのインスタンス接続までの流れを説明しています。 業界最安級GPUクラウド | GPUSOROBAN


Winodws環境でGemmaを使用する方法は、以下の記事で解説しています。


  【LLM】Ollama+Open WebUIでローカルLLM環境を構築 この記事では、OllamaとOpen WebUIを使用して、ChatGPTのようなインターフェースでテキストを生成する方法を紹介します。 業界最安級GPUクラウド | GPUSOROBAN


Gemmaのファインチューニングについて、以下の記事で詳しく解説しています。


  【LLM】Google Gemmaのファインチューニング Gemmaは、Googleが公開した軽量かつ高性能なLLMで、商用利用可能なオープンモデルです。この記事では、Gemmaのファインチューニングの方法について紹介しています。 業界最安級GPUクラウド | GPUSOROBAN


Jupyter Labを起動

GPUSOROBANのインスタンスに接続したら、次のコマンドを実行し、Jupyter Labを起動します。

jupyter lab --ip='*' --port=8888 --NotebookApp.token='' --NotebookApp.password='' --no-browser

Gemma


ブラウザの検索窓に"localhost:8888"を入力すると、Jupyter Labをブラウザで表示できます。

localhost:8888


Jupyter Labのホーム画面で[Python3 torch113_py310]を選択し、Notebookを開きます。gemma


Jupyter Labの詳しい使い方は以下の記事で解説しています。


プリインストールされたJupyter Labを使用する場合


  プリインストールの利用方法(Docker、PyTorch、TensorFlow、JupyterLab)| GPUSOROBAN GPUSOROBAN高速コンピューティングのプリインストールの利用方法を説明しています。PyTorchやTensosrFlow、JupyterLabがプリインストールされたインスタンスを使うことで環境構築にかかる時間を削減できます。 業界最安級GPUクラウド | GPUSOROBAN


Jupyter Labを新しくインストールして使う場合


  Jupyter Labのインストール(Ubuntu)| GPUSOROBAN GPUSOROBANのUbuntuインスタンスにJupyter Labをインストールする方法を紹介しています。高性能なGPUインスタンスを利用したクラウドサービスGPUSOROBANでJupyter Labを動作させることが可能です。 業界最安級GPUクラウド | GPUSOROBAN


ライブラリのインストール

JupyterLabのNotebookのコードセルで次のコマンドを実行し、必要なパッケージをインストールします。

pip install accelerate transformers jinja2 wheel


上記のパッケージのインストールが完了したら、Flash attentionをインストールします。Flash attentionは、Transformerの処理を効率化して推論を高速化します。

pip install flash-attn


必要なライブラリをインポートします。

import torch 
from transformers import AutoTokenizer, AutoModelForCausalLM


モデルの設定

HuggingFaceで利用申請したGemmaのモデルを読み込みます。
この段階でモデルがGPUメモリにロードされますので、しばらく時間がかかります。

model_id = "google/gemma-7b-it"


この記事では、モデルのパラメータをロードする数値表現をbfloat16に指定します。

dtype = torch.bfloat16


HuggingFaceにアクセスするためのトークンを設定します。

token = "hf_****************************"


HuggignFaceでのアクセストークンの発行方法は以下の記事で解説しています。


  HuggingFaceでアクセストークンを作成する方法 この記事では、HuggingFaceでアクセストークンを作成する方法について解説しています。 業界最安級GPUクラウド | GPUSOROBAN


トークナイザーを読み込みます。

tokenizer = AutoTokenizer.from_pretrained(model_id,token=token)


モデルを読み込みます。

初回はモデルをダウンロードするため時間がかかりますが、2回目以降はモデルの読み込みだけになりますので、時間はかかりません。

model = AutoModelForCausalLM.from_pretrained(
    model_id,
    token=token,
    device_map="cuda",
    torch_dtype=dtype,
    attn_implementation="flash_attention_2"
).to(0)


この記事ではgoogle/gemma-7b-itのパラメータ7bのチャットモデルを使用していますが、他のモデルを使いたい場合は表を参考に適宜model_idを変更してください。

model_id

GPUメモリ(VRAM)使用量

ストレージ使用

使用したGPU

google/gemma-2b

5.2GB

4.9GB

NVIDIA A4000

16GB x1

google/gemma-2b-it

5.2GB

4.9GB

NVIDIA A4000

16GB x1

google/gemma-7b

17GB

16.8GB

NVIDIA A100 80GB x 1

google/gemma-7b-it

17GB

17GB

NVIDIA A100 80GB x 1


生成タスク1

プロンプトの実行

富士山について質問をしてみます。

chat = [
    { "role": "user", "content": "What is Mt. Fuji" },
]
prompt = tokenizer.apply_chat_template(chat, tokenize=False, add_generation_prompt=True)
inputs = tokenizer.encode(prompt, add_special_tokens=False, return_tensors="pt")
outputs = model.generate(input_ids=inputs.to(model.device), max_new_tokens=150)
print(tokenizer.decode(outputs[0]))


生成結果

富士山に関するそれらしい回答が得られました。

<bos><start_of_turn>user
What is Mt. Fuji<end_of_turn>
<start_of_turn>model
Mount Fuji is a composite volcano on the island of Honshu in Japan. It is the highest mountain in the country and is often seen as the symbol of Japan. Mount Fuji is a popular tourist destination and is one of the most visited places in the world.<eos>


日本語訳

富士山は、日本の本州にある複合火山です。国内で最も高い山であり、日本の象徴と見なされることがよくあります。富士山は人気の観光地であり、世界で最も訪れられる場所の一つです。


生成タスク2

プロンプトの実行

東京の観光スポットについて質問をしてみます。

chat = [
    { "role": "user", "content": "Could you please recommend some tourist destinations in Tokyo?" },
]
prompt = tokenizer.apply_chat_template(chat, tokenize=False, add_generation_prompt=True)
inputs = tokenizer.encode(prompt, add_special_tokens=False, return_tensors="pt")
outputs = model.generate(input_ids=inputs.to(model.device), max_new_tokens=150)
print(tokenizer.decode(outputs[0]))


生成結果

東京の観光スポットに関するそれらしい回答が得られました。

<bos><start_of_turn>user
Could you please recommend some tourist destinations in Tokyo?<end_of_turn>
<start_of_turn>model
Here are some recommended tourist destinations in Tokyo, based on different interests:

**For first-time visitors:**

* **Shinjuku:** A vibrant and modern district with a variety of attractions, including the Shinjuku Gyoen National Garden, the Tokyo Metropolitan Government Building for a panoramic view of the city, and the Shinjuku Night View for a glimpse of the city's neon lights.
* **Roppongi:** A stylish and upscale district with a variety of shopping malls, restaurants, and entertainment options.
* **Asakusa:** A traditional Japanese neighborhood with a strong sense of history, where you can visit the Senso-ji Temple, the Hozu River, and the Edo-Tokyo Museum.


日本語翻訳

<bos><start_of_turn>ユーザー
東京のおすすめの観光地をいくつか教えてください。<end_of_turn>
<start_of_turn>モデル
ここでは、さまざまな興味に基づいて、東京のおすすめ観光地をいくつか紹介します。

**初めての方へ:**

* **新宿:** 新宿御苑、都心を一望できる東京都庁舎、街のネオンを垣間見ることができる新宿夜景など、多彩な見どころが集まる活気に満ちたモダンな地区 ライト。
* **六本木:** さまざまなショッピング モール、レストラン、エンターテイメント施設が揃うスタイリッシュで高級な地区。
* **浅草:** 歴史を感じさせる伝統的な日本の街。浅草寺、保津川、江戸東京博物館などを訪れることができます。


生成タスク3

プロンプトの実行

日本語を使って、おすすめの日本食について質問してみます。

chat = [
    { "role": "user", "content": "おすすめの日本食を教えて下さい" },
]
prompt = tokenizer.apply_chat_template(chat, tokenize=False, add_generation_prompt=True)
inputs = tokenizer.encode(prompt, add_special_tokens=False, return_tensors="pt")
outputs = model.generate(input_ids=inputs.to(model.device), max_new_tokens=150)
print(tokenizer.decode(outputs[0]))


生成結果

日本語で回答が得られましたが、不完全な内容になっています。

<bos><start_of_turn>user
おすすめの日本食を教えて下さい<end_of_turn>
<start_of_turn>model
もちろん、いくつかの日本食をおおすすめします。

**定番のメニュー:**

* **寿司:** 海産lanmışlanmış新鮮なネタに、伝統的な作法で作った伝統的なメニューです。
* **丼:** Rice Bowlと呼ばれるご飯の上に、さまざまな野菜や肉、卵などを取り込んだメニューです。
* ** tempura:** 春野菜や野菜の輪切りなどを tempuraに包んで揚げたメニューです。
* **さかな:** サかなの焼き肉やさかなのポテトなど、様々なレシピがあります。
* **巻きず:** 春野菜やポテトなどを巻いた巻きずは、ご飯やビールの定番です。

**ちょっと冒険するメニュー:**

* **そうご:** 家製のポテトを


LLMならGPUクラウド

LLMを使用する際には、モデルサイズやタスクに応じて必要なスペックが異なります。

LLMで使用されるGPUは高価なため、買い切りのオンプレミスよりも、コストパフォーマンスが高く柔軟な使い方ができるGPUクラウドをおすすめしています。

GPUクラウドのメリットは以下の通りです。

  • 必要なときだけ利用して、コストを最小限に抑えられる
  • タスクに応じてGPUサーバーを変更できる
  • 需要に応じてGPUサーバーを増減できる
  • 簡単に環境構築ができ、すぐに開発をスタートできる
  • 新しいGPUを利用できるため、陳腐化による買い替えが不要
  • GPUサーバーの高電力・熱管理が不要


コスパをお求めなら、メガクラウドと比較して50%以上安いGPUクラウドサービス「GPUSOROBAN」がおすすめです。


  生成AIに最適なGPUクラウド「高速コンピューティング」|GPUSOROBAN GPUSOROBANの高速コンピューティングは、NVIDIAの高速GPUが業界最安級で使えるクラウドサービスです。NVIDIA A100を始めする高速GPUにより、画像生成AI、画像認識、機械学習を高速化します。 業界最安級GPUクラウド | GPUSOROBAN


大規模なLLMを計算する場合は、NVIDIA H100のクラスタが使える「GPUSOROBAN AIスパコンクラウド」がおすすめです。


  LLMに最適なH100が業界最安級「AIスパコンクラウド」| GPUSOROBAN AIスパコンクラウドはNVIDIA H100を搭載したGPUインスタンスが業界最安級で使えるクラウドサービスです。HGX H100(H100 x8枚)を複数連結したクラスタ構成により、LLMやマルチモーダルAIの計算時間を短縮します。料金はAWSのH100インスタンスと比較して75%安く設定しており、大幅なコストダウンが可能です。 業界最安級GPUクラウド | GPUSOROBAN


まとめ

この記事では、Gemmaの使い方や性能・安全性・商用利用について紹介しました。

Gemmaはローカル環境で使えるほど軽量かつ高性能なオープンモデルです。

ローカル環境でGemmaを使用する方法は、以下の記事で解説しています。


  【LLM】Ollama+Open WebUIでローカルLLM環境を構築 この記事では、OllamaとOpen WebUIを使用して、ChatGPTのようなインターフェースでテキストを生成する方法を紹介します。 業界最安級GPUクラウド | GPUSOROBAN


Gemmaのファインチューニングについては、以下の記事で解説しています。


  【LLM】Google Gemmaのファインチューニング Gemmaは、Googleが公開した軽量かつ高性能なLLMで、商用利用可能なオープンモデルです。この記事では、Gemmaのファインチューニングの方法について紹介しています。 業界最安級GPUクラウド | GPUSOROBAN



MORE INFORMATION

GPUでお困りの方はGPUSOROBANで解決!
お気軽にご相談ください

10日間無料トライアル
詳しい資料はこちら
質問・相談はこちら