顯示具有 TensorFlow 標籤的文章。 顯示所有文章
顯示具有 TensorFlow 標籤的文章。 顯示所有文章

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,分數還是有差距,以上供大家參考囉!









2020年3月30日 星期一

五分鐘掌握2020的TensorFlow新發展-機器學習公平性指標篇


這次的TensorFlow的2020年研討會還有正式公開的工具叫做公平性衡量指標(Fairness Indicators),這個是非常進階的機器學習工具。而公平性衡量指標(Fairness Indicators)是近年機器學習有關公平性研究熱門的研究領域,主要用於二元、多分類的機器學習題目。

過去的評估工具在大量數據集、大量的模型的情境下處理都不太好,Google需要十億個客戶系統上運作一個穩定的機器學習模型評估工具就變得非常重要。該工具評估的項目會包含:數據的分佈、模型的性能、多個不同參數下的表現。




上述的影片就是Google介紹如何透過公平性衡量指標(Fairness Indicators)概念實現公平的機器學習。

ML Practicum: Fairness in Perspective API相關的課程
https://developers.google.com/machine-learning/practica/fairness-indicators

在也指出幾個很重要的機器學習問題

從上圖上來觀察可以看到機器學習在各個流程上
包含從定義問題、準備資料、建立模型、部署、迭代的過程
都會出現人的主觀行為,進而影響到學習的偏差。


因此Google提出了一個機器學習公平性研究的工作流程


包含透過Tensorflow的資料驗證工具、模型分析工具、互動式視覺化工具來達到
改善機器學習有人類偏差的問題。


在這些介紹後,大家一定很好奇工具會有哪些。
首先這個必須學會TensorBoard,這個工具以前主要是用來視覺化模型的表現,在2.0之後功能就變得非常的多元。理解了TensorBoard(TensorFlow視覺化)之後,就可以理解以下的工具:

Tensorflow Data Analysis (TFDV):主要用於分析數據集的分佈。
Tensorflow Model Analysis (TFMA):主要用於分析模型的效能、也包含公平性指標可以分析不同模型表現。
The What-If Tool (WIT):主要透過互動的方式分析模型。

光說明沒有範例不夠看,所以請透過下面連結,可以直接到工具的範例中去深讀內容。
Tensorflow Data Analysis (TFDV)

Tensorflow Model Analysis (TFMA)

What-If Tool Dashboard

以上就是機器學習關於TensorFlow在公平性指標的簡單介紹。

2020年3月20日 星期五

五分鐘掌握2020的TensorFlow新發展-TF_Hub模型篇

想要免費的預訓練模型(Pre-trained Model)或演算法嗎?這裡通通都有。

這次的TensorFlow研討會還有正式公開的工具叫做TensorFlow Hub,裡面目前為止累積 472 個(2020/03)模型可以使用,大致上分為圖片(Image)、文字(Text)、影片(Video)
三種資料類型的模型,而且在裝置上面支持基本的TensorFlow之外,也包含TF.js、TFLite、Coral。

首先我們可以進入這裡 https://tfhub.dev/


接著就可以根據自己需求挑選模型,譬如說筆者這兩年流行的BERT,挑選bert_cased_L-12_H-768_A-12這個版本



接著可以看到幾個功能
1.下載模型離線使用(Download Model)
2.打開Colab觀看範例(Open Colab Notebook)



如上圖,如果我們選擇2.直接看範例,則可以執行Run all(如上圖範例),就可以進一步了解模型運作結果,以這個範例為例是以BERT去分類電影評論的情緒分析。


接著再往下看像是



透過Overview了解模型功能
透過Example use直接使用模型
透過Inputs、Outputs了解輸入與輸出

特別注意的是每一個模型都會有輸入、輸出的樣態
所以資料在設計上要注意輸入的類型或格式

這樣就可以直接享用模型囉,在未來不一定是資料科學家
只要了解概念與用途,就可以直接使用模型。


最後就是Google TensorFlow Hub也支持上架模型,只要四個步驟
1.建立模型
2.打包模型
3.撰寫文件
4.上架
詳細請參閱這裡
https://github.com/tensorflow/hub/tree/master/tfhub_dev




未來的趨勢就是,大家可以貢獻模型,提升全球在資料科學上的模型交流,筆者覺得是一個很棒的事情。


2020年TensorFlow相關文章:
五分鐘掌握2020的TensorFlow新發展-TF_Hub模型篇
五分鐘掌握2020的TensorFlow新發展-生態圈篇

2020年3月12日 星期四

五分鐘掌握2020的TensorFlow新發展-生態圈篇

