[ AI Users Community ]
如何有序地將生成式 AI 模型導入到專案中
從 2022 年 ChatGPT 隔空出世,讓大家感受到下一階段的 AI 發展,各個企業都想試著導入大型語言模型在企業內部專案中,本次主題將會以 LLM in DevOps 來作為主軸,讓大家了解 LLMOps, PromptOps 和 RAGOps 的一些注意事項,以及在專案製作、上線過程中,要如何進行規劃。
About me: 劉育維 / Simon Liu
  • AI, ML, DL, LLM Architect and Engineer / Technical Writer / Speaker
  • Try to use AI to do the application and help to solve the pain point by AI methods.
  • My Personal Information:
  • Linkedin:
今日內容我會講到
1
Recap: 生成式 AI 發展狀況
2
LLM for DevOps: LLM 到底要如何在專案進行開發與管理?
3
PromptOps: 持續優化 Prompt ,讓生成出來的內容更好。
4
RAGOps: 知識庫優化,讓知識庫能夠被準確搜尋出來。
5
結論
警語

技術隨時在變化
請依照工具提供的官方資訊為主,我已盡力做好所有查核處理工作。
Part 1
Recap:「生成式 AI」基本概念
什麼是生成式 AI?
生成式人工智慧是一種​人工智慧​系統,能夠產生文字、圖像或其他媒體以回應​提示工程​​​,比如​ChatGPT​。產生模型學習輸入數據的模式和結構,然後產生與訓練數據相似但具有一定程度新穎性的新內容,而不僅僅是分類或預測數據​​ – Wikipedia
Source: Jensen Huang Keynote at COMPUTEX 2024 https://www.nvidia.com/zh-tw/events/computex/

What is LLM?

一個大型語言模型(LLM)是一種由神經網路組成的語言模型,具有大量的參數(通常有數十億個權重或更多),並在大量無標籤文本上使用自監督學習進行訓練。LLM約在2018年出現,並在各種任務上表現出色 儘管大型語言模型這個術語沒有正式定義,但它通常指的是參數量在數十億或更多的深度學習模型。 — Source: Large language model 和生成式AI (AIGC) 的關係是? Generative AI 泛指所有可以 生成內容的 AI,包括文字、影像(Midjourney, Stable Diffusion 等) 包括 LLM,這裡我們只談 LLM Source: Artificial Intelligence, Machine Learning , Deep Learning, GenAI and more

LLM / GenAI 的重要的元素
Prompt Engineer
透過給予指令,讓大型語言模型能夠理解使用者在說什麼
RAG
知識不足部分,透過知識庫檢索出來的資訊,讓大型語言模型能夠根據資料回答問題
LLM / GenAI
大型語言模型/生成式 AI 模型本身
Prompt engineering 的重要性

What is Prompt?

Prompt是一個在自然語言處理中常見的術語。它是用來引導模型生成特定類型的回應或文本的指令或問題。 當使用生成式AI模型時,通常需要提供一個prompt來指示模型生成所需的內容。這可以是一個問題、一個語句或一個段落。 通過精心設計和調整prompt,可以影響生成的回應的風格、內容和質量。Prompt engineering是一個重要的技巧,可以幫助提高生成式AI的性能和適用性。 在使用Prompt時,需要考慮到模型的預設行為、文本理解的能力以及所需的輸出。通常需要通過實驗和調整來找到最佳的prompt設計。

Prompt engineering 是指在使用生成式 AI 模型時,設計良好的提示語句,可以有效引導模型生成想要的結果。透過恰當的提示語句,我們可以提升生成式 AI 的準確性和可控性,使其更符合我們的需求。

Prompt Engineering 課程

View more

Fine-Tune Model and RAG

RAG 和 Fine-Tune 比較

Fine-Tune 微調模型 RAG (Embedding) 比喻 就像考試前認真讀書,考試 closed book 去回答考試題目。 就像考試 open book,帶筆記去考試,若筆記上有寫可以回答的很好 缺點 訓練模型需要花時間和計算成本,不可能隨時訓練更新資料 仍有 Token 長度限制 要用工具抓資料因此處理時間較長 優點 品質可能更好,這需要機器學習專業知識 不用擔心新資料更新

