# Hugging face 工作坊 Note
> 這個筆記整理了,我11月參加的抱抱臉工作坊【政治大學場次】,並且加上了一些後續問答與資料查詢的結果。
> by UNO 2024/01/07
![image](https://hackmd.io/_uploads/HJJsURvu6.png)
</br>
### 筆記大綱:
1. Hugging face開源模型的示範
2. 政大國企的研究與課堂應用
3. 如果要Fine tune自己的模型?
4. 額外的研究整理
5. 參考資料
:::danger
這場工作坊的講師們,還正在嘗試Fine tune自己的語言模型,還未發表公開(2024/12/29)
:::
</br>
## 1. Hugging face開源模型的示範
> 報告者:中興大學 楊景明 黃鈺晴
**Hugging Face** 是一個開源的人工智慧庫,提供了機器學習模型庫。任何人都可以在這個模型庫分享自己訓練好的模型,促進了模型共享和合作。目前匯集32萬以上的預訓練模型。
使用者能夠輕鬆地下載這些模型並將其在自己的任務中進行微調,而無需從零開始進行模型訓練。
![image](https://hackmd.io/_uploads/H1PJsaD_p.png)
### A. 優勢
- **開源**:Hugging Face 是一個開源的人工智慧庫,可以讓使用者自由地使用、修改和分享。
- **豐富的模型**:Hugging Face 提供了許多預訓練的 NLP 模型,可以讓使用者快速地完成各種 NLP 任務。
- **易於使用**:Hugging Face 提供了簡單易懂的 API,使用者可以輕鬆地將其整合到自己的應用程式中。
- **社群支持**:Hugging Face 擁有一個活躍的社群,使用者可以在社群中尋求幫助和分享經驗。
### 劣勢
- **需要一定的技術門檻**:Hugging Face 需要使用者具備一定的程式設計和機器學習知識,才能夠充分利用其功能。
- **開源=品質不齊**: 由於 Hugging Face 的模型和工具是由不同的人和團隊開發的,因此它們的品質和可靠性可能會有所不同。此外,由於 Hugging Face 是一個開源項目,因此它的文檔和教程可能不夠完整或不夠清晰,這可能會對新手造成困惑。
- **資源消耗較大**:Hugging Face 的模型需要消耗大量的計算資源,對於資源有限的使用者來說可能會造成一定的困擾。
- **模型落後最新技術** : 由於 Hugging Face 是一個開源項目,因此它的更新速度可能會比較慢,這可能會導致它的模型和工具落後於最新的技術和研究。
### 常見的開源模型
#### A. Llama:
- 優點
- 線上使用spaces ,免費使用、不需要登入,避免帳戶資料外洩,降低資安疑慮
- 本機下載,若使用Llama 7B模型,只需要4GB的RAM就能使用,可以針對任務進行微調
- 根據使用者需求,可以達成許多任務(Ex. 自動出題、解題)
- 缺點
- 目前性能較OpenAI的ChatGPT弱,可能答非所問
- 回答Token受限制,需使用continue繼續生成回答 (可能會影響結果)
- 目前預設使用英文溝通,若要使用其他語言,需進行微調
#### B. Stable diffusion
> 用來藝術畫圖,也許用不到,不多敘述
#### C. Bark
> 文字轉語音 Bark: 可以將生成文稿的文檔轉換成語音,效率超低,比google語音、或其他語音生成應用輸入差一大截,不多敘述
#### D. Falcon
Falcon 是由位於阿布達比的技術創新研究院 (Technology Innovation Institute, TII)創建的一系列的新語言模型,其基於 Apache 2.0 許可發佈。
- Falcon系列模型是在RefinedWeb資料集上訓練的大型語言模型,可以針對特定任務進行微調。
> RefinedWeb資料集包含了從網路上蒐集,嚴格過濾和刪除重複資料得到的上萬億tokens。
- 目前版本:
- Falcon - 7B
- Falcon - 40B
- Falcon - 180B
:::success
"Falcon - 180B" 中的 "B" 代表的是"billion",即十億。在這裡,它是用來表示模型大小的一個衡量單位,具體指的是模型包含的參數數量。所以 "Falcon - 180B" 表示的是一個包含大約1800億個參數的語言模型。
:::
在人工智能和機器學習領域,一個模型的「參數」是用來捕捉從訓練數據中學習到的知識的。一般來說,參數越多的模型潛在的學習能力越強,能夠更好地理解和生成語言,但同時也需要更多的計算資源來訓練和運行。
![image](https://hackmd.io/_uploads/Hy7lLTP_6.png)
> ARC (AI2 Reasoning Challenge)ARC 資料集是一個多項選擇題答案資料集,包含從3年級到9年級的科學考試問題。
> HellaSwag 一個用於評估常識的挑戰資料集,包含對於先進模型很困難,對人類來說很簡單(>95%的準確率)的問題。
> MMLU (Massive Multitask Language 衡量模型多任務準確性的測試。涵蓋了基礎數學、資訊、法律等任務。
> TruthfulQA衡量模型生成真實可信答案的能力,包括健康,法律,金融和政治。問題經過精心設計,以便有些人會因為誤解而回答錯誤。
:::success
大語言模型的更新建議追這一個 [點我查看leaderboard](https://huggingface.co/spaces/HuggingFaceH4/open_llm_leaderboard)
:::
:::danger
~~結論: 單獨使用開源模型的表現都不如OPEN AI與CLAUDE,並且載下來個人的電腦都跑不動~~
:::
</br>
## 2. 政大國企的研究與課堂應用
> 報告者: Owen Lu, htlu@nccu.edu.tw
### A. Python TA
![image](https://hackmd.io/_uploads/SJMnoaP_6.png)
1. 課堂練習工作流程
1. 老師上課錄影上傳youtube影片
2. 用whisper產生字幕
3. 輸入給open ai api,出題Python題目
4. 用line發訊息給學生要求學生限時作答
2. 學生可以透過機器人請假
3. 聊天與限制
1. 檢查是否詢問課堂資訊(課程時間、教室...)
2. 進openai 用prompt的方式限制聊天主題
> 技術細節:
> MongoDB Atlas (MongoDB的雲端服務),比較便宜,起始的500MB免費
### B. 商業廣告換衣服換臉
![image](https://hackmd.io/_uploads/HkK7aTDu6.png)
![image](https://hackmd.io/_uploads/S1d8p6DOp.png)
### C. 客服過濾仇恨語言
![image](https://hackmd.io/_uploads/HJ-Kp6Pua.png)
</br>
## 3. 如果要Fine tune自己的模型?
### Fine tune好工具: TRL
工具網址: https://huggingface.co/docs/trl/index
Transformer Reinforcement Learning(TRL)是一種使用強化學習(Reinforcement Learning)訓練 Transformer 語言模型的全套工具。它包括了一系列的工具,從監督調優(Supervised Fine-tuning step, SFT),到訓練獎勵模型(Reward Modeling),再到近端策略優化(Proximal Policy Optimization)。
> Transformer 是一種被認為在自然語言處理(NLP)和計算機視覺(CV)領域中佔主導地位的神經架構,主要用於監督訓練。
TRL 提供了多種 fine-tune 模型的方法,包括:
1. SFTTrainer:一個輕量級且友好的包裝器,可自定義數據集上 fine-tune 語言模型或適配器。
2. RewardTrainer:一個輕量級的包裝器,可讓 fine-tune 語言模型以滿足人類偏好(獎勵建模)。
3. PPOTrainer:一個 PPO 訓練器,用於語言模型,只需要(查詢、回應、獎勵)三元組即可優化語言模型。
4. AutoModelForCausalLMWithValueHead 和 AutoModelForSeq2SeqLMWithValueHead:一個 transformer 模型,每個token都有一個額外的標量輸出,可用作強化學習中的值函數。
:::info
據UNO所知,台大有老師成功Fine tune自己的模型,未來會搭配OPENAI、AWS、Google、CKIP-Llama-2-7b與均一合作來做教育相關的應用。(消息來源: 均一副執行長 蔡子揚)
:::
</br>
## 4. 額外的研究整理
### A. TMMLU+ 繁體中文 LLM 測試資料
測試資料集位置: https://huggingface.co/datasets/ikala/tmmluplus
![image](https://hackmd.io/_uploads/H1fUgAD_6.png)
![image](https://hackmd.io/_uploads/B1NDg0POp.png)
```python
from datasets import load_dataset
task_list = [
'engineering_math', 'dentistry', 'traditional_chinese_medicine_clinical_medicine', 'clinical_psychology', 'technical', 'culinary_skills', 'mechanical', 'logic_reasoning', 'real_estate',
'general_principles_of_law', 'finance_banking', 'anti_money_laundering', 'ttqav2', 'marketing_management', 'business_management', 'organic_chemistry', 'advance_chemistry',
'physics', 'secondary_physics', 'human_behavior', 'national_protection', 'jce_humanities', 'politic_science', 'agriculture', 'official_document_management',
'financial_analysis', 'pharmacy', 'educational_psychology', 'statistics_and_machine_learning', 'management_accounting', 'introduction_to_law', 'computer_science', 'veterinary_pathology',
'accounting', 'fire_science', 'optometry', 'insurance_studies', 'pharmacology', 'taxation', 'trust_practice', 'geography_of_taiwan', 'physical_education', 'auditing', 'administrative_law',
'education_(profession_level)', 'economics', 'veterinary_pharmacology', 'nautical_science', 'occupational_therapy_for_psychological_disorders',
'basic_medical_science', 'macroeconomics', 'trade', 'chinese_language_and_literature', 'tve_design', 'junior_science_exam', 'junior_math_exam', 'junior_chinese_exam',
'junior_social_studies', 'tve_mathematics', 'tve_chinese_language', 'tve_natural_sciences', 'junior_chemistry', 'music', 'education', 'three_principles_of_people',
'taiwanese_hokkien'
]
for task in task_list:
val = load_dataset('ikala/tmmluplus', task)['validation']
dev = load_dataset('ikala/tmmluplus', task)['train']
test = load_dataset('ikala/tmmluplus', task)['test']
```
> iKala 是一家跨國的AI公司,總部位於台灣,提供以AI驅動的數位轉型及數據行銷整體解決方案,有這些工作:
> 1. iKala Cloud:提供以AI驅動的數位轉型及數據行銷整體解決方案。
> 2. iKala Commerce:提供新零售服務與產品。
> 3. iKala CDP:提供客戶數據平台服務。
> 4. iKala KOL Radar:提供網紅行銷服務。
> 5. iKala Sales MA Program:培養具備企圖心、成長心態與團隊意識之業務人才為目標
> TMMLU 是一個多選題回答的資料集,包含66個科目,從基礎到專業層級不等。TMMLU+資料集比其前身TMMLU大六倍,包含更平衡的科TMMLU+資料集是iKala公司的一個開源資料集,**旨在幫助市場在測試繁體中文的能力上可以有指標進行判斷。**
>
> 這個資料集是基於MMLU(Massive Multitask Language Understanding)資料集的基礎架構,包含了問答、世界知識、摘要、分類和表格理解等多種任務透過這些基準,研究者評估了不同模型在處理各種任務上的表現,突顯了每個模型的長處和短處。
### B. 比起fine tuning 的另一種選擇: RAG
Retrieval-Augmented Generation for Large Language Models: A Survey
論文網址: https://arxiv.org/abs/2312.10997
![image](https://hackmd.io/_uploads/BkCUb6D_a.png)
這篇論文是關於**檢索增強生成**(RAG)的綜述,這是一種結合了**大型語言模型**(LLMs)和**外部知識庫**的技術,可以提高模型的準確性和可信度,特別是對於知識密集型的任務。作者分析了RAG的發展歷程,包括**初級RAG**,**進階RAG**和**模組化RAG**,並詳細探討了RAG框架的三個基礎部分,即**檢索**,**生成**和**增強**技術。作者還介紹了評估RAG模型的指標和基準,以及最新的評估框架。最後,作者提出了一些未來的研究方向,包括挑戰,多模態擴展,以及RAG基礎設施和生態系統的發展。
> 待詳細研究 (2024/01/07)
</br>
## 5. 參考資料
1. 投影片與Prompt範例:https://reurl.cc/6QY1Rb
2. 照片整理:https://reurl.cc/0Zl5Gx
3. 工作坊回饋單(作為後續規劃使用):https://reurl.cc/z6Zg2y