很快的2020的TensorFlow研討會又開始了,筆者先整理目前至今最新的
TensorFlow生態系統,跟相關連結給大家先瞧瞧,後續再整理這次研討會的發現。


TensorFlow Core:TF核心程式碼
TensorFlow JS:可應用JS
TensorFlow Lite:可應用手機、邊緣計算
TensorFlow Lite Micro:可應用單晶片或更小的處理器
TensorFlow Board:視覺化工具
TensorFlow Hub 可重複利用的模型平台
TensorFlow Extended 管理資料流程
tf.kerastf.data、TF Runtime 能夠幫助我們快速分析的TF套件
Colab :這個超級夯的線上的Google版 Ipython Notebook
TensorFlow Research Cloud 專門給研究用免費使用TPU的計畫
MLIR:高效能的機器學習編譯器
TensorFlow Lattice:可以用來解釋模型的工具
TensorFlow Optimization Toolkit :應用在邊緣計算設備的模型的效能優化工具
TensorFlow Graphics:可以被用來各種不同的神經網路的處理函式,像是convolutions
TensorFlow Probability (TFP) :可以直接將機率模型與深度學習整合到TPU、GPU
Tensor2Tensor:應用於Google Brain團隊加速ML研究的套件
TensorFlow Agents :應用於強化學習的套件
Dopamine:新的學習框架應用於強化學習
TRFL: 可以在GPU上運作的強化學習套件
Mesh-TensorFlow:平行處理能力的套件
Ragged tensors:能夠處理不同資料的張量
TensorFlow (Learning-to-Rank):專門用做模型排序
Magenta:專門用於音樂相關的機器學習套件
Nucleus:專門用於DNA分析的套件
TensorFlow Federated:用於聯合學習(Federated Learning)的套件
TensorFlow Privacy:針對Privacy機器學習相關的套件
TensorFlow fairness:針對機器學習公平性指標的分析套件
Sonnet :用於建構複雜神經網路的套件
Neural Structured Learning (NSL) :一種神經結構化學習方法的套件
JAX:專門用於GPU、TPU高效能運算的套件
TensorFlow Quantum:用於量子模型的機器學習框架
Hass.io Add-on:用於圖像處理的套件


筆者: JerryWu - Google Developers Experts (Machine Learning) 、APMIC OpenTalk創辦人兼執行長

2020年3月6日 星期五

五分鐘學會在Colab上使用免費的TPU訓練模型

哈囉大家好,雖然忙碌,還是趁空擋想跟大家分享關於TensorFlow2.1.x系列的兩三事,一般來說做機器學習模型最需要的就是運算資源,而除了GPU之外,大家一定很想使用Google所推出的Google Cloud TPU來做機器學習模型,重點它很貴,能不能免費的使用他呢?使用Colab就是首選了。

而這次TF2.1新版推出之後,TPU使用有了一個很大幅度的改版,在Colab上使用TPU已經變得非常的容易與簡單,這邊就讓Jerry老師來跟大家娓娓道來。

首先不要忘記在Edit -> Notebook settings 要把硬體調整成TPU,如下圖:

然後就會獲得TPU資源,如下圖:



首先幾個在Colab上要跑TPU的API要了解一下:
1.tf.distribute.cluster_resolver.TPUClusterResolver()
這是負責偵測TPU,可以透過該指令了解Google TPU集群的狀況。

2.tf.config.experimental_connect_to_cluster(tpu)
這是負責連結Google雲端的TPU環境

3.tf.tpu.experimental.initialize_tpu_system(tpu)
這是負責初始化TPU的裝置

所以前置作業如下:

必須設定TensorFlow2.x 以及設定tpu的變數。

接下來要使用TPU,目前模型有固定的寫法,必須寫成函式,舉例如下:

資料的部分也是要寫成函式,這邊範例是採用mnist,所以舉例如下:

最後是訓練模型的程式碼,有個重點是
4.tf.distribute.experimental.TPUStrategy
是呼叫前面TPU分配策略的指令,所以要搭配在程式碼當中

5.strategy.scope()
搭配這段程式碼,可以把模型與要計算的優化器、衡量標準放到運算引擎上

如下:



目前實測的結果,如果以mnist資料為例,
TPU:36秒
GPU(P100):90秒
CPU:291秒

使用心得是,程式碼不用改動太多,在TensorFlow 2.x的架構下,可以很快的進行訓練,程式碼也可以很快速地調整,以後大家就可以用前所未有的速度訓練模型囉!

當然如果您很想更近一步了解Google Cloud Platform上面的TPU費用,可以參考下面連結

相關程式碼請參考