Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the ultimate-addons-for-gutenberg domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /opt/bitnami/wordpress/wp-includes/functions.php on line 6114
[Tech Talk] — Open-Source Gemma 語言模型 - 八寶周的研究小屋

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

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

【前言】

在 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.