何時用 RAG? 何時用 Fine-Tune?

何時用 RAG? 何時用 Fine-Tune?

Part 2
LLM for DevOps: LLM 到底要如何在專案進行開發與管理?
定義 MLOps
With Machine Learning Model Operationalization Management (MLOps), we want to provide an end-to-end machine learning development process to design, build and manage reproducible, testable, and evolvable ML-powered software.
Source: mlops.org
幫大家畫個重點:
  1. 提供一個 End-to-end 的機器學習開發過程
  1. 以設計、建構和管理可重複、可測試和可演進的軟體
  1. 標準化、流程化、自動化
Source: Wikimedia
MLOps 三大元素
程式碼
  • 資料前處理程式碼
  • 模型訓練/服務程式碼
  • 程式碼管理
  • 自動化運行程式碼
資料
  • 資料收集
  • 資料貼標
  • 資料儲存與版本管理
  • 資料安全與保護
模型
  • 模型訓練、再訓練
  • 模型儲存與版本管理
  • 模型部署與監控
  • 模型應用服務
圖片來源:Noun Project, created by Melvin Salas, kliwir art, Design Circle
一個標準的 MLOps 流程架構
  • MLOps 流程架構:

範圍界定

範圍界定:計劃並檢查項目或產品的範圍是否適合機器學習模型。您可以使用以下表格來評估您的項目:

數據工程

數據工程:建立數據處理流程,我們可以稱之為數據運營(DataOps)流程,包括以下方法: E:數據提取 - 收集數據 T:將數據轉換為數據集並標記數據集。 L:將數據集加載到數據庫或文件系統中。 P:檢查數據分析內容。我們可以使用儀表板展示數據洞察力並持續修改數據ETL流程。 A:檢查數據質量和斷言狀態。在使用數據之前,我們必須確保數據集的質量可以得到保證。

模型工程

模型工程:以下是構建建模流程的一些步驟。 模型構建:初始化模型流程和回調方法。 模型訓練:使用機器學習或深度學習模型對數據進行訓練。同時,我們需要定義衡量標準並跟踪模型性能。例如,混淆矩陣方法或準確度指標。 模型評估:檢查模型是否準備好進行部署。例如,如果準確率大於0.95,則可以切換到新模型。 模型登記:登記模型並將其放入生產等待隊列中。 模型部署:使用Docker化方法將模型打包並部署到雲端或邊緣設備作為端點。打包方法可以是API服務器或無服務器方法。 模型監控:監控模型服務性能,包括兩個方面: 監控部署基礎設施:例如負載、使用情況、存儲和健康狀態。 監控模型性能:監控模型和數據的性能,以確定是否需要重新訓練模型。

根據需求,規劃自己所需要的工具

專案規劃好後,根據專案需求,來找出對應的工具來去使用

應用: 透過 Gitlab CI/CD Pipeline 做 MLOps Pipeline

連結:Medium 文章

根據 MLOps 經驗,來思考看看 LLMOps
  • LLMOps 流程圖:
  • 其中包含著:
  1. Select LLM Model: 選擇正確能力的 AI 模型,如同 HR 要招聘正確的人才來工作
  1. Prompt Engineering: 撰寫員工的工作範圍
  1. Evaluate Result: 給予員工能力指標評估,是否能夠滿足市場需求
  1. Deploy to Production: 放到人力資源網站,來了解是否有正確的人投遞履歷
  1. Fine-Tune LLM Model
  1. RAG / Knowledge
  1. Monitoring / Evaluation:KPI 年尾評分
開源/閉源 LLM 模型的發展狀態
Comparison: Closed / Open Source LLM Model

liuyuwei.github.io

LLM Info - Simon Liu

Web site created using create-react-app

Comparison: zh-TW Open Source LLM Model

liuyuwei.github.io

LLM Info - Simon Liu

Web site created using create-react-app


Comparison: Closed Source LLM Model

