[Tech Talk] — Open-Source Gemma 語言模型

【前言】

在 Feb. 21, 2024,Google 正式推出 Gemini 系列的旁支開源模型 — Gemma 語言模型。那麼究竟其效果如何呢?是否適合作為免費的 LLM 結合自己的程式呢?

【重點整理】

  1. 該模型對於 GPU 的需求極高
  2. 其準確性仍待商確,且該模型不會隨意回答

【預計內容】

  1. Gemma 介紹
  2. Transformer 版模型安裝方式
  3. 實測效果

【主要內容】

1. Gemma 介紹 [1]

據官方所言,Gemma 與 Gemini 為相同研究所生並擁有相同的模型架構。目前釋出有 2b 與 7b,各別還有延伸後的 it (instruction tuned) 變形。而其模型所支援的平台主要有 Keras, PyTorch (Linux + Docker), Transformer 三隻,更多類型可見資料 [2]

圖 1:各領域比較圖(圖源:資料 [1])

2. Transformer 安裝到 Windows

PyTorch 版是最開放且能修改模型的,然而由於轉換 bash 到 batch 失敗,我只好轉到 Transformer 之上,總之,讓我們開始吧。

Step. 1 建立虛擬環境(這邊使用 Python 3.10.11)

為避免套件衝突與覆蓋,我透過 venv 直接建立專門的環境。那成功進入後應該會在 Terminal 左側看見 (.venv) 的字樣,就代表操作正確,後續的指令與套件安裝都會在這個資料夾。

BAT (Batchfile)
# 建立 v3.10 的模擬環境
py -3.10 -m venv .venv
# 進入環境
.\.venv\Scripts\activate

Step. 2 安裝 Hugging Face CLI

由於 Transformer 會尋找 Hugging Face (HF) 上的模型並安裝到緩存,我們需要先登入 HF 方便後續操作。麻煩請自行到 HF 新增一組 READ 權限的 Access Token 進行登入。

BAT (Batchfile)
# 新增 Hugging Face 套件準備下載模型
pip install --upgrade huggingface_hub
# 使用 Hugging Face {read} 的金鑰登入
huggingface-cli login

Step. 3 安裝必要套件

麻煩各位先到 PyTorch 官網 搭配 CUDA 版本進行安裝(除非你想用 CPU 運算)。完成後再到 Terminal 輸入下方的指令,安裝 Transformer 與 GPU 加速的套件。

BAT (Batchfile)
pip install -U transformers accelerate

Step. 4 模型安裝與執行

等待安裝完後,可複製下方指令進行 CPU 或 GPU 運算,那在第一次會安裝模型。再稍帶片刻便會打印出所詢問的問題與答覆。

【備註】
1. 2b 足足有 10 GB,而 7b 則有 17.1 GB,請在良好網路環境下安裝

Python
'''CPU'''

from transformers import AutoTokenizer, AutoModelForCausalLM

# available models: ['gemma-2b', 'gemma-7b', 'gemma-2b-it', 'gemma-7b-it']
tokenizer = AutoTokenizer.from_pretrained("google/gemma-2b")
model = AutoModelForCausalLM.from_pretrained("google/gemma-2b")

input_text = "Write me a poem about Machine Learning."
input_ids = tokenizer(input_text, return_tensors="pt")

outputs = model.generate(**input_ids)
print(tokenizer.decode(outputs[0]))
Python
'''GPU'''

from transformers import AutoTokenizer, AutoModelForCausalLM

# available models: ['gemma-2b', 'gemma-7b', 'gemma-2b-it', 'gemma-7b-it']
tokenizer = AutoTokenizer.from_pretrained("google/gemma-2b")
model = AutoModelForCausalLM.from_pretrained(
    "google/gemma-2b", device_map="auto")

input_text = "Write me a poem about Machine Learning."
input_ids = tokenizer(input_text, return_tensors="pt").to("cuda")

outputs = model.generate(**input_ids)
print(tokenizer.decode(outputs[0]))

3. 實測效果

個人遇到的情況,是簡單對答利用 4GB RTX 3050Ti 也要執行 40 多秒,因此判斷不適合個人使用者融入到需要即時性的應用程式之中。而且相同問題,時好時壞,也因此對於短句的分析存有疑慮。

【後話】

那在上方我們帶過如何使用 Transformer 下載並使用 Gemma,可以看見其模型具有一定大小,對於 GPU 也有強烈的需求。因此,我個人目前暫不看好,且不認為會有更多的改變。若小型開發又要求即時性的話,與其租賃機台,貌似不如儲值官方的 Gemini 或 OpenAI 的 API,使用他們的設備進行處理。

【參考資料】

[1] 官方通告與模型
https://blog.google/technology/developers/gemma-open-models/

[2] Kaggle Model Card
https://www.kaggle.com/models/google/gemma

【延伸閱讀】

[1] Buidling Gemma with CLI on Ollama

https://ollama.com/library/gemma

https://anakin.ai/blog/how-to-run-google-gemma-locally/

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.