### [AI / ML領域相關學習筆記入口頁面](https://hackmd.io/@YungHuiHsu/BySsb5dfp) #### [Deeplearning.ai GenAI/LLM系列課程筆記](https://learn.deeplearning.ai/) - [Large Language Models with Semantic Search。大型語言模型與語義搜索 ](https://hackmd.io/@YungHuiHsu/rku-vjhZT) - [Finetuning Large Language Models。微調大型語言模型](https://hackmd.io/@YungHuiHsu/HJ6AT8XG6) - [LangChain for LLM Application Development。使用LangChain進行LLM應用開發](https://hackmd.io/1r4pzdfFRwOIRrhtF9iFKQ) - [Building and Evaluating Advanced RAG。建立語評估進階RAG](https://hackmd.io/@YungHuiHsu/rkqGpCDca) ## [Generative AI with Large Language Models](https://www.deeplearning.ai/courses/generative-ai-with-llms/) ![image](https://hackmd.io/_uploads/BkXI2znTp.png =30x) ![image](https://hackmd.io/_uploads/S1uv3Ghpa.png =150x) - [Week1-Generative AI use cases, project lifecycle, and model pre-training](https://hackmd.io/@YungHuiHsu/By7dsMnTp) - [Week2-Fine-tuning and evaluating large language models](https://hackmd.io/@YungHuiHsu/HJQrU7npp) - [Week3-Reinforcement learning and LLM-powered applications](https://hackmd.io/@YungHuiHsu/Hkbxu7h6T) --- ### 課程概要 - **課程概覽** - 與AWS合作創建的課程,涵蓋生成式AI的基礎知識、實踐技能、功能理解,以及如何在現實世界應用的部署方法 - 深入了解包括最新的Gen AI研究,公司如何利用尖端技術創造價值,以及LLM基礎生成式AI生命周期的關鍵步驟 - 實踐技巧:詳細介紹驅動LLM的Transformers架構,如何被訓練,以及微調如何使LLM適應各種特定用例,並使用經驗性擴展法則優化模型的目標函數 --- ## Week1 - 生成式AI應用案例、項目生命周期與模型預訓練<br>Generative AI use cases, project lifecycle, and model pre-training :::success - 學習目標 * 討論模型預訓練(pre-training)以及持續預訓練(continued pre-training)與微調(fine-tuning)的價值 * 定義術語「生成式人工智慧」、大型語言模型、提示並描述為LLM提供支援的 Transformer 架構 * 描述典型的基於 LLM 的生成式 AI 模型生命週期中的步驟,並討論在模型生命週期的每個步驟中推動決策的限制因素 * 討論模型預訓練期間的計算挑戰並確定**如何有效減少記憶體佔用** * 定義術語「縮放法則」並描述已為LLM發現的與訓練資料集大小、計算預算、推理要求和其他因素相關的法則 ::: <iframe style="border:none" width="800" height="450" src="https://whimsical.com/embed/3HLYmuD2jkGRV9ghm5GQ4r@6HYTAunKLgTU8XzPC2JsoyBB2t5THHqYWLHEbK3rLFXj6MP"></iframe> ### 1-1. Introduction to LLMs and the generative Al project lifecycle #### 生成式AI應用案例、項目生命周期與模型預訓練 (Generative AI use cases, project lifecycle, and model pre-training) - 課程介紹大型語言模型(LLMs)及其應用場景、工作原理、提示工程(prompt engineering)、創造性文本輸出的方法,並概述生成式AI項目的生命週期 - 大型語言模型是傳統機器學習的子集,通過在大量人類原創內容的數據集中找到統計模式來學習這些能力 - 基礎模型具有數十億個參數,展現出語言之外的突出特性,並且研究人員正在揭示它們分解複雜任務、推理和問題解決的能力 - 通過使用這些模型原型或通過應用微調技術來適應特定用例,可以快速建立定制解決方案 - 雖然生成式AI模型正在為多種模式創建,但在這個課程中,將專注於大型語言模型及其在自然語言生成中的用途 - 提示被傳遞給模型後,模型預測下一個詞語,並因為提示包含了問題,模型生成了答案 - 使用模型生成文本的行為被稱為推理(inference),完成包括原始提示中的文本,後面跟著生成的文本 ![image](https://hackmd.io/_uploads/B1jH1r2aT.png =400x) ```mermaid graph LR; A[Prompt] --> B[Model]; B --> C[Completion]; ``` ![image](https://hackmd.io/_uploads/ByuygrhTT.png =500x) #### 大型語言模型的使用案例與任務 (LLM use cases and tasks) - **大型語言模型(LLMs)應用範圍** - 不限於聊天機器人,廣泛應用於寫作、摘要、翻譯、從自然語言生成機器代碼、信息檢索等多種文本生成任務。 - **提示(Prompt)與生成** - 提示是與LLMs互動的基礎,模型根據提示生成相應的文本或代碼。 - 透過精心設計的提示,可以引導模型更準確地完成特定任務。 - **LLMs的進階互動與微調** - **連接外部數據源與API調用** - 使模型能夠獲取預訓練階段未知的信息,擴展其與現實世界互動的能力。 - **模型規模與語言理解的提升** - 隨著基礎模型的參數從數十億增長到數十億甚至數百億,模型的語言理解能力顯著增強。 - **微調(Fine-Tuning)** - 即使是較小的模型,也可以通過微調專門針對特定任務進行優化,提升性能。 - **架構的重要性** - LLMs能力的快速增長主要歸功於其先進的架構,使其能夠有效學習和處理大量數據。 ![image](https://hackmd.io/_uploads/ByObIBna6.png =400x) ![image](https://hackmd.io/_uploads/rypw8H3Tp.png =400x) #### Transformers架構之前的文本生成 (Text generation before transformers) - RNN ![image](https://hackmd.io/_uploads/SJrEPHhpp.png =300x) ![image](https://hackmd.io/_uploads/HJZ8Pr3Tp.png =300x) ![image](https://hackmd.io/_uploads/HkfODrhaa.png =300x) - 生成演算法並非新概念,先前的語言模型使用了稱為遞歸神經網絡(RNNs)的架構 - RNN在其時代雖強大,但在生成任務上受限於所需的計算量和記憶體 - RNN實作在處理簡單的下一個字預測生成任務時,若只看到一個前置詞,預測效果不佳 - 擴大RNN以查看文本中更多前置詞時,需要顯著增加模型使用的資源,但預測仍可能失敗 - 自然語言的複雜性 - 模型要成功預測下一個字,需要看到不僅僅是前幾個字,而是整個句子甚至整個文件 - 語言複雜性大,:pencil2:**同一詞在不同語境可能有多重含義(同義詞),僅有句子上下文才能釐清意**義 - 句子結構可能含糊或具語法歧義,例如"老師用書教學生",難以判斷是老師使用書籍教學還是學生擁有書籍 - Understanding language can be challenging ![image](https://hackmd.io/_uploads/rJ5xjBnpp.png =300x) ![image](https://hackmd.io/_uploads/SJAYvrhap.png =200x) - Transformer架構出現產生了革命性變化 - **Scale efficiently** - **Parallel process** - **Attention to input meaning** 2017年,Google和多倫多大學發表的論文《Attention is All You Need》後,一切改變,引入了Transformers架構,其能有效擴展以使用多核心GPU, 平行處理輸入數據,利用更大的訓練數據集,關鍵在於能學習**關注**其處理詞語的含義 #### Transformers架構 (Transformers architecture) :::success - **轉換器架構的優勢與應用** - 大幅提高自然語言任務性能 - 導致生成能力的爆炸性增長 - 能夠學習句子中所有詞語的相關性和上下文,而不僅僅是相鄰詞語 詳細筆記見[[Transformer] Self-Attention與Transformer](https://hackmd.io/fmJx3K4ySAO-zA0GEr0Clw) ::: ![image](https://hackmd.io/_uploads/B1s97U366.png =300x) - Self-attention ![image](https://hackmd.io/_uploads/By9EhShaa.png =300x) ![image](https://hackmd.io/_uploads/rJx9nBnTa.png =150x)![image](https://hackmd.io/_uploads/SJM9AShTa.png =100x)![image](https://hackmd.io/_uploads/HJxLkL26T.png =300x)![image](https://hackmd.io/_uploads/Sk2j0S3a6.png =220x)![image](https://hackmd.io/_uploads/Hy_GyLhpT.png =170x)![image](https://hackmd.io/_uploads/rkF4yIn6T.png =200x) ![image](https://hackmd.io/_uploads/SyVvJLhaT.png =200x)![image](https://hackmd.io/_uploads/rJatyI2T6.png =180x)![image](https://hackmd.io/_uploads/ByopkU2Ta.png =200x) - **轉換器架構的結構** - 分為編碼器(encoder)和解碼器(decoder)兩部分 - 兩部分共享許多相似性 - **處理文本的過程** - 將文本轉換為數值:分詞(tokenization) - 分詞後的輸入進入嵌入層(embedding layer) - 嵌入向量空間用於編碼單個分詞的意義和上下文 - **自注意力層的作用** - 輸入分詞和位置編碼一起輸入到自注意力層 - 模型分析輸入序列中分詞之間的關係 - **多頭自注意力的概念** - 轉換器架構有多頭自注意力,意味著多組自注意力權重或頭部獨立並行學習 - 每個自注意力頭部可能學習語言的不同方面 - **輸出處理** - 輸出通過全連接前饋網絡處理 - 最終通過softmax層轉換為每個詞語的機率分數 #### 使用Transformers架構生成文本 (Generating text with transformers) ![image](https://hackmd.io/_uploads/BJG1zU2aT.png =400x) - **翻譯任務範例** - 使用Transformers模型將法語短語翻譯成英語 - 過程包括:使用訓練網絡的同一分詞器(tokenizer)分詞輸入單詞、通過編碼器(encoder)的嵌入層、多頭注意力層、前饋網絡,到達編碼器輸出 - 編碼器的輸出代表輸入序列的深層結構和意義,這一表示形式被插入解碼器(decoder)中間,影響解碼器的自我注意力機制 - 解碼器基於編碼器提供的上下文理解預測下一個token,直到模型預測出序列終止token為止 - 最終的token序列被反分詞成單詞,得到輸出 - **輸出預測的多種方式** - 從softmax層的輸出預測下一個token有多種方式,這些方式會影響生成文本的創造性 - **Transformers架構總結** - 完整的Transformers架構包括編碼器和解碼器 - 編碼器將輸入序列編碼成深層表示,解碼器則利用編碼器的上下文理解生成新token - 翻譯範例展示了編碼器和解碼器的使用,但也可以將這些組件分開,用於架構的變體 - **模型類型** - 僅編碼器模型(Encoder Only Models): - 用於序列到序列模型,但輸入和輸出序列長度相同,如BERT - 編碼器-解碼器模型(Encoder Decoder Models): - 適用於翻譯等序列到序列任務,輸入和輸出序列長度可以不同,如BART和T5。 - 僅解碼器模型(Decoder Only Models): - 如GPT系列、BLOOM、Jurassic、LLaMA等,現今最常用,能夠泛化到大多數任務 ![image](https://hackmd.io/_uploads/Hk_ozLh66.png =400x) - **課程目標** - 提供足夠背景知識,理解世界上使用的各種模型之間的差異,能夠閱讀模型文檔 - 介紹提示工程(prompt engineering),即通過自然語言創建提示,而不是代碼,將在課程的下一部分探索 #### 提示與提示工程 (Prompting and prompt engineering) - **基本術語** - **提示(Prompt)**:輸入模型的文本。 - **推理(Inference)**:生成文本的行為。 - **完成(Completion)**:輸出文本。 - **上下文窗口(Context Window)**:對於提示可用的全文或記憶量。 - **提示工程(Prompt Engineering)** - 修改提示的語言或書寫方式以獲得所需結果 - 強大策略之一是在提示中包含要求模型執行的任務範例。 - **在上下文中學習(In-Context Learning,ICL)** 通過在提示中包含範例或額外數據幫助LLMs學習任務 - **零樣本推理(Zero-Shot Inference)**:在不提供範例的情況下,讓模型根據提示完成任務 ![image](https://hackmd.io/_uploads/S1yH48nTT.png =400x) - **單樣本推理(One-Shot Inference)**:在提示中包含一個範例 ![image](https://hackmd.io/_uploads/BkBFNLhT6.png =400x) - **少樣本推理(Few-Shot Inference)**:在提示中包含多個範例 ![image](https://hackmd.io/_uploads/HkvaHI3pa.png =500x) - **模型性能與規模** - 大型模型在零次推理中表現出色,能夠完成未特別訓練的多種任務 - 小型模型通常只擅長於訓練時相似的少數任務 - **微調(Fine-Tuning)** - 使用新數據對模型進行額外訓練,使其更能完成特定任務 - 如果包含過多範例未能提升模型性能,應考慮微調模型 - **模型選擇與配置** - 根據用例嘗試不同模型以找到適合的模型 - 一旦找到適合的模型,可以嘗試不同設置來影響模型生成的完成的結構和風格 #### 生成配置 (Generative configuration) #### 生成式AI項目生命周期 (Generative AI project lifecycle) #### AWS實驗室介紹 (Introduction to AWS labs) #### Lab 1 - 生成式AI使用案例:對話摘要 (Lab 1 - Generative AI Use Case: Summarize Dialogue) #### Lab 1 - Generative AI Use Case: Summarize Dialogue。生成式AI使用案例:對話摘要 --- ### 1-2. LLM pre-training and scaling laws #### 大型語言模型的預訓練 (Pre-training large language models) #### 訓練大型語言模型的計算挑戰 (Computational challenges of training LLMs) #### [選修:高效的多GPU計算策略 (Optional video: Efficient multi-GPU compute strategies)] #### 擴展法則與計算最優模型 (Scaling laws and compute-optimal models) #### 領域適應的預訓練 (Pre-training for domain adaptation) #### 領域特定訓練:BloombergGPT (Domain-specific training: BloombergGPT) #### 第一週測驗 (Week 1 quiz)