OpenAI GPT Model Anthropic Claude Model Google Gemini Model MistralAIMistral Model 模型能夠理解/回覆繁體中文 O O O O LLM Model GPT 3.5GPT 4GPT 4o Claude 2.1 (200B)Claude 3 Haiku (20B)Claude 3 Sonnet (70B)Claude 3 Opus (2T)Claude 3.5 Sonnet Gemini Pro 1.0Gemini Ultra 1.0Gemini Pro 1.5Gemini Ultra 1.5 Mistral MediumMistral Large Context Window GPT 3.5: 4-16KGPT 4: 32, 128K 200K Gemini 1.0: 8KGemini 1.5: 128k~1m 32K 釋出時間 GPT-3: 2022GPT-4: 2023GPT-4o: 2024 Claude 2: 2023Claude 3: 2024.03Claude 3.5 Sonnet: 2024.07 Gemini 1.0: 2023Gemini 1.5: 2024.02 2024.02 雲端服務供應商 Azure Cloud Azure, AWS (Bedrock). GCP (VertexAI) GCP Azure, AWS, Snowflake Source: https://tinyurl.com/2mwdsrcj

Comparison: Open Source LLM Model

Meta Llama Model Meta Phi Model MistralAIMistral Model Google Gemma Model 模型能夠理解/回覆繁體中文 O (Llama 3) O (Phi-3) O O LLM Model Llama 3.1 8BLlama 3.1 70BLlama 3.1 405B Phi-3-mini (3.8B)Phi-3-small (7B)Phi-3-medium (14B) Mistral 7BMistral 8×7BMistral 8×22B Gemma 2 2BGemma 2 9BGemma 2 27B Context Window 8,192 tokens 4K / 128K 32K 8K 模型架構 TransformerMoE Transformer TransformerSMoE Transformer 釋出/更新時間 2023.07 / 2024.04 / 2024.07 2024.01/2024.04 2024.07 2024.06/2024.07 Source: https://tinyurl.com/2mwdsrcj

非常缺乏繁體中文的開源大型語言模型

資料來源: Llama 2 論文

Comparison: Open Source zh-TW LLM Model

Taiwan Llama Model Breeze/Breexe Bailong TAIDE LLM Model Project TAMELlama-3-Taiwan-70BLlama-3-Taiwan-8B Breeze 7BBreexe 8×7B Bailong-7BBailong-orpo-7B TAIDE-LX-7BLlama3-TAIDE-LX-8B(測試中) 出版單位 林彥廷博士生 聯發科 群創光電 國科會 Base Model Meta Llama 3 Mistral 7B Meta Llama 2 Meta Llama 2/Meta Llama 3

Evaluation Result
  • 上線前的測試:
  • 自己先寫 20 題問題與解答
  • 透過 AI 模型,來生成出更多不同問法的問題
ChatGPT 4o Example
  • 沒有做好測試,可能會發生…

中研院 CKIP-Llama-2-7b 事件

