【前言】
在 Feb. 21, 2024,Google 正式推出 Gemini 系列的旁支開源模型 — Gemma 語言模型。那麼究竟其效果如何呢?是否適合作為免費的 LLM 結合自己的程式呢?
【重點整理】
- 該模型對於 GPU 的需求極高
- 其準確性仍待商確,且該模型不會隨意回答
【預計內容】
- Gemma 介紹
- Transformer 版模型安裝方式
- 實測效果
【主要內容】
1. Gemma 介紹 [1]
據官方所言,Gemma 與 Gemini 為相同研究所生並擁有相同的模型架構。目前釋出有 2b 與 7b,各別還有延伸後的 it (instruction tuned) 變形。而其模型所支援的平台主要有 Keras, PyTorch (Linux + Docker), Transformer 三隻,更多類型可見資料 [2] 。
2. Transformer 安裝到 Windows
PyTorch 版是最開放且能修改模型的,然而由於轉換 bash 到 batch 失敗,我只好轉到 Transformer 之上,總之,讓我們開始吧。
Step. 1 建立虛擬環境(這邊使用 Python 3.10.11)
為避免套件衝突與覆蓋,我透過 venv 直接建立專門的環境。那成功進入後應該會在 Terminal 左側看見 (.venv) 的字樣,就代表操作正確,後續的指令與套件安裝都會在這個資料夾。
# 建立 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 進行登入。
# 新增 Hugging Face 套件準備下載模型
pip install --upgrade huggingface_hub
# 使用 Hugging Face {read} 的金鑰登入
huggingface-cli login
Step. 3 安裝必要套件
麻煩各位先到 PyTorch 官網 搭配 CUDA 版本進行安裝(除非你想用 CPU 運算)。完成後再到 Terminal 輸入下方的指令,安裝 Transformer 與 GPU 加速的套件。
pip install -U transformers accelerate
Step. 4 模型安裝與執行
等待安裝完後,可複製下方指令進行 CPU 或 GPU 運算,那在第一次會安裝模型。再稍帶片刻便會打印出所詢問的問題與答覆。
【備註】
1. 2b 足足有 10 GB,而 7b 則有 17.1 GB,請在良好網路環境下安裝
'''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]))
'''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