---
# System prepended metadata

title: Devfest Taipei 2024 - Using LIT to analyze Gemma Models in keras

---

# Devfest Taipei 2024 - Using LIT to analyze Gemma Models in keras

> Speaker: Vic Wen
> TA: FKT, Erica
> From [Google Developer Clubs On Campus @NTUST](https://www.instagram.com/gdg.ntust/)

## 一些重要的連結
1. [Doc - Language 務必選擇 English !](https://codelabs.developers.google.com/codelabs/responsible-ai/lit-gemma#0)
2. [Keras | Gemma in Kaggle](https://www.kaggle.com/models/keras/gemma)
3. [colab](https://colab.research.google.com/)


## 前置作業
> 1. 註冊 Kaggle
> 2. 至 [Keras | Gemma in Kaggle](https://www.kaggle.com/models/keras/gemma) Access Gemma on Kaggle
> 3. 至 Kaggle Settings 中點擊 "Create New Token"，將檔案放好，等等會用到
> ![image](https://hackmd.io/_uploads/Skm9PrPGyg.png)
> 4. 在 colab 中新開一個 Notebook

## Setup Gemma Model & LIT

1. 將 [Document](https://codelabs.developers.google.com/codelabs/responsible-ai/lit-gemma#0) 中的程式碼複製至colab中，最終會如下圖：
![image](https://hackmd.io/_uploads/Sk8HdHDGyg.png)

2. 執行狀態選擇 T4 GPU
![image](https://hackmd.io/_uploads/rki2uHPG1l.png)

3. 執行1st cell，執行完成會看到最下面有紅字，可以不用理會
![image](https://hackmd.io/_uploads/ByoIFrvGkl.png)

4. 執行2nd cell，將前置作業第三步所下載的 `kaggle.json` 中的 `username` 和 `key` 填入，完成會如下圖所示：
![image](https://hackmd.io/_uploads/Sywg9Hvfyx.png)

5. 執行3rd cell, 4th cell（通常要跑十分鐘）

6. 執行5th cell，成功會跑出下圖：
![image](https://hackmd.io/_uploads/S1cn9HPfyx.png)

上述都完成，代表你成功建置好LIT和所需的LLM Model了！

## Using LIT - basic

> Sequence Salience 序列顯著性 - 在序列中，特定元素因其特性或上下文而變得特別突出，從而影響我們的注意力或決策。

因此我們要來分析文本中哪些詞語或句子對模型的輸出影響最大。這有助於理解模型的決策過程，並進一步改進其性能。

使用第一個範例dataset

這邊要注意，因為雲端的GPU不給力，就算把免費的使用時間都用光，他也跑不出來。

這時候可以直接將 docs 上面給出的標準解答放上去直接看序列顯著性，也就是 analysis 後面的答案，如下圖：

```
Taste-likes: Cheese
Taste-dislikes: Can't eat eggs
Suggestion: Quiche Lorraine
Analysis: A savoury tart with cheese and eggs
Recommendation: You might not like it, but it's worth trying.
```

在這個解答中，你會發現預測的答案有矛盾的地方，為什麼模型建議你吃一些你明確表示不能吃的東西？

我們後面就會知道了：



![image](https://hackmd.io/_uploads/B1CIA69zkg.png)

放上去後，按下 `add`

![image](https://hackmd.io/_uploads/B1aITT9Mkg.png)

右側的Sequence Salience會跑出預測結果，可以透過調整Granularity，有 Tokens, Words, Sentences, Lines, Paragraphs, Custom Regex 可以選擇，我們先選擇 Paragraphs，選擇最後一段預測的段落。

![image](https://hackmd.io/_uploads/rJDh6acGyx.png)

上圖你會發現他特別看重第一個example，我們仔細查看，在第一個給出的例子中，分析部分的思路推理與 `it has cooked onions in it, which you don't like` 最終的建議不符合 `You have to try it`。

於是我們找到了問題。

Sequence Salience(序列顯著性) 可以幫助突顯出根本問題，確保在初期能快速找到問題並修復。

接下來我們使用第二個範例 `fewshot-fixed` ，並將 docs 中給出的預測答案放至 target ，並按下 `add` 。

```
This dish contains eggs and cheese, which you don't like.
Recommendation: Avoid.
```

兩相比較後會發現，三個example的權重接近，沒有特別看重某個example
![image](https://hackmd.io/_uploads/H1yJxRqM1l.png)

雖然 `fewshot-fixed` 相較於 `fewshot-mistake` 更好，但它仍然不太正確：它正確地告訴用戶Avoid egg，但Analysis不正確，它說他們不喜歡雞蛋，而實際上用戶已經說他們不吃雞蛋。

## Using LIT - advanced

在接下來的例子中，你可以將 constitution 加入至 prompt 中去約束Model，使其產生的回答更加貼近你所想像的結果，以改進模型的行為。

現在我們使用 `fewshot-constitution` 範例，並將下方文字複製至 `target`，並按下`add` 。

```
This dish contains eggs, which you can't eat.
Recommendation: Not suitable for you.
```

![image](https://hackmd.io/_uploads/BksP-UJXJl.png)

該建議現在要安全得多。此外，「Not Suitable for you」也受到根據飲食限制明確說明適合性的原則的影響，並進行Analysis。這有助於增強人們對輸出出於正確原因發生的信心。