Jieba and CKIPtagger 比較項目 Jieba CKIPtagger 算法原理 基於字典樹結構實現的高效率分詞算法 基於深度學習的分詞系統 語言模型 統計模型 神經網絡模型 效能 較快,適合大規模文本處理 較慢,因為使用深度學習模型 準確性 良好,尤其是在通用型文本上 高,特別是在有專業領域訓練時 開源狀態 開源 開源 → Jieba 主要來源是簡體中文、繁體中文雖然有,但無人進行維護,所以現在不少專案都使用CKIPtagger 來進行 NLP 專案實作 簡介 CKIP-Llama-2-7b 中央研究院詞庫小組(CKIP)開發的開源可商用繁體中文大型語言模型(large language model) 以商用開源模型Llama-2-7b以及Atom-7b為基礎,再補強繁體中文的處理能力,並對405個可商用的任務檔案同步進行訓練優化,參數量達70億(7 billion)。 提供大眾下載,作為學術使用或是商業使用。 也可以使用自己的訓練資料集進行訓練,快速構建出一個可以滿足自身任務需求的模型。 模型僅需一張 12G 記憶體容量的GPU即可佈屬。 事件導引線與 Lesson Learn 【更新中研院聲明】繁中 LLM CKIP-Llama-2-7b 翻車?使用簡中資料集有什麼問題? - INSIDE Lesson Learn: 此模型可以說是「會有邏輯的回答繁體中文回覆」,可是回覆內容就可能就要忽略,主要是在資料前處理上,沒有針對台灣知識去多做處理,反而學習到更多的中國資料,導致有此問題。 其實避免此事,在 DevOps 或 MLOps 的軟體工程系統上,可以做所謂 Golden testing dataset,在上版前做好測試,只是在高品質資料不足情形下,通常資料科學家/機器學習工程師不會特別設置此事情。 好資料取得不易,包含 Taiwan-LLaMa, Mistral 7B, TAIDE 都是在資料前處理上下了一番功夫才想提供給大家使用,期待立法與行政單位能夠趕快給予指引,讓大家知道台灣是否能夠使用版權資料進行訓練,另外,也請大家給予這類型模型製作者耐心,畢竟這類型模型大概能力跟小朋友一樣,教他需要花費時間,並且也很需要回饋工具,讓這樣的模型能夠做得更好! 核心技術與基礎建設導入問題: 是否能夠有人伸手進去處理髒資料? 是否願意投資大筆金額,來進行可能高機率無法回本的基礎建設? 是否能以長遠角度,來看 AI 與 LLM 浪潮? 該怎麼做可以避免? 自己先寫 20 題問題與解答: 中華民國國慶日是哪一天? Answer: 10/10 中國國慶日是哪一天? Answer: 10/1 生題目:

Monitoring / Evaluation
RLHF: 人類意見回饋強化學習介紹
  • 類似於教小孩在規則中玩遊戲的過程
  • 告訴他遊戲的規則
  • 在玩的時候給他指導,比如告訴他哪些舉動是好的,哪些可能不是最佳選擇。
  • 這個過程中,小孩逐漸學會怎樣更好地玩這個遊戲。
RLHF 就是一種類似的教學過程,但這次你是在教大型語言模型模型,而不是一個真正的人,而 RLHF 可以分為 Reinforcement Learning 和 Human Feedback 階段:
  1. 強化學習(Reinforcement Learning): 這是一種讓 AI 模型學習的方法。你可以想像機器(比如一個機器人或電腦程式)正在嘗試完成一個任務,比如下棋、駕駛車輛或進行對話。每當機器做出好的決策,它就得到一些積分(獎勵)。如果做了不好的決策,它可能得不到積分,或者失去一些積分。這個過程幫助機器學習怎樣更好地完成任務。
  1. 人類反饋(Human Feedback): 這裡的關鍵是有真實的人來幫助指導這個學習過程。人類會觀察機器的行為並給出反饋。比如,在對話視窗中,如果大型語言模型生成了一個回答,人類會評估這個回答是否恰當、是否有幫助,並根據這些評估給予好與不好的評價。
Medium 文章:連結
Part 3
PromptOps: 持續優化 Prompt ,讓生成出來的內容更好。
PromptOps
  • PromptOps Architecture:
1
Prompt 結構設計
(Prompt Structure Design)
這類似於撰寫工作描述的過程。開發者需要明確定義語言模型應完成的任務,確保它們能針對特定的業務需求提供解決方案。就如同人力資源部門明確工作職責,選擇合適的語言模型便如同聘請合適的員工來工作一樣。
2
Prompt 評估
(Prompt Evaluation)
在模型正式運行前,必須進行全面的測試,類似於面試過程中的技能評估。這一步驟確保所設計的 Prompt 能達到既定的商業目標和效能標準。
3
Prompt 配置設置
(Prompt Config Settings)
根據不同的應用需求,Prompt 需要配置適當的資源和權限。例如,開發用於編程的 Prompt 可能需要訪問特定的程式碼庫,而設計用的 Prompt 則需要連接到繪圖 API等,讓對的人能夠在對的環境上發揮自己的能力。
4
Prompt 版本控制與維運
(Version Control/Operation)
類似於對員工進行年終評估,釋出 Prompt 後需持續監控其表現,根據使用者的反饋進行必要的優化。版本控制在這個過程中至關重要,它確保模型能在保持核心功能的同時進行持續改進,並在發展方向偏差時能迅速調整。
Prompt Engineering 流程
1
測試資料 Dataset
2
候選 Prompts
3
跑評估 Evaluation
實作細節
  • 測試資料需要人工準備、還是可以自動合成?
  • 評估的 Evaluation 的方式是?
  • 沒有標準答案的 生成任務
  • 有標準答案的 分類任務
