# 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。這有助於增強人們對輸出出於正確原因發生的信心。