2024年3月3日 星期日

五分鐘學會用Google Gemma語言模型來生成旅宿問題


 

大家好,我是APMIC的資料科學家Jerry,很高興能夠跟大家介紹Google最近發表的落地模型Gemma,這個模型是Google Gemini雲端模型的家族模型,目前有分2B跟7B,支援在Keras 3.0、JAX、TensorFlow、huggingface、TensorRT-LLM與Pytorch上面運行,並可以運行在NVIDIA GPU、Google TPU的環境上,要特別注意的是2B需要8GB VRAM、 7B需要24GB VRAM。

性能比較如下:

在Meta、Mistral的比較下,Gemma表現略勝於同等級模型。


開源的程式碼如下:

https://github.com/google-deepmind/gemma

Keras 3.0請參閱:

https://keras.io/api/keras_nlp/models/gemma/

https://www.kaggle.com/models/google/gemma/frameworks/keras

JAX:

https://www.kaggle.com/models/google/gemma/frameworks/flax

Pytorch:

https://www.kaggle.com/models/google/gemma/frameworks/pyTorch

可以直接到這裡看更多

如果只想無腦的用,可以直接在Colab上跑Gemma,請點這裡

Google官方的介紹

https://ai.google.dev/gemma


接下來,就來用一個例子分享給大家,這個例子是用Gemma來進行繁體中文的生成在旅宿的應用,只要三個步驟。

步驟一、先將模型呼叫進來

from transformers import AutoTokenizer, pipeline

import torch


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

batch_size = 8


tokenizer = AutoTokenizer.from_pretrained(model)

pipeline = pipeline(

    "text-generation",

    model=model,

    model_kwargs={"torch_dtype": torch.bfloat16},

    device="cuda",

    batch_size=batch_size

)

步驟二、匯入資料後,借助下Prompt的方式,請他生成問題與答案

# df

input_list = []

for row in tqdm(df.itertuples()):

    # Answer the question based on the context below\n\nText: {context}\n\n---\n\nQuestion: {question}\nAnswer:

    messages = [

            {"role": "user", "content": f"請根據文章回答問題\n\n文章:{row.doc}\n\n問題:{row.question}\n答案:"},

        ]

    prompt = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)

    input_list.append(prompt)

步驟三、寫個List裝資料

output_list = []

for i in tqdm(range(0,len(input_list),batch_size)):

    outputs = pipeline(

        input_list[i:i+batch_size],

        max_new_tokens=256,

        do_sample=True,

        temperature=0.7,

        top_k=50,

        top_p=0.95

    )

    output_list.append(outputs)

就可以看到下面結果拉

湖景套房的尊榮日式套房平均尺寸:平均26坪 / 86平方公尺 / 925平方英尺\n湖景套房的尊榮日式套房人數:最多入住5位,依入住人數計費\n湖景套房的尊榮日式套房床鋪配置:1 大床+塌塌米\n\n問題:湖景套房的尊榮日式套房提供哪些設備和備品?\n答案:<end_of_turn>\n<start_of_turn>model\n湖景套房的尊榮日式套房提供設備和備品包括觀景式大理石溫泉浴池、浴室電視、可調控空調系統、液晶系統電視、AI智能音箱、觀景陽臺、冰箱迷你吧、膠囊咖啡機、日式泡茶組、電子體重計、自動掀蓋式免治馬桶、吹風機、熱飲電壺、siphone、電子保險箱及網際網路服務等設備,以及有機精油洗髮沐浴乳、有機精油潤髮乳、有機精油身體乳、有機精油洗手乳、浴巾組等備品。'}]

此Colab建議設定是A100、高RAM的選項


最後是亞太智能機器(APMIC)所推出的CaiGun模型與Gemma的比較,比較環境都在A100一張上面

CaiGun需約 64 VRAM,Gemma需約24GB VRAM,分數還是有差距,以上供大家參考囉!