Part 4
RAGOps: 知識庫優化,讓知識庫能夠被準確搜尋出來。
Type and Level of RAG
RAGOps 的概念與應用
  • RAGOps 是一種結合了檢索增強生成(RAG)和維運操作(Ops)的策略,旨在優化和自動化 RAG 模型的部署、監控和維護過程。
  • 透過實施 RAGOps,企業和開發者能夠更靈活地管理其 AI 模型,並在提供即時、準確的數據檢索功能方面取得突破。
RAGOps
  • RAG + LLM Solution Architecture:

Retrieve Data/Documents

Original Data → Parsing → Chunking → Embedded 轉換成為矩陣 → Embedding Database → RAG

  • RAG Infrasturcture:
RAGOps 實踐流程與方式
1
初步規劃:明確目標與需求
在實施 RAGOps 之前,首先需要清晰明確的目標和需求。這包括對目標系統的性能、應用場景以及用戶需求的詳細分析。明確這些需求有助於確定所需的硬件和軟件資源,以及後續的系統設計與實施策略。
2
系統配置:選擇合適的硬體和軟體環境
RAGOps 的成功實施,離不開合適的硬體和軟體環境的支持。這包括足夠的計算能力、數據存儲與處理能力,以及高效的網絡傳輸系統。選擇合適的硬件平台,如 GPU 加速器,可以大大提升 RAG 模型的運算效率。同時,選擇靈活、可擴展的軟件工具和平台,如 Kubernetes 和 Docker,可以為 RAGOps 提供強大的支持。
3
模型部署:從開發到生產的轉換
模型部署是 RAGOps 實施過程中的關鍵一步。這包括將開發階段的 RAG 模型部署到生產環境中,並進行必要的配置和優化。此外,還需要設計高效的數據管道,以確保模型能夠處理來自不同數據源的即時數據。
4
持續優化與擴展
RAGOps 的實施並非一次性工作,而是一個持續的過程。隨著業務需求的變化和技術的進步,需要不斷地對 RAGOps 進行優化和擴展。這包括更新和升級 RAG 模型,擴展系統的處理能力,以及改進數據管道的效率。
Cloud Service 實作 RAG 專案?

AWS Cloud

Medium Post: AWS Bedrock 在 AWS 雲端建置 Claude 3 LLM 服務 — Amazon Bedrock 工作坊筆記紀錄

Google GCP Cloud

Google Cloud Vertex AI Vector Search Google Official Doc: Google Cloud Vertex AI Vector Search Bigquery: Google Official Doc: Bigquery Pgvector: Google blog: Building AI-powered apps on Google Cloud databases using pgvector, LLMs and LangChain

Part 5
結論 - 生成式 AI 的專案製作戰略
結論: DevOps in LLM / GenAI
  • DevOps in LLM:
  • PromptOps:
  • RAGOps:
[ AI 抽書 ]
《精確掌握 AI 大趨勢!深度學習技術解密:日本 AI 神人,帶你正確學會從機器學習到生成式 AI 的核心基礎》
歡迎到此頁面參與活動:

Facebook

Yu-Wei Liu

【工商服務&免費贈書】 這次受到了 旗標知識講堂 的邀請,向大家推薦一本由日本作者撰寫的書籍。 |推薦書籍| 《精確掌握 AI 大趨勢!深度學習技術解密:日本 AI 神人,帶你正確學會從機器學習到生成式 AI...

感謝大家今天的聆聽
本次投影片連結:
Made with