台灣地區繁體中文版本 | 完整的 AI 工程師學習路徑指南 從基礎數學到 LLM 應用開發的系統化學習筆記
本專案涵蓋從基礎到進階的 AI 技術學習筆記,包含完整的實作範例與專案演練。
-
- 資料抽取(Extract)、轉換(Transform)、載入(Load)完整流程
- 實作範例:使用 Pandas 處理 CSV、JSON、SQL 資料源
- 進階技巧:資料清洗、異常值處理、資料驗證
-
- Python 基礎語法:變數、資料型別、控制流程
- 物件導向程式設計:類別、繼承、多型
- 實用套件:collections、itertools、functools
-
- NumPy 陣列操作:索引、切片、廣播機制
- Pandas DataFrame 進階技巧:merge、groupby、pivot_table
- 效能優化:向量化運算、記憶體管理
-
- TensorFlow 2.x 完整教學:Eager Execution、tf.function
- Keras API 整合:Sequential、Functional、Subclassing 模型
- 模型部署:TensorFlow Serving、TensorFlow Lite
-
- Keras 3.0 多後端支援:TensorFlow、PyTorch、JAX
- 自訂層(Custom Layers)與模型
- Callback 機制:EarlyStopping、ModelCheckpoint、TensorBoard
-
- PyTorch 基礎:Tensor 操作、自動微分
- Dataset 與 DataLoader 設計模式
- torch.compile() 加速推論(PyTorch 2.x)
- 分散式訓練:DDP、FSDP
-
- YOLOv8、YOLOv9、YOLOv10 完整比較
- 物件偵測、實例分割、姿態估計
- 自訂資料集訓練:標註工具使用(Roboflow、CVAT)
-
- GaLore 記憶體高效訓練技術
- 醫療對話系統實作
- 與 LoRA、QLoRA 的比較分析
-
- LangChain 核心概念:Chains、Agents、Memory
- LangGraph 工作流程編排
- LangSmith 可觀測性與除錯
-
- 實驗追蹤、模型註冊、模型部署
- MLflow Projects 可重現性
- MLflow Models 多框架支援
-
- DOVER、FAST-VQA 等論文實作
- 視訊品質評估指標與方法
-
- SAM2 架構分析:記憶體注意力機制
- 影片物件追蹤實作
- 醫學影像分割應用
-
- 圖文混合檢索增強生成
- CLIP、BLIP 視覺編碼器整合
- PDF、圖片、表格混合處理
- 簡介
- 🚀 快速開始 ⭐ 新增!
- 2024-2025 最新技術追蹤
- 算法與資料結構
- 從AI到LLM基礎
- 深入LLM模型工程與LLM運維
- LLM應用工程
- AI研究前沿 2024-2025 ⭐ 新增!50篇論文+代碼
- 實作專案集錦
- 相關的更新Blog
- DeepLearningAI短課程學習紀錄
- 常見問題與解答
- 學習資源彙整
這個 Notes 主要是我自己對於 AI 工程師相關的知識以及技能的了解與整理,主要的目錄是根據 llm-course 進行延伸以及擴展,並加上一些 AI、ML、DL 以及一些資料分析相關的必備知識與技能整理。
不過目前會是以 LLM 為主,除了我之前就弄過的相關內容之外,其他的內容會是必須的才會被添加。
- ✅ 台灣地區繁體中文:使用台灣慣用的專業術語與表達方式
- ✅ 完整實作範例:每個章節都包含可執行的 Jupyter Notebook 和程式碼
- ✅ 專案導向學習:從實際專案中學習技術應用,而非單純理論
- ✅ 持續更新:追蹤 2024-2025 最新技術發展與產業趨勢
- ✅ 開源社群:歡迎提供建議、回報錯誤、貢獻內容
| 身分 | 學習重點 | 預期成果 |
|---|---|---|
| 📚 AI 初學者 | 從數學基礎開始系統化學習 | 8-12 個月掌握 AI/ML 基礎 |
| 💻 軟體工程師 | 快速掌握 LLM 應用開發 | 2-3 個月可開發 RAG 系統 |
| 🔬 資料科學家 | 深入學習深度學習與 LLM | 4-6 個月精通模型訓練與優化 |
| 🏢 企業開發者 | 學習將 AI 整合到產品中 | 3-4 個月可部署生產級應用 |
| 🎓 研究人員 | 深入模型架構與前沿技術 | 持續學習最新論文與實作 |
新手?不知道從哪裡開始? 我們為您準備了完整的學習導航系統!
| 文檔 | 說明 | 適合對象 |
|---|---|---|
| 📘 QUICKSTART.md | 5分鐘快速入門指南 | 所有人 - 快速了解如何使用本專案 |
| 🗺️ LEARNING_PATHS.md | 完整學習路徑規劃 | 想要系統化學習的人 |
| 📚 RESOURCES.md | 全面資源索引 | 需要工具、API、數據集等資源 |
| 🤝 CONTRIBUTING.md | 貢獻指南 | 想要參與專案建設的人 |
根據你的目標,選擇對應的快速實戰:
完成本課程後,您將能夠:
-
建立完整的 ML/DL Pipeline
- 資料收集 → 預處理 → 模型訓練 → 評估 → 部署
- 實作專案:手寫數字辨識、情感分析系統
-
開發 LLM 應用
- RAG 系統:結合外部知識庫的問答機器人
- Agent 系統:多步驟推理的自主 AI
- 實作專案:台灣繁中客服機器人、文件分析助手
-
微調與部署模型
- 使用 LoRA/QLoRA 微調開源 LLM
- 量化與優化:GGUF、GPTQ、AWQ
- 部署:vLLM、Ollama、TensorRT-LLM
-
掌握 MLOps 流程
- 實驗追蹤:MLflow、Weights & Biases
- 模型監控:LangSmith、Arize Phoenix
- CI/CD:GitHub Actions、Docker
2024 年之後 LLM 與多模態技術的演進速度更快,以下整理近期值得追蹤的重點,並對應到本筆記中可以延伸閱讀或實作的章節:
- OpenAI GPT-4o / GPT-4o mini(2024.05):多模態(文字、影像、音訊)一次性整合,延伸出的 Responses API 已在 LLM 應用工程 中加入可直接執行的範例程式。
- OpenAI o1 reasoning 系列(2024.09):針對長鏈推理與程式問題提供多步驟思考結果,建議搭配
model=gpt-4o或model=o1-mini進行對照測試。 - Meta Llama 3(2024.04):提供 8B / 70B 開源權重,指令調優版支援 8K+ context,可在
1.LLM 部署與6.推論優化章節套用。 - Google Gemini 1.5 Pro / Flash(2024.02):原生支援百萬 token 長上下文與多模態輸入,適合整合至多媒體 RAG 或 Agent 任務。
- Mistral Large 2(2024.07) 與 Microsoft Phi-3.5 / Phi-4(2024 Q3-Q4):在雲端與邊緣端提供更輕量的模型選擇,便於在
8.邊緣與端側所述場景中部署。
- LangGraph 0.2+:官方提供耐久執行、檢查點、LangSmith 追蹤與 LangGraph Studio 可視化的整合,在 Agent 工作流筆記 中新增了更新摘要與範例程式。
- Model Context Protocol(MCP):成為 OpenAI、Anthropic 等工具調用的共同標準,使用 Python SDK 就能快速建立 MCP 伺服器,相關說明新增於 Agent 工具整合章節。
- CrewAI、AutoGen、LlamaIndex 2025 系列更新:針對多 Agent 協作、任務排程、觀測性加強,對應資料更新於
3.Agent與5.進階 RAG章節。
- vLLM 0.4.x、SGLang、TensorRT-LLM 0.10:提供多路併發、分塊 KV Cache 與 Streaming 的高效率推論,筆記在
6.推論優化節補充了差異與部署建議。 - Ollama 0.3、LM Studio 0.3:本地模型管理器支援動態量化、OpenAI-Compatible API,可以與
RAG/Agent範例直接接軌。 - OpenTelemetry GenAI、LangSmith / Arize Phoenix 2024:建立評測與追蹤基礎建設,在
產品級評測章節加入了新的指引。
- 先閱讀 LLM 應用工程 的更新章節,裡面整理了最新模型、推論框架與安全清單。
- 嘗試執行「Responses API × LangGraph Agent」的組合範例:
- 依
README指引安裝openai,langgraph套件。 - 設定
OPENAI_API_KEY後,先測試responses_quickstart.py範例,確定多模態輸入正常。 - 進一步執行
langgraph_agent_demo.py,觀察耐久執行與工具調用紀錄如何在 LangSmith 中被追蹤。
- 依
以上整理會持續更新,若有新的模型或工具,也會在對應章節補充評測與實作紀錄。
這邊主要會是我算法練習的記錄以及閱讀的心得。雖然我不是大學教授或專家等級的,所以目前難免會有些錯誤,歡迎大家指正。
我的算法題練習倉庫:LeetcodePractice
在深度學習時代,許多人質疑是否還需要學習傳統演算法。答案是:絕對需要!
-
優化模型效能:理解時間/空間複雜度,選擇合適的資料結構
- 範例:選擇 HashTable 而非 List 進行查找,從 O(n) 優化到 O(1)
-
設計高效 Pipeline:資料處理、特徵工程需要高效演算法
- 範例:使用堆積(Heap)處理 Top-K 問題,比排序更高效
-
理解深度學習:許多 DL 演算法本質是圖論、動態規劃的應用
- 範例:Transformer 的自注意力機制本質是圖的全連接
- 範例:Beam Search 是基於優先佇列的貪心演算法
-
技術面試必備:FAANG 等大廠 AI 職位仍重視演算法能力
- Google Brain、Meta AI、OpenAI 等團隊的面試都包含演算法題
以下是 AI 工程師最常用的資料結構及其在 AI 中的應用:
| 資料結構 | AI 應用場景 | 複雜度優勢 |
|---|---|---|
| 陣列與字串 | 資料預處理、Tokenization | O(1) 存取 |
| 雜湊表 | 詞彙表(Vocabulary)、去重 | O(1) 查找 |
| 樹與圖 | Transformer 注意力、知識圖譜 | 結構化資料表達 |
| 堆疊與佇列 | BFS/DFS、任務排程 | O(1) 插入刪除 |
| 優先佇列(Heap) | Top-K 問題、Beam Search | O(log n) 插入 |
| 前綴樹(Trie) | 自動補全、分詞 | O(m) 查找(m=字串長度) |
1. 排序與搜尋
- 快速排序、合併排序:O(n log n) 時間複雜度
- 應用:模型評估時的排序、超參數網格搜尋
- 二分搜尋:O(log n) 查找
- 應用:模型超參數調整、閾值選擇
2. 動態規劃
- 背包問題:資源分配(記憶體、GPU)
- 應用:模型壓縮、神經架構搜尋(NAS)
- 最長公共子序列(LCS):文字相似度
- 應用:文字差異比對、序列對齊
3. 圖論
- BFS/DFS:知識圖譜遍歷
- 應用:多跳推理、社群偵測
- 最短路徑(Dijkstra):推薦系統
- 應用:社群網路分析、路徑規劃
- 拓樸排序:任務依賴管理
- 應用:計算圖優化、DAG 調度
4. 貪心演算法
- Huffman 編碼:資料壓縮
- 應用:模型量化、資料傳輸
- 區間排程:GPU 任務排程
- 應用:多任務訓練、批次處理優化
基礎題(30 題) - 建立扎實基礎
陣列:
- LeetCode 1: Two Sum(雜湊表基礎)
- LeetCode 26: Remove Duplicates from Sorted Array
- LeetCode 283: Move Zeroes
- LeetCode 88: Merge Sorted Array
字串:
- LeetCode 125: Valid Palindrome
- LeetCode 344: Reverse String
- LeetCode 242: Valid Anagram
- LeetCode 49: Group Anagrams(適合 Tokenization)
雜湊表:
- LeetCode 1: Two Sum
- LeetCode 217: Contains Duplicate
- LeetCode 383: Ransom Note
- LeetCode 454: 4Sum II
鏈結串列:
- LeetCode 21: Merge Two Sorted Lists
- LeetCode 141: Linked List Cycle
- LeetCode 206: Reverse Linked List
中階題(50 題) - 深入理解
樹:
- LeetCode 94: Binary Tree Inorder Traversal
- LeetCode 102: Binary Tree Level Order Traversal(BFS 基礎)
- LeetCode 226: Invert Binary Tree
- LeetCode 543: Diameter of Binary Tree
圖論:
- LeetCode 133: Clone Graph
- LeetCode 200: Number of Islands(DFS/BFS)
- LeetCode 207: Course Schedule(拓樸排序)
- LeetCode 785: Is Graph Bipartite?
動態規劃:
- LeetCode 70: Climbing Stairs
- LeetCode 121: Best Time to Buy and Sell Stock
- LeetCode 300: Longest Increasing Subsequence
- LeetCode 1143: Longest Common Subsequence(文字相似度)
回溯:
- LeetCode 46: Permutations
- LeetCode 78: Subsets
- LeetCode 39: Combination Sum
進階題(20 題,AI 相關) - 模擬實際場景
Beam Search 相關:
- LeetCode 218: The Skyline Problem
- LeetCode 239: Sliding Window Maximum
- LeetCode 347: Top K Frequent Elements
圖論(知識圖譜):
- LeetCode 787: Cheapest Flights Within K Stops(多跳推理)
- LeetCode 1514: Path with Maximum Probability
- LeetCode 399: Evaluate Division(圖中的關係推理)
動態規劃(序列問題):
- LeetCode 72: Edit Distance(文字相似度核心)
- LeetCode 1143: Longest Common Subsequence
- LeetCode 10: Regular Expression Matching
貪心(資源分配):
- LeetCode 435: Non-overlapping Intervals(GPU 排程模擬)
- LeetCode 621: Task Scheduler
-
《算法圖解》(Grokking Algorithms)
- 適合對象:初學者
- 特色:視覺化圖解,淺顯易懂
- 台灣購買:天瓏書局有繁中版
-
- 適合對象:準備技術面試
- 特色:涵蓋台灣工程師常見面試題
-
《Elements of Programming Interviews》
- 適合對象:進階面試準備
- 特色:FAANG 級別的面試題
第 1-2 週:基礎資料結構
- 每天 2 題 LeetCode Easy
- 實作基本資料結構(不使用內建庫)
第 3-4 週:常用演算法
- 每天 1-2 題 Medium
- 每週總結一種演算法類型
第 5-6 週:AI 相關應用
- 實作 Beam Search、Viterbi 等 AI 演算法
- 閱讀 Transformer 原始碼
第 7-8 週:系統設計與優化
- 分析開源專案的演算法實作
- 優化自己的專案程式碼
記住:演算法不是為了刷題而刷題,而是培養解決問題的思維方式。每道題都要思考:
- 這個問題的本質是什麼?
- 有沒有更高效的解法?
- 這個技巧能否應用在我的 AI 專案中?
這邊主要是根據 LLM course 上面的目錄為基礎的加深以及補強。
主要內容為數學基礎、資料分析跟處理、機器學習、深度學習中的 NLP 以及 CV 和 MLOps
(為原內容再加深之外再加上CV 跟 MLOps等工作上可能會用到的內容)
📁 詳細內容請參閱:1.從AI到LLM基礎/README.md - 包含完整的學習路徑、實作項目建議和最新技術更新
本章節涵蓋從傳統機器學習到深度學習的完整知識體系:
- ✅ 數學基礎:線性代數、微積分、機率統計、優化理論
- ✅ Python 與資料科學:NumPy、Pandas、Matplotlib、Scikit-learn
- ✅ 機器學習:傳統 ML 演算法、特徵工程、模型評估
- ✅ 深度學習:TensorFlow、PyTorch、Keras 三大框架
- ✅ 電腦視覺:CNN、物件檢測、圖像分割
- ✅ 自然語言處理:Transformer、BERT、GPT 系列
- ✅ MLOps 基礎:模型部署、版本控制、實驗追蹤
1.從AI到LLM基礎/
├── 1.Math_4_ML/ # 機器學習數學基礎
├── 2.AI_Intro/ # AI 簡介與發展歷史
├── 3.ML_&_Data_Analysis/ # 機器學習與資料分析
└── 4.DL/ # 深度學習(包含CV和NLP)
根據您的背景和目標,選擇適合的學習路徑:
預計時間:8-13 週 學習順序:
- Week 1-2:數學基礎複習(線性代數、微積分、機率統計)
- Week 3-4:Python 程式設計基礎 + NumPy/Pandas
- Week 5-7:機器學習演算法(Scikit-learn)
- Week 8-10:深度學習入門(PyTorch 或 TensorFlow 擇一)
- Week 11-13:實作專案(選擇 CV 或 NLP 方向)
推薦起手式:
# 第一個 ML 專案:鳶尾花分類
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
# 載入資料
iris = load_iris()
X_train, X_test, y_train, y_test = train_test_split(
iris.data, iris.target, test_size=0.2, random_state=42
)
# 訓練模型
clf = RandomForestClassifier(n_estimators=100)
clf.fit(X_train, y_train)
# 評估
y_pred = clf.predict(X_test)
print(f"準確率:{accuracy_score(y_test, y_pred):.2%}")
# 輸出:準確率:100.00%預計時間:10-14 週 學習順序:
- Week 1-2:快速複習數學(重點:矩陣運算、梯度下降)
- Week 3-5:ML 演算法理論與實作
- Week 6-9:深度學習框架精通(建議 PyTorch)
- Week 10-12:專案實戰(Kaggle 競賽)
- Week 13-14:MLOps 入門(MLflow、Docker)
關鍵差異點:
- ✅ 可跳過基礎 Python 教學
- ✅ 直接從 NumPy 進階操作開始
- ✅ 重點放在演算法原理與優化
- ✅ 提早接觸生產環境部署
實戰範例:建立一個完整的 ML Pipeline
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
from sklearn.svm import SVC
# 建立完整的 Pipeline
pipeline = Pipeline([
('scaler', StandardScaler()), # 標準化
('pca', PCA(n_components=2)), # 降維
('classifier', SVC(kernel='rbf')) # 分類器
])
# 一行搞定訓練
pipeline.fit(X_train, y_train)
# 一行搞定預測
y_pred = pipeline.predict(X_test)
# Pipeline 的優點:自動處理資料轉換流程預計時間:4-5 週 學習順序:
- Week 1:Transformer 架構深入理解
- Week 2:Hugging Face Transformers 套件實戰
- Week 3:模型微調技術(LoRA、QLoRA)
- Week 4:RAG 系統開發
- Week 5:Agent 與 LangChain
必學技能清單:
- ✅ Transformer 注意力機制原理
- ✅ Tokenization 與 Embedding
- ✅ Prompt Engineering 技巧
- ✅ 向量資料庫(FAISS、Chroma)
- ✅ LangChain/LlamaIndex 框架
第一個 LLM 應用:
from transformers import pipeline
# 使用 Hugging Face Pipeline(超簡單!)
classifier = pipeline("sentiment-analysis")
# 分析情感
result = classifier("這家餐廳的牛肉麵真的超好吃!")
print(result)
# [{'label': 'POSITIVE', 'score': 0.9998}]
# 文本生成
generator = pipeline("text-generation", model="gpt2")
output = generator("台灣最美的地方是", max_length=50)
print(output[0]['generated_text'])-
台大資工 ML 課程(免費旁聽)
- 台大李宏毅教授機器學習課程
- 特色:全中文授課、理論與實作並重
- 適合:有基礎數學背景的學習者
-
資策會 AI 人才培訓(付費,政府補助)
- 針對轉職需求設計
- 提供就業媒合服務
-
各大學推廣教育
- 政大、台大、成大等開設 AI 學分班
- 適合在職進修
-
ML/DL 讀書會
-
線上社群
- PTT AI_ML 板
- Facebook 社團:「台灣人工智慧學校校友會」
- Discord:「台灣 AI 工程師交流」
-
競賽平台
- AIdea 競賽平台:台灣企業出題
- T-Brain:趨勢科技主辦
-
書籍
- 《深度學習入門教室》(碁峰出版)
- 《Python 機器學習實作》(旗標出版)
- 《TensorFlow 2.0 深度學習快速入門》(博碩出版)
-
YouTube 頻道
-
部落格與技術文章
# 1. 安裝 Anaconda(推薦新手)
# 下載:https://www.anaconda.com/download
# 2. 建立專用環境
conda create -n ai-env python=3.10
conda activate ai-env
# 3. 安裝常用套件
conda install numpy pandas matplotlib scikit-learn jupyter
pip install torch torchvision torchaudio # PyTorch
pip install transformers datasets # Hugging Face
# 4. 驗證安裝
python -c "import torch; print(torch.__version__)"-
Google Colab(最推薦新手)
- 免費 GPU(T4)
- 無需設定環境
- 直接開始:https://colab.research.google.com
-
Kaggle Notebooks
- 免費 GPU(P100 或 T4)
- 每週 30 小時 GPU 時數
- 內建資料集
-
Paperspace Gradient
- 免費層級提供基本 GPU
- 適合長時間訓練
- 台智雲(TWCC):台灣本地機房,低延遲
- 中華電信 HiCloud:企業級服務
之後再新增 ChatGPT for Data Analytics : Full Course 的學習紀錄跟內容。
點擊以打開詳細內容
在掌握機器學習之前,了解支撐了這些演算法的基本數學概念非常重要。不過其實大概看這三個影片課程大概就可以了,這一系列的影片教學有教學跟實作,其他的就有興趣再看。
1.線性代數:Linear Algebra for Machine Learning
這對於理解許多演算法至關重要,尤其是深度學習中使用的演算法。關鍵概念包括向量、矩陣、行列式、特徵值和特徵向量、向量空間和線性變換。
2.微積分:Calculus for Machine Learning
許多機器學習演算法涉及連續函數的最佳化,這需要了解導數、積分、極限和級數。另外多變量微積分和梯度的概念也很重要。
3.機率與統計:Probability for Machine Learning
這些對於理解模型如何從數據中學習並做出預測至關重要。 關鍵概念包括機率論、隨機變數、機率分佈、期望、變異數、協方差、相關性、假設檢定、信賴區間、最大似然估計和貝葉斯推理。
點擊以打開可延伸的閱讀以及參考連結:
可延伸的閱讀以及參考:
電子書:
其他相關連結:
-
線性代數自學課程,國內外學習資源: 本文彙整國內外線性代數自學課程,提供給規劃學習線性代數的朋友們參考。
-
3Blue1Brown - 線性代數的本質: 此系列的影片介紹幾何相關的概念
-
StatQuest with Josh Starmer - 統計基礎知識: 為許多統計概念提供簡單明了的解釋。
-
Aerin女士的AP統計直觀理解: 提供每個機率分佈背後的Medium文章清單。
-
沉浸式線性代數: 線性代數的另一種圖像化詮釋.
-
Khan Academy - 線性代數: 非常適合初學者,因為它以非常直觀的方式解釋了概念。
-
Khan Academy - 微積分: 一門涵蓋微積分所有基礎知識的互動課程。
-
Khan Academy - 機率與統計: 以易於理解的格式提供材料。
-
AI大致的歷史跟介紹:
-
AI課程推薦:
-
這邊我推薦大致可以通過這個課程入門AI: Harvard CS50’s Artificial Intelligence with Python – Full University Course
下面的課程在學完之後也可以參考下,不過基本上面那個應該就足夠了。
General Intro | Stanford CS221: Artificial Intelligence: Principles and Techniques (Autumn 2021)
MIT 6.034 Artificial Intelligence, Fall 2010
可以從上面的內容發現,隨著時間的演變,這些基礎學科的內容著重的部分其實也有很多改變,所以要學的話大概也就學自己需要的就可以了。
-
Python 是一種強大而靈活的程式語言,由於其可讀性、一致性和強大的資料科學庫生態系統,特別適合機器學習。
核心概念:
- 基本語法:變數、資料型別、控制流程(if/else、for/while)
- 資料結構:List、Tuple、Dictionary、Set
- 函數與模組:自訂函數、Lambda 函數、模組匯入
- 物件導向:類別、繼承、多型、封裝
推薦資源:
實用技巧:
# 1. List Comprehension(列表推導式)- 超實用!
squares = [x**2 for x in range(10)]
even_squares = [x**2 for x in range(10) if x % 2 == 0]
# 2. Dictionary Comprehension
word_lengths = {word: len(word) for word in ['apple', 'banana', 'cherry']}
# 3. Lambda 函數與 map/filter
numbers = [1, 2, 3, 4, 5]
squared = list(map(lambda x: x**2, numbers))
evens = list(filter(lambda x: x % 2 == 0, numbers))
# 4. *args 和 **kwargs(可變參數)
def flexible_function(*args, **kwargs):
print(f"位置參數: {args}")
print(f"關鍵字參數: {kwargs}")
flexible_function(1, 2, 3, name="Alice", age=30)NumPy - 數值運算基礎
import numpy as np
# 陣列建立
arr = np.array([1, 2, 3, 4, 5])
matrix = np.array([[1, 2], [3, 4]])
# 廣播機制(Broadcasting)- NumPy 的殺手級特性
a = np.array([1, 2, 3])
b = np.array([[1], [2], [3]])
result = a + b # (3,) + (3,1) → (3,3)
# 向量化運算(比迴圈快 100 倍!)
# 錯誤寫法(慢)
result = []
for i in range(len(arr)):
result.append(arr[i] ** 2)
# 正確寫法(快)
result = arr ** 2
# 實用函數
np.mean(arr) # 平均值
np.std(arr) # 標準差
np.dot(a, b) # 矩陣乘法
np.linalg.inv(A) # 矩陣反矩陣Pandas - 資料處理神器
import pandas as pd
# 讀取資料(支援多種格式)
df = pd.read_csv('data.csv')
df = pd.read_excel('data.xlsx')
df = pd.read_json('data.json')
# 資料探索
df.head() # 前 5 筆
df.info() # 資料概況
df.describe() # 統計摘要
df.isnull().sum() # 缺失值統計
# 資料清洗
df = df.dropna() # 刪除缺失值
df['age'].fillna(df['age'].mean()) # 填補缺失值
# 資料篩選
df[df['age'] > 30] # 條件篩選
df.query('age > 30 and city == "Taipei"') # SQL 風格查詢
# 分組聚合
df.groupby('city')['price'].mean() # 各城市平均價格
df.pivot_table(values='sales', index='month', columns='product')
# 資料合併
pd.merge(df1, df2, on='id', how='left') # SQL JOIN
pd.concat([df1, df2], axis=0) # 垂直合併Matplotlib & Seaborn - 資料視覺化
import matplotlib.pyplot as plt
import seaborn as sns
# Matplotlib 基礎
plt.figure(figsize=(10, 6))
plt.plot(x, y, label='線圖')
plt.scatter(x, y, label='散點圖')
plt.xlabel('X 軸')
plt.ylabel('Y 軸')
plt.title('標題')
plt.legend()
plt.show()
# Seaborn 進階(更美觀)
sns.set_style("whitegrid")
sns.scatterplot(data=df, x='age', y='salary', hue='gender')
sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm')推薦課程:
資料預處理占據機器學習專案 70-80% 的時間,是最重要的環節!
處理缺失值:
from sklearn.impute import SimpleImputer
# 策略 1:刪除
df_cleaned = df.dropna() # 刪除有缺失值的列
# 策略 2:填補
# 數值型:用平均值、中位數、眾數
imputer = SimpleImputer(strategy='mean')
df['age'] = imputer.fit_transform(df[['age']])
# 類別型:用眾數或特殊標記
df['city'].fillna('Unknown', inplace=True)
# 策略 3:預測填補(進階)
from sklearn.ensemble import RandomForestRegressor
# 用其他特徵預測缺失值處理異常值:
# 方法 1:IQR(四分位距)法
Q1 = df['price'].quantile(0.25)
Q3 = df['price'].quantile(0.75)
IQR = Q3 - Q1
lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR
# 移除異常值
df = df[(df['price'] >= lower_bound) & (df['price'] <= upper_bound)]
# 方法 2:Z-Score 法
from scipy import stats
z_scores = np.abs(stats.zscore(df['price']))
df = df[z_scores < 3] # 保留 Z-score < 3 的資料特徵編碼:
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
# 標籤編碼(有序類別)
le = LabelEncoder()
df['education'] = le.fit_transform(df['education'])
# 'High School' → 0, 'Bachelor' → 1, 'Master' → 2
# One-Hot 編碼(無序類別)
df_encoded = pd.get_dummies(df, columns=['city'], drop_first=True)
# city: Taipei, Kaohsiung, Taichung
# → city_Kaohsiung, city_Taichung(兩個二進位欄位)
# 使用 Scikit-learn(更靈活)
from sklearn.preprocessing import OneHotEncoder
encoder = OneHotEncoder(sparse=False, drop='first')
encoded_features = encoder.fit_transform(df[['city']])特徵縮放:
from sklearn.preprocessing import StandardScaler, MinMaxScaler
# 標準化(Z-score normalization)- 常用於 SVM、神經網路
scaler = StandardScaler()
df_scaled = scaler.fit_transform(df[['age', 'salary']])
# 結果:mean=0, std=1
# 正規化(Min-Max scaling)- 常用於距離相關演算法
scaler = MinMaxScaler()
df_normalized = scaler.fit_transform(df[['age', 'salary']])
# 結果:範圍 [0, 1]資料分割:
from sklearn.model_selection import train_test_split
# 基本分割
X_train, X_test, y_train, y_test = train_test_split(
X, y,
test_size=0.2, # 20% 測試集
random_state=42, # 固定隨機種子(可重現結果)
stratify=y # 保持類別比例(分類問題)
)
# 三分割(訓練/驗證/測試)
X_temp, X_test, y_temp, y_test = train_test_split(X, y, test_size=0.2)
X_train, X_val, y_train, y_val = train_test_split(X_temp, y_temp, test_size=0.25)
# 最終比例:60% 訓練、20% 驗證、20% 測試推薦資源:
推薦課程:
1. 線性迴歸(Linear Regression)
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
# 訓練
model = LinearRegression()
model.fit(X_train, y_train)
# 預測
y_pred = model.predict(X_test)
# 評估
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
print(f"MSE: {mse:.2f}, R²: {r2:.2f}")
# 查看係數
print(f"係數: {model.coef_}")
print(f"截距: {model.intercept_}")2. 邏輯迴歸(Logistic Regression)
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, classification_report, confusion_matrix
model = LogisticRegression(max_iter=1000)
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
# 評估
print(f"準確率: {accuracy_score(y_test, y_pred):.2%}")
print("分類報告:\n", classification_report(y_test, y_pred))
print("混淆矩陣:\n", confusion_matrix(y_test, y_pred))
# 機率預測
y_proba = model.predict_proba(X_test)[:, 1] # 正類別機率3. 決策樹(Decision Tree)
from sklearn.tree import DecisionTreeClassifier, plot_tree
model = DecisionTreeClassifier(
max_depth=5, # 限制深度防止過擬合
min_samples_split=20, # 分裂所需最小樣本數
min_samples_leaf=10 # 葉節點最小樣本數
)
model.fit(X_train, y_train)
# 視覺化決策樹
plt.figure(figsize=(20, 10))
plot_tree(model, feature_names=feature_names, filled=True)
plt.show()
# 特徵重要性
importances = pd.DataFrame({
'feature': feature_names,
'importance': model.feature_importances_
}).sort_values('importance', ascending=False)4. 隨機森林(Random Forest)
from sklearn.ensemble import RandomForestClassifier
model = RandomForestClassifier(
n_estimators=100, # 樹的數量
max_depth=10,
random_state=42,
n_jobs=-1 # 使用所有 CPU 核心
)
model.fit(X_train, y_train)
# 特徵重要性(更穩定)
importances = model.feature_importances_5. 支援向量機(SVM)
from sklearn.svm import SVC
model = SVC(
kernel='rbf', # 徑向基函數核
C=1.0, # 正則化參數
gamma='scale'
)
model.fit(X_train, y_train)6. K 近鄰(K-NN)
from sklearn.neighbors import KNeighborsClassifier
model = KNeighborsClassifier(n_neighbors=5)
model.fit(X_train, y_train)
# 找最佳 K 值
for k in range(1, 21):
knn = KNeighborsClassifier(n_neighbors=k)
knn.fit(X_train, y_train)
print(f"K={k}, Accuracy={knn.score(X_test, y_test):.2%}")1. K-Means 聚類
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score
# 找最佳 K(Elbow Method)
inertias = []
for k in range(2, 11):
kmeans = KMeans(n_clusters=k, random_state=42)
kmeans.fit(X)
inertias.append(kmeans.inertia_)
# 視覺化 Elbow
plt.plot(range(2, 11), inertias, marker='o')
plt.xlabel('Number of clusters')
plt.ylabel('Inertia')
plt.show()
# 訓練最終模型
kmeans = KMeans(n_clusters=3, random_state=42)
clusters = kmeans.fit_predict(X)
# 評估(Silhouette Score:-1 到 1,越高越好)
score = silhouette_score(X, clusters)
print(f"Silhouette Score: {score:.2f}")2. 主成分分析(PCA)
from sklearn.decomposition import PCA
# 降維
pca = PCA(n_components=2) # 降至 2 維
X_reduced = pca.fit_transform(X)
# 解釋變異量
print(f"解釋變異量: {pca.explained_variance_ratio_}")
# 例如:[0.45, 0.35] 表示前兩個主成分解釋 80% 變異
# 視覺化
plt.scatter(X_reduced[:, 0], X_reduced[:, 1], c=y)
plt.xlabel('PC1')
plt.ylabel('PC2')
plt.show()推薦資源:
- Scikit-learn Crash Course(有 ipynb)
- Python for Data Science Course(有 ipynb)
交叉驗證(Cross-Validation):
from sklearn.model_selection import cross_val_score, KFold
# K-Fold 交叉驗證
kfold = KFold(n_splits=5, shuffle=True, random_state=42)
scores = cross_val_score(model, X, y, cv=kfold, scoring='accuracy')
print(f"平均準確率: {scores.mean():.2%} (+/- {scores.std():.2%})")
# 分層交叉驗證(保持類別比例)
from sklearn.model_selection import StratifiedKFold
skfold = StratifiedKFold(n_splits=5)
scores = cross_val_score(model, X, y, cv=skfold)超參數調整:
from sklearn.model_selection import GridSearchCV
# 網格搜尋
param_grid = {
'n_estimators': [50, 100, 200],
'max_depth': [5, 10, 15],
'min_samples_split': [2, 5, 10]
}
grid_search = GridSearchCV(
RandomForestClassifier(),
param_grid,
cv=5,
scoring='accuracy',
n_jobs=-1,
verbose=1
)
grid_search.fit(X_train, y_train)
print(f"最佳參數: {grid_search.best_params_}")
print(f"最佳分數: {grid_search.best_score_:.2%}")
# 隨機搜尋(更快)
from sklearn.model_selection import RandomizedSearchCV
random_search = RandomizedSearchCV(
model, param_distributions=param_grid, n_iter=20, cv=5
)常見陷阱與解決方案:
-
過擬合(Overfitting)
- 症狀:訓練準確率 95%,測試準確率 70%
- 解法:增加資料、正則化、減少模型複雜度、資料增強
-
欠擬合(Underfitting)
- 症狀:訓練和測試準確率都很低
- 解法:增加模型複雜度、增加特徵、減少正則化
-
資料洩漏(Data Leakage)
- 錯誤:在分割資料前做標準化
- 正確:
# ❌ 錯誤 X = scaler.fit_transform(X) # 全部資料一起標準化 X_train, X_test = train_test_split(X, y) # ✅ 正確 X_train, X_test = train_test_split(X, y) scaler.fit(X_train) # 只用訓練集 fit X_train = scaler.transform(X_train) X_test = scaler.transform(X_test)
📚 資源:
- Python 資料科學手冊(裡面有ipynb ,colab)
- Real Python: 綜合資源,包含初學者和進階 Python 概念的文章和教學。
- freeCodeCamp - 學習 Python: 長影片,完整介紹了 Python 中的所有核心概念。
- Python 資料科學手冊: 免費的數位書籍,是學習 pandas、NumPy、Matplotlib 和 Seaborn 的絕佳資源。
- freeCodeCamp - 適合所有人的機器學習: 為初學者介紹不同的機器學習演算法。
- Udacity - 機器學習簡介: 免費課程,涵蓋 PCA 和其他幾個機器學習概念。
- 基礎知識: 這包括理解神經網路的結構,例如層、權重、偏差和激活函數(sigmoid、tanh、ReLU 等)
- 3Blue1Brown - 什麼是神經網路?: 該影片直觀地解釋了神經網路及其內部運作原理。
- 深度學習框架: 目前是在深度學習框架方面還是 Pytorch 最熱門,但是有些老應用跟某些 Google 相關的應用仍還是使用 Tensorflow 。假如要入門的話建議下面四個連結找一個入門並實作一個應用即可。
- freeCodeCamp - 深度學習速成課程: 此影片簡潔地介紹了深度學習中所有最重要的概念。
- 動手深度學習官網
- 動手深度學習包含 tensorflow,pytorch 程式碼的教學,不過要自己debug
- pytorch官網教學:建議學習路線: Introduction to PyTorch ->Image and Video ,Audio ,Text 按需學習,只學需要的就好(建議只先選一個)。
- tensorflow 官網教學: Begginner -> Adanced(也是建議按需學習)
- 訓練與最佳化: 熟悉反向傳播和不同類型的損失函數,例如均方誤差 (MSE) 和交叉熵。了解各種最佳化演算法,例如梯度下降、隨機梯度下降、RMSprop 和 Adam。 神經網路是許多機器學習模型的基本組成部分,特別是在深度學習領域。為了有效地利用它們,全面了解它們的設計和機制至關重要。
- 過度擬合: 了解過度擬合的概念(模型在訓練資料上表現良好,但在未見過的資料上表現不佳)並學習各種正則化技術(dropout、L1/L2 正則化、提前停止、資料增強)來防止過度擬合。
- 實作多層感知器 (MLP): 使用 PyTorch 建構 MLP,也稱為全連接網路。
📚 其他資源:
- Patrick Loeber - PyTorch 教學: 為初學者學習 PyTorch 的系列影片。
電腦視覺 (Computer Vision):電腦視覺是人工智慧的一個分支,它使電腦能夠從數位圖像和影片中提取、分析和理解有意義的資訊。電腦視覺的應用範圍廣泛,從自動駕駛汽車到醫學影像分析,再到增強現實。
深度學習在計算機視覺中的應用涉及到使用深度神經網絡(如卷積神經網絡)來進行圖像識別、分類、分割等任務。這些技術已廣泛應用於自動駕駛、醫療影像分析、監控系統等領域。
-
基本結構: 學習CNN的基本結構,包括卷積層、池化層、激活函數和全連接層。
-
經典架構: 了解經典的CNN架構如LeNet、AlexNet、VGG、GoogLeNet、ResNet等,以及它們在ImageNet等大型數據集上的應用。
- Stanford CS231n: Convolutional Neural Networks for Visual Recognition: 深入了解CNN理論和實踐的課程資源。
- Andrew Ng's Deep Learning Specialization: 包括卷積神經網絡的專門課程。
-
圖像分類: 使用深度學習模型進行圖像分類任務,包括單標籤和多標籤分類。
-
物體檢測: 了解區域提議網絡(RPN)及其在Faster R-CNN中的應用,以及其他物體檢測方法如YOLO和SSD。
- YOLO: Real-Time Object Detection: 了解YOLO算法的實際應用。
- Faster R-CNN Paper: 了解物體檢測中的Faster R-CNN模型。
-
語義分割: 使用全卷積網絡(FCN)、U-Net等模型對圖像進行像素級的分類。
-
實例分割: 了解Mask R-CNN等模型,實現對圖像中不同物體實例的區分。
- U-Net Paper: 針對生物醫學圖像分割的U-Net模型介紹。
- Mask R-CNN Paper: 詳細介紹實例分割的Mask R-CNN模型。
-
GAN基礎: 學習生成對抗網絡的基本原理,包括生成器和判別器的設計。
-
應用: 探索GAN在圖像生成、圖像風格轉換、超分辨率等方面的應用。
- Ian Goodfellow's GAN Paper: GAN的原始論文。
- DCGAN Tutorial: 使用PyTorch進行DCGAN的實踐教程。
-
Vision Transformer (ViT): 了解Transformer架構在計算機視覺中的應用,特別是在圖像分類等任務中的表現。
- Vision Transformer Paper: 詳細介紹ViT的理論和應用。
-
實踐平台: 使用Kaggle等平台進行實踐,參與計算機視覺比賽和項目。
-
學習工具: 使用TensorFlow、PyTorch等框架進行模型設計和訓練。
- PyTorch Documentation: PyTorch的官方文檔和教程。
- TensorFlow for Deep Learning: TensorFlow的深度學習指南。
這些內容涵蓋了深度學習在計算機視覺中的核心技術和應用,幫助學習者全面掌握從基礎到進階的知識與技能。
NLP 是人工智慧的一個令人著迷的分支,它彌合了人類語言和機器理解之間的差距。從簡單的文字處理到理解語言的細微差別,NLP 在翻譯、情緒分析、聊天機器人等許多應用中發揮著至關重要的作用。
- 文字預處理: 學習各種文字預處理步驟,例如分詞(將文字分割成單字或句子)、詞幹擷取(將單字還原為其詞根形式)、詞形還原(與詞幹擷取類似,但考慮上下文)、停用詞刪除等。
- 特徵提取技術: 熟悉將文字資料轉換為機器學習演算法可以理解的格式的技術。主要方法包括詞袋 (BoW)、詞頻-逆文檔頻率 (TF-IDF) 和 n-gram。
- 詞嵌入: 詞嵌入是一種詞表示形式,允許具有相似意義的詞具有相似的表示形式。主要方法包括 Word2Vec、GloVe 和 FastText。
- Jay Alammar - The Illustration Word2Vec:了解著名 Word2Vec 架構的一個好材料。
- 遞歸神經網路 (RNN): 了解 RNN 的工作原理,RNN 是一種設計用於處理序列資料的神經網路。探索 LSTM 和 GRU,這兩種能夠學習長期依賴關係的 RNN 變體。
- Jake Tae - PyTorch RNN from Scratch: 在 PyTorch 中實用且簡單地實作 RNN、LSTM 和 GRU 模型。
- colah's blog - Understanding LSTM Networks: 一篇更理論性的 LSTM 網路文章。
- 基於 Transformer 跟預訓練模型的 NLP: 由於基於類 Transformer 的模型能處理之前其他 經典 NLP 模型處理的任務,並且大部分任務能做得更好,所以我覺得這是必學的一部分。
📚 Resources:
- RealPython - NLP with spaCy in Python: 有關 Python 中用於 NLP 任務的 spaCy 函式庫的詳細指南。
- Kaggle - NLP Guide:一些 notebooks 和資源,用於 Python 中 NLP 的實踐解釋。
- 鳶尾花分類:使用 Scikit-learn 實作經典分類問題
- 房價預測:線性回歸與特徵工程實戰
- 手寫數字辨識:使用 CNN 實作 MNIST
- Kaggle 競賽參與:選擇入門競賽(如 Titanic)完整實作
- 圖像分類器:使用遷移學習(ResNet、VGG)建立應用
- 情感分析系統:使用 LSTM 或 Transformer 分析文本情感
- 物件檢測系統:使用 YOLOv8 建立實時檢測應用
- 圖像分割應用:使用 SAM2 進行精確分割
- 文本生成系統:使用 GPT-2 或小型 LLM 進行微調
更多實作建議請參閱:1.從AI到LLM基礎/README.md#實作項目建議
- PyTorch 2.x:引入
torch.compile()大幅提升推論效能,成為學術界和工業界首選 - Keras 3:多後端支援(TensorFlow、PyTorch、JAX),提供統一 API
- TensorFlow 2.16+:改進的分散式訓練支援,更好的 TPU 整合
- Segment Anything Model 2 (SAM2):Meta 開源的通用影像與視訊分割模型
- YOLOv10:最新的實時物件檢測模型,效能與準確度大幅提升
- Vision Transformer (ViT) 變體:DeiT、Swin Transformer 等,將 Transformer 成功應用於視覺任務
- Transformer 架構持續演進:為理解現代 LLM 打下堅實基礎
- 多模態模型:CLIP、BLIP 等視覺-語言模型,融合 CV 和 NLP
- 高效微調技術:LoRA、QLoRA 等參數高效方法,降低微調成本
- Hugging Face Transformers:已成為 NLP 和多模態模型的標準工具庫
- Kaggle 與 Colab:免費 GPU 資源,適合學習和實驗
- MLflow:實驗追蹤與模型管理,學習 MLOps 的最佳起點
- 循序漸進很重要:不要跳過數學基礎,它們是理解演算法的關鍵
- 實作比理論更重要:每學一個概念都要自己寫程式碼驗證
- 選擇一個框架深入:PyTorch、TensorFlow 或 Keras 選一個先精通
- 參與社群與競賽:Kaggle 是最好的實戰平台,可以從他人方案中學習
- 建立自己的作品集:將學習成果整理成 GitHub 專案,對求職很有幫助
- 關注最新發展但不盲從:基礎扎實比追逐新技術更重要
完成本章節的學習後,建議接續學習:
- 2.深入LLM模型工程與LLM運維:深入學習 LLM 的架構、訓練與部署
- 3.LLM應用工程:使用 LLM 開發實際應用(RAG、Agent 等)
- 5.DeepLearningAI短課程學習紀錄:系統化的深度學習課程筆記
這邊是從模型本身的架構到模型運作整個流程的必備知識跟技能。
大致如下:
1.模型了解與選擇
2.資料集收集,準備
3.模型預訓練,持續預訓練,微調(lora,Qlora ..),對齊(RLHF,DPO..)
4.模型優化和壓縮
5.模型部署以及系統整體流程維護
點擊以打開詳細內容
大型語言模型(LLM)在自然語言處理(NLP)領域取得了顯著的進步。這些模型大多基於Transformer架構,特別是解碼器部分,如GPT模型系列。理解LLM的基本輸入(tokens 令牌)和輸出(logits)以及注意力機制對於掌握LLM的工作原理至關重要。
詳細的LLM簡介可參照我翻譯的:
-
Stanford CS25-Apr 2024: V4 I Overview of Transformers - Transformers and LLMs: An Introduction(上)
-
Stanford CS25-Apr 2024: V4 I Overview of Transformers - Transformers and LLMs: An Introduction(下)
看完上面的連結對目前大模型的狀況變可以了解一二。
延伸閱讀與觀看:
-
Hugging Face- NLP Course: 難度較低的課程,適合快速入門和對 transformer 中的 NLP有一個了解。
-
[1hr Talk] Intro to Large Language Models: 大型語言模型的簡介講座。
-
CS25: Transformers United V4: 史丹佛大學的Transformer課程,涵蓋架構及應用,較為深入。
LLM通常基於Transformer架構,其中特別採用了僅使用解碼器的設計(例如GPT系列)。這些模型使用自注意力機制來處理輸入並生成輸出。其他的架構則之後會陸續介紹。
具體請參照:
-
最原始的 transformer 版本圖文詳細敘述:Transformer 運作原理圖解 by Jay Alammar
-
Let's reproduce GPT-2 (124M):跑完這個流程大概對程式碼跟模型的理解絕對會更深的多。
-
nanoGPT 流程圖像化 by Brendan Bycroft: 3D視覺化展示LLM內部運作。
延伸閱讀與觀看:
-
LLM Foundations: 包含詳細的模型架構介紹和理論背景。-這個類似上面的內容,不過內容比較廣泛以及片介紹性質。
-
LLM-from-scratch.ipynb: 簡化版的GPT模型實作範例。
-
Hugging Face - transformers doc: Hugging Face 的 transformers庫的文件和教學,對transformer 的方方面面都有介紹到,英文的版本最為詳細。
-
Building LLMs from Scratch: 這個類似 Let's build GPT: from scratch,不過更為詳細。
-
GPT-2圖解 by Jay Alammar: 專注於GPT架構的視覺化解釋。
將原始文本資料轉換為模型可以理解的格式,即token。這過程包括將文本拆分為標記(通常是單字或子單字)。
具體請參考:
- Let's build the GPT Tokenizer: 解釋如何構建GPT分詞器。
中文方面兩者擇一了解即可,找了很久沒找到繁中的,感覺可惜。
注意力機制是LLM的核心技術,它使得模型能夠在生成輸出時關注輸入的不同部分。這包括自注意力和縮放點積注意力機制,相關的介紹其實在前面架構介紹的內容裡也有提到。
延伸閱讀與觀看:
- Attention? Attention! by Lilian Weng: 對注意力機制必要性的正式介紹。
- 動手深度學習-注意力機制: 詳細介紹注意力機制的理論和實現。
模型使用不同的策略生成文本輸出。常見策略包括貪婪解碼、波束搜尋、top-k 採樣和核採樣。
- Decoding Strategies in LLMs: 對各種解碼策略的圖像化介紹及程式碼實現。
延伸閱讀與觀看:
- 如何產生文本: 透過 Transformers 以不同的解碼方法產生文本: 介紹各種文本生成策略及其實現。
下面的都是對岸的,沒辦法,因為流程跟繁中是最類似的,假如有繁中的話拜託讓我知道,萬分感謝。
在了解原始 transformer 的 Positional embeddings方法後,就可看下不同的方法,像是RoPE 這樣的相對位置編碼方案。或實現 YaRN (通過溫度因子乘以注意力矩陣) 跟 ALiBi (基於token距離的注意力獎懲) 來擴展上下文長度。
-
Extending the RoPE by EleutherAI: 總結不同位置編碼技術的文章.
-
Understanding YaRN by Rajat Chawla: 對YaRN的介紹.
說是新模型其實提出也有一段時間了,我感覺我問了Chat-gpt, Gemini, Claude 有哪些2024或2023新提出的大模型架構還比我自己找的文章速度要快,所以有興趣的自己去問問就好。
-
Mamba 介紹:一文讀懂Mamba:具有選擇狀態空間的線性時間序列建模
-
RWKV 介紹:RWKV 模型解析
-
TTT 介紹:Test-Time Training on Graphs with Large Language Models (LLMs)
-
REALM: Integrating Retrieval into Language Representation Models:結合了 Transformer 和外部記憶體,能夠存儲和檢索知識,提高模型在知識密集型任務上的表現。
-
RETRO: DeepMind 提出的模型,使用檢索器從大型資料庫中獲取資訊,增強模型的知識和事實準確性。
另外將以訓練的模型合併也是一個提升表先的方法,具體的可參考這個 mergekit 庫,這個課實現了許多融合的方法,如 SLERP, DARE, 和 TIES。
模型融合通常指的是將多個已訓練的模型合併成一個單一模型的過程。這不僅僅是用參數平均或投票決定輸出,而是在模型的權重和結構層面上進行合併。這個過程不需要再次訓練,可以通過數學操作(如球面線性內插(SLERP)或其他融合技術)將不同模型的知識整合起來。模型融合可用於創建一個表現更佳、更強大的模型,通常是將多個模型在特定任務上的優勢結合起來。
- Merge LLMs with mergekit: 關於使用mergekit進行模型融合的教程.
Mixtral 因其卓越的性能而重新使MoE架構流行起來。 與此同時,開源社區出現了一種frankenMoE,通過融合像 Phixtral這樣的模型,這是一個更經濟且性能良好的選項。MoE是一種結構,它包含多個子模型或“專家”,每個專家專門處理不同的任務或數據子集。在MoE架構中,一個“gate”或調度器決定對於給定的輸入,哪個專家被使用。這是一種稀疏啟動方法,可以大幅提升模型的容量和效率,因為不是所有的專家都會對每個輸入進行響應。
- Mixture of Experts Explained by Hugging Face: 關於MoE及其工作方式的詳盡指南.
這類模型像是( CLIP, Stable Diffusion, 或 LLaVA) 能處理多種類型的輸入(文本、圖像、音頻等)以及具備了統一的嵌入空間,從而具備了強大的應用能力,如文本到圖像。
-
Large Multimodal Models by Chip Huyen: 對多模態系統及其近期發展歷史的概述.
其實大致流程應該是: 1. 確定需求 2. 預訓練模型選擇 3. 構建或選擇資料集 4. 微調,對齊 5. 壓縮 6. 評估
只是我因為想把訓練方式根據資料量的差異由大排到小,
所以我就把 ( 預訓練與預訓練模型選擇 ) 放到第三個講。
另外,內容有誤的地方請立刻通知我!!
雖然從維基百科和其他網站找到原始資料很容易,
但在許多環境中收集成對的問答、範例和答案卻很困難。
與傳統的機器學習一樣,資料集的品質直接影響模型的成效,因此可說是微調過程中最重要的環節。
要用到的資料集又被稱為指令資料集(Instruction Dataset),可以簡單理解為問答的資料集。
可參考的整體流程:
-
Preparing a Dataset for Instruction tuning by Thomas Capelle:
- Alpaca和Alpaca-GPT4資料集的探索以及如何標準化資料。
-
GPT 3.5 for news classification by Kshitiz Sahay:
- 使用GPT 3.5建立範例資料集來微調Llama 2的新聞分類。
-
使用現有的資料集:資料集可以在Kaggle、Huggingface、GitHub和GitLab上尋找。
比較有名的包括TMMLU+ Dataset。此外,Huggingface上還有一些繁體中文訓練集可供使用。
- 如果沒有你需要的資料集,可以將英文或簡中翻譯成繁體中文,參考這個方法。
-
使用工具收集資料並製作成資料集:
-
使用類 Alpaca的方法產生資料集:使用OpenAI API(GPT)從頭開始產生合成資料。可以指定種子和系統提示來建立多樣化的資料集。
- 範例1(使用 Langchain 和 GPT-4 產生葡萄牙語臨床指導資料集): Generating a Clinical Instruction Dataset by Solano Todeschini: 關於如何使用GPT-4建立綜合指導資料集的教學。
- 簡單任務的範例2: How To Create Datasets for Finetuning From Multiple Sources! Improving Finetunes With Embeddings.
- 簡單任務的範例3: How I created an instruction dataset using GPT 3.5 to fine-tune Llama 2 for news classification
-
進階技巧:了解如何使用Evol-Instruct改進現有資料集,如何產生和Orca及phi-1論文中類似的高品質合成資料。
-
資料過濾:傳統技巧包括使用正規表示式、刪除近似重複項、關注具有大量標記的答案等。
- Dataset creation for fine-tuning LLM: 包含一些過濾資料集和上傳結果技術的Notebook。
-
提示詞模板:目前還沒有真正的標準方法來格式化說明範本和答案,因此了解不同的聊天範本很重要,如ChatML和Alpaca等。
- Chat Template by Matthew Carrigan: 關於提示模板的Hugging Face頁面。
目前我查詢並經過粗略的使用後覺得應該可使用的繁體中文大模型如下:
- 國研院-Llama3-TAIDE
- MediaTek Research -Breeze
- 繁體中文專家模型開源專案TAiwan Mixture of Experts」(Project TAME) yentinglin's Collections
- 群創光電-白龍(這個我不確定)
國外可用於微調的開放大模型(可在其他家雲端或本地運作)基本是 LLAMA, GEMMA, BLOOM, Mistral。
只能在遠端微調的大概就很多了(Gemini , GPT系列 等等)。
建議要練習的話先從LLAMA 模型開始就可以了,之後再根據情況挑選符合自己需求的就可。
繁體中文的微調可先試試前面三個。
快速入門:Pretraining LLMs-Deeplearning.ai 短課程
預訓練是一個非常漫長且成本高昂的過程,這就是為什麼這不是一般人在工作中的重點。
但是對預訓練期間發生的情況有一定程度的了解是很好的。
簡單來說,了解可以,類似玩具級的 GPT2 預訓練在 vast.ai 租個 4 GPU 的機器或在colab用a100(不過這個時間一定會超過24小時,需要寫checkpoint存儲模型跟腳本定時重新 load 一遍) 應該是可以實現的。
但是目前商業等級的實現沒四千萬別做,目前已知花最少錢訓練的是10萬美元,另外,我從新聞得知通常的訓練成本是120萬美元左右。
不過我想隨著時間的推進,之後應該會有更加高效以及更快速的方法出現。
-
目前號稱完全開源的預訓練模型:
- 1.olmo:號稱真正開源!AI2釋出OLMo語言模型和所有相關資料
- 2.LLM 360: 開源大語言模型框架,包含訓練和資料準備代碼、資料、指標和模型。
- 3.全球首個完全開源的大語言模型Dolly,性能堪比 GPT3.5!
-
資料處理流程: 預訓練需要龐大的資料集 (例如: Llama 2 使用 2 兆個tokens進行訓練) ,需要將這些資料集過濾、標記化並與預先定義的詞彙進行整理。
- LLMDataHub by Junhao Zhao: 用於預訓練、微調和 RLHF 的精選資料集清單。
- Training a causal language model from scratch by Hugging Face: 使用 Transformers 庫從頭開始預先訓練 GPT-2 模型。
- TinyLlama by Zhang et al.: 可在此項目很好地了解 Llama 模型是如何從頭開始訓練的。
- 使用pytorch,用搭积木的方式实现完整的Transformer模型
-
因果語言建模(Causal language modeling): 了解因果語言建模和掩碼語言建模(causal and masked language modeling)之間的區別,以及本例中使用的損失函數。更多高效率的預訓練知識可前往 Megatron-LM 或gpt-neox了解。
- Causal language modeling by Hugging Face: 解釋因果語言建模和屏蔽語言建模之間的差異以及如何快速微調 DistilGPT-2 模型。
-
縮放的規律: 縮放的規律 根據模型大小、資料集大小和用於訓練的計算量描述預期的模型性能。
- Chinchilla's wild implications by nostalgebraist: 討論縮放定律並解釋它們對大語言模型的意義。
-
高效能運算: 這有點超出了本文的範圍,但如果您打算從頭開始創建自己的LLMs(大語言模型)(硬體、分散式工作負載等),那麼更多有關 HPC 的知識是對你而言是必要的。
📚 參考資料:
- BLOOM by BigScience: 描述如何建立 BLOOM 模型的 Notion 頁面,其中包含大量有關工程部分和遇到問題的有用資訊。
- OPT-175 Logbook by Meta: 研究日誌顯示出了什麼錯的以及什麼是正確的。如果您計劃預先訓練非常大的語言模型(在本例中為 175B 參數),則非常有用。
預訓練模型僅針對下一個標記(next-token)預測任務進行訓練,這就是為什麼它們不是有用的助手。
SFT 允許您調整它們以回應指令。此外,它允許您根據任何資料(私人資料、GPT-4 無法看到的資料等)微調您的模型並使用它,而無需支付 OpenAI 等 API 的費用。
Decoder Only ,Encoder Only 跟 原始 Transformer 在進行訓練時的差異:
- Decoder Only ,Encoder Only 在訓練或微調時,問與答通常都是放在同一個地方(Decoder 或 Encoder),並在問與答使用 EOS,其他終止符號或模板區分問與答。
- 只是 Decoder only 的視為生成任務,而Encoder Only的則視為填空,原始 Transformer則是依照原本設定的方式進行訓練。
- 簡介跟教學:
- Finetuning Large Language Models-Deeplearning.ai短課程(推薦):
- 看完這個大概就對微調技術有個大致的了解了。
- 用人話講解微調技術:請只專注技術。
- Finetuning Large Language Models-Deeplearning.ai短課程(推薦):
- 全微調: 全微調是指訓練模型中的所有參數 ( 就是模型訓練,只是資料量不多,並且資料通常是特定任務或子領域上的 )。這不是一種有效的技術,但它會產生稍微好一點的結果.
- The Novice's LLM Training Guide by Alpin: 概述微調 LLM 時要考慮的主要概念和參數.
- LoRA: 一種基於低階適配器(low-rank adapters)的高效參數微調技術(PEFT)。我們不訓練所有參數,而是只訓練這些適配器(adapters)。
- LoRA insights by Sebastian Raschka: 有關 LoRA 以及如何選擇最佳參數的實用見解.
- Fine-Tune Your Own Llama 2 Model: 有關如何使用 Hugging Face 庫微調 Llama 2 模型的實作教學.
- Padding Large Language Models by Benjamin Marie: 為因果LLMs(causal LLMs)填充訓練範例的最佳實踐
- QLoRA: 另一個基於 LoRA 的 PEFT,它還將模型的權重量化為 4 bits,並引入分頁優化器來管理記憶體峰值。將其與Unsloth結合使用,可以在免費的 Colab 筆記本上運行。
- Axolotl: 一種用戶友好且功能強大的微調工具,用於許多最先進的開源模型。
- A Beginner's Guide to LLM Fine-Tuning: 有關如何使用 Axolotl 微調 CodeLlama 模型的教學.
- DeepSpeed: 針對多 GPU 和多節點設定的 LLM 的高效預訓練和微調(在 Axolotl 中實現)。
📚 參考資料:
經過監督微調後,RLHF 是用來使 LLM 的答案與人類期望保持一致的一個步驟。這個想法是從人類(或人工)回饋中學習偏好,這可用於減少偏見、審查模型或使它們以更有用的方式行事。它比 SFT 更複雜,並且通常被視為可選項之一。
-
簡介與入門:
- Reinforcement Learning From Human Feedback-Deeplearning.ai短課程(推薦):
- 看完這個大概就對RLHF有個大致的了解了。
- 一文看盡LLM對齊技術:RLHF、RLAIF、PPO、DPO
- An Introduction to Training LLMs using RLHF by Ayush Thakur: 這解釋了為什麼 RLHF 對於減少大語言模型的偏見和提高績效是可取的。
- Illustration RLHF by Hugging Face: RLHF 簡介,包括獎勵模型訓練和強化學習微調.
- RLHF from Deeplearning.ai: Deeplearning.ai 的RLHF短課程,適合快速入門。
- Reinforcement Learning From Human Feedback-Deeplearning.ai短課程(推薦):
-
偏好資料集: 這些資料集通常包含具有某種排名的多個答案,這使得它們比指令資料集更難產生.
- StackLLaMA by Hugging Face: 使用 Transformer 函式庫有效地將 LLaMA 模型與 RLHF 對齊的教學.
-
近端策略最佳化: 此演算法利用獎勵模型來預測給定文字是否被人類排名較高。然後使用該預測來最佳化 SFT 模型,並根據 KL 散度進行獎懲。
-
直接偏好優化: DPO 透過將其重新定義為分類問題來簡化流程。它使用參考模型而不是獎勵模型(無需訓練),並且只需要一個超參數,使其更加穩定和高效。
📚 參考資料:
- LLM Training: RLHF and Its Alternatives by Sebastian Rashcka: RLHF 流程和 RLAIF 等替代方案的概述.
- Fine-tune Mistral-7b with DPO:使用 DPO 微調 Mistral-7b 模型並重現NeuralHermes-2.5 的教學.
- [RL] Fine-Tuning Language Models from Human Preferences (RLHF) 論文筆記-ChatGPT鍊成術
- 详解大模型RLHF过程(配代码解读)
- LLM基石:RLHF及其替代技术
- 图解大模型RLHF系列之:人人都能看懂的PPO原理与源码解读
- RLAIF细节分享&个人想法
評估大型語言模型(LLMs)是流程中一個被低估的部分,因為評估這一個過程耗時且相對可靠性較低。你的下游任務應該指明你想要評估的內容,但記得古德哈特定律(Goodhart's law)提到的:“當一個衡量指標變成了目標,它就不再是一個好的衡量指標。”
-
簡介與入門:
- Evaluating and Debugging Generative AI Models Using Weights and Biases:
- Deeplearning AI 的短課程,適合快速入門。
- LLM Evaluation 如何评估一个大模型?: 別人的心得,可以參考下。
- Evaluating and Debugging Generative AI Models Using Weights and Biases:
-
傳統指標 Traditional metrics: 像困惑度(perplexity)和BLEU分數這樣的指標不再像以前那樣受歡迎,因為在大多數情況下它們是有缺陷的。但了解它們以及它們適用的情境仍然很重要。
- 固定長度輸入(有最大輸入限制)模型的困惑度 by Hugging Face: 困惑度(perplexity)的概述,並使用 Transformer 庫實現了它的程式碼。
- BLEU 使用風險 by Rachael Tatman: BLEU 分數及其許多問題的概述,並提供了示例。
-
通用基準 General benchmarks: 基於語言模型評估工具箱 Language Model Evaluation Harness,Open LLM排行榜 Open LLM Leaderboard 是用於通用大型語言模型(如ChatGPT)的主要基準。還有其他受歡迎的基準,如BigBench, MT-Bench等。
- 大型語言模型評估調查 by Chang et al.: 關於評估什麼、在哪裡評估以及如何評估的綜合性論文。
-
任務特定基準 Task-specific benchmarks: 如摘要、翻譯和問答等任務有專門的基準、指標甚至子領域(醫療、金融等),例如用於生物醫學問答 PubMedQA。
-
人類評估 Human evaluation: 最可靠的評估是用戶的接受度或由人類所做的比較。如果你想知道一個模型表現得如何,最簡單但最確定的方式就是自己使用它。
📚 參考文獻:
- 聊天機器人排行榜 by lmsys: 基於人類比較的通用大型語言模型的Elo評分。
量化或壓縮是將模型的權重(和啟動值)轉換成更低精度表示的過程。例如,原本使用16位元儲存的權重可以轉換成4位元表示。這種技術愈來愈重要,用來減少與大型語言模型(LLMs)相關的計算與記憶體成本。
-
簡介:
- 快速入門:Quantization Fundamentals with Hugging Face - Deep larning.AI短課程
- 量化簡介: 量化概述,absmax與零點量化,以及使用 LLM.int8()在程式碼上。
- 目前针对大模型进行量化的方法有哪些?
- 大语言模型量化相关技术
-
基礎技術: 瞭解不同的精確度層級(FP32、FP16、INT8等)以及如何使用absmax與零點技術(zero-point techniques)進行簡單的量化。
-
GGUF和llama.cpp: 最初設計用於在CPU上運行,llama.cpp 和GGUF格式已成為在消費級硬體上運行LLMs的最受歡迎的工具。
- 使用llama.cpp量化Llama模型: 關於如何使用llama.cpp和GGUF格式量化Llama 2模型的教學。
-
GPTQ和EXL2: GPTQ ,特別是 EXL2 ,提供了較快的速度,但只能在GPU上運行。模型量化也需要很長時間。
- 使用GPTQ進行4位元LLM量化:關於如何使用GPTQ演算法和AutoGPTQ量化LLM的教學。
- ExLlamaV2: 運行LLMs的最快程式庫: 指南;關於如何使用EXL2格式量化Mistral模型,並使用ExLlamaV2程式庫運行。
-
AWQ: 這種新格式比GPTQ更準確(困惑度更低),但使用的顯存更多,速度也不一定更快。
- 了解啟動感知權重量化 by FriendliAI: AWQ技術及其優勢的概述。
📚 參考文獻:
- LLM Note Day 14 - 量化 Quantization :筆記式版本的量化介紹。
這邊主要就是 LLM 部署, Agent, RAG,這類的知識與內容。
這邊主要新增的內容是 LLM 結合自動化以及把 LLM 當作 API 結合到實際的應用中。
例如:在解析完程式碼之後,把輸出的程式碼插入到編輯器中。或者將LLm融合到類似UIpath的運作中。
點擊以打開詳細內容
運行大型語言模型(LLMs)可能會因為硬體要求高而變得困難。根據您的使用案例,您可以選擇通過API(如GPT-4)使用模型,或者在本地運行它。以下是一步一步的指南,幫助您開始運行LLMs。
相關的 deeplearning.ai短課程:
- 使用LLM APIs 或 Agent 套件:
- Building Systems with the ChatGPT API: 有興趣或需要的可以嘗試看看。
- How Business Thinkers Can Start Building AI Plugins With Semantic Kernel: Deeplearning AI的短課程,使用的是微軟的技術棧跟雲端,有興趣或需要的可以嘗試看看。
- LangChain for LLM Application Development : 這個比較偏入門級的,使用的是LangChain 的技術棧。
- Functions, Tools and Agents with LangChain : 這個稍微深入,使用的是LangChain 的技術棧,並能學會使用函數,代理Agent以集相關的工具。
- Understanding and Applying Text Embeddings - deeplearning.ai短課程:可用於了解google-vertex-ai的平台。
- 運行開源 LLMs
- 提示工程(Prompt Engineering)
APIs 是部署 LLMs 的便捷方式。以下是如何使用一些常見的私有和開源 LLM APIs。
-
選擇 LLM API 提供商
- 私有 LLMs 提供商包括 OpenAI、Google、Anthropic 和 Cohere。
- 開源 LLMs 提供商包括 OpenRouter、Hugging Face 和 Together AI。
-
註冊並獲取 API Key
- 訪問所選提供商的網站,註冊一個帳戶並獲取 API Key。
- 例如,註冊 OpenAI 的 API Key 可以訪問 OpenAI 平台。
-
使用 API 進行請求
- 使用所獲取的 API Key,在您的應用程序中集成 API。
- 例如,使用 OpenAI 的 API,可以參考以下 Python 代碼:
import openai openai.api_key = 'your-api-key-here' response = openai.Completion.create( engine="text-davinci-003", prompt="Hello, world!", max_tokens=50 ) print(response.choices[0].text.strip())
如果您希望在本地運行開源 LLMs,可以按照以下步驟進行。
-
選擇開源 LLM
- 參考 Hugging Face Hub 尋找適合您的開源 LLM。
- 可以在 Hugging Face Spaces 直接運行一些模型,或者下載後本地運行。
-
使用 LM Studio 和同類型應用在本地運行模型
-
安裝 LM Studio。
-
選擇一個模型並下載,然後使用 LM Studio 運行。
-
參考 Run an LLM locally with LM Studio by Nisha Arya 的指南。
-
另一個選擇是 AnythingLLM : 相關教學
-
[推薦]適合搭配 python, RAG 開發的 Ollama : 相關教學
-
可以跟上面那個一樣使用CLI 操作的 llama.cpp
-
-
使用 Hugging Face 的 Transformer
- 安裝
transformers庫:pip install transformers
- 使用以下代碼加載並運行模型:
from transformers import pipeline generator = pipeline('text-generation', model='gpt2') response = generator("Hello, world!", max_length=50) print(response[0]['generated_text'])
- 安裝
優化提示可以大大改善 LLM 的輸出效果。以下是一些常見的提示工程技術。
-
零提示詞(Zero-shot)
- 直接向模型提出問題或指令,無需示例。
- 例如:
prompt = "What is the capital of France?"
-
少量提示詞(Few-shot)
- 提供一些示例,以幫助模型理解您的需求。
- 例如:
prompt = "Translate the following English sentences to French:\n\n1. Hello, how are you? -> Bonjour, comment ça va?\n2. What is your name? -> Comment tu t'appelles?\n3. Where is the nearest restaurant? -> Où est le restaurant le plus proche?\n4. How much does this cost? -> Combien ça coûte?"
-
思維鏈(Chain of Thought)與 ReAct
- 使用逐步思考的方式,引導模型逐步解決問題。
- 例如:
prompt = "First, let's consider the problem step by step. What is 5 plus 3? Then, what is the result multiplied by 2?"
-
相關學習資源
- Prompt engineering guide by DAIR.AI
許多任務需要結構化的輸出,如嚴格的模板或JSON格式。以下是一些工具和方法。
-
使用 LMQL 指導生成
- 安裝並使用 LMQL 庫來指導生成符合結構的輸出。
- 參考 LMQL - Overview 的介紹。
-
使用 Outlines 庫
- 安裝並使用 Outlines 庫來生成結構化輸出。
- 參考 Outlines - Quickstart 的快速入門指南。
-
相關學習資源
創建向量儲存是建立檢索增強生成(Retrieval Augmented Generation,簡稱RAG)流程的第一步。文件被加載、拆分,並使用相關的片段來產生向量表示(嵌入),這些向量表示將被存儲以便在推理過程中使用。
相關的 deeplearning.ai短課程:
- Large Language Models with Semantic Search:這門課程專注於大語言模型與語義搜索,教導如何利用大型語言模型(LLM)來提升搜索結果的相關性。
- 文檔導入 Ingesting documents: 文檔加載器是方便的包裝器,可以處理多種格式: PDF, JSON, HTML, Markdown, 等。 它們還可以直接從一些數據庫和API(GitHub, Reddit, Google Drive, 等)檢索數據。
- 文檔拆分 Splitting documents: 文本拆分器將文檔拆分成較小的、語義上有意義的片段。通常最好不要在n個字符後拆分文本,而是按照標題或遞迴地拆分,並附帶一些額外的元數據。
- LangChain - Text splitters: LangChain實現的不同文本拆分器列表。
- LangChain: Chat with Your Data : Deeplearning AI的短課程,使用的是LangChain的技術棧跟雲端,有興趣或需要的可以嘗試看看。
- 嵌入模型 Embedding models: 嵌入模型將文本轉換為向量表示。這允許對語言進行更深入、更細膩的理解,這對於進行語義搜索至關重要。
- Understanding and Applying Text Embeddings: 使用google家的產品了解詞向量。
- Sentence Transformers library: 流行的嵌入模型庫。
- MTEB Leaderboard: 嵌入模型的排行榜。
- 向量數據庫 Vector databases: 向量數據庫(如 Chroma, Pinecone, Milvus, FAISS, Annoy, 等)專為儲存嵌入向量而設計。它們支援基於向量相似性有效檢索與查詢最相似的數據。
- The Top 5 Vector Databases by Moez Ali: 最佳和最流行的向量數據庫比較。
- Vector Databases: from Embeddings to Applications : Deeplearning AI的短課程,使用的是Weaviate的技術棧跟雲端,有興趣或需要的可以嘗試看看。
- Building Applications with Vector Databases : Deeplearning AI的短課程,使用的是pinecone的技術棧跟雲端,有興趣或需要的可以嘗試看看。
借助 RAG,LLMs 可以從資料庫中檢索上下文文檔,以提高答案的準確性。RAG 是一種無需任何微調即可增強模型知識的流行方法。
- Orchestrators 協作器: Orchestrators 協作器 (如 LangChain, LlamaIndex, FastRAG, 等)是流行的框架,用於將您的 LLM 與工具、資料庫、記憶體等連接起來並增強他們的能力。
- Llamaindex - High-level concepts: 建造 RAG 管道時需要了解的主要概念。
- Building and Evaluating Advanced RAG Applications: Deeplearning AI 跟 Llamaindex共同推出的短課程。
- Pinecone - Retrieval Augmentation: 檢索增強流程概述。
- Retrievers 檢索器: 使用者指令未針對檢索進行最佳化。可以應用不同的技術(例如,多查詢檢索器、 HyDE, 等)來重新表述/擴展它們並提高效能。
- LangChain - Q&A with RAG: 建立典型 RAG 管道的逐步教學。
- 記憶: 為了記住先前的說明和答案,LLM 和 ChatGPT 等聊天機器人會將此歷史記錄添加到其上下文視窗中。此緩衝區可以透過匯總(例如,使用較小的 LLM)、向量儲存 + RAG 等來改進。
- LangChain - Memory types: 不同類型記憶體及其相關用途的清單。
- 評估: 我們需要評估文件檢索(上下文精確度和召回率)和生成階段(可信度和答案相關性)。可以使用 Ragas 和 DeepEval工具進行簡化。
- RAG pipeline - Metrics: 用於評估 RAG 管道的主要指標的概述。
現實應用程式可能需要複雜的管道,包括 SQL 或圖形資料庫,以及自動選擇相關工具和 API。這些先進技術可以改進基準解決方案並提供附加功能。
相關的 deeplearning.ai短課程: - Advanced Retrieval for AI with Chroma:這門課程專注於高級信息檢索技術,尤其是在使用大語言模型(LLM)和向量數據庫時的應用。課程涵蓋的主題包括查詢擴展、交叉編碼重排序,以及通過嵌入適配器來改進檢索結果。 - Multi AI Agent Systems with crewAI:這門課程專注於多AI代理系統(Multi-AI Agent Systems),使用CREW AI工具進行開發和協作。課程內容涵蓋如何設計和管理多個AI代理之間的交互,並通過協同工作來完成複雜任務。
- 查詢建構: 儲存在傳統數據庫中的結構化數據需要特定的查詢語言,如SQL、Cypher、元數據等。我們可以直接將用戶指令翻譯成查詢,通過查詢建構來存取數據。
- LangChain - Query Construction查詢建構: 關於不同類型查詢建構的博客文章.
- LangChain - SQL: 教程,介紹如何利用LLMs與SQL數據庫互動,包括Text-to-SQL和可選的SQL代理。
- 代理與工具: 代理透過自動選擇最相關的工具來增強LLMs的回答能力。這些工具可以像使用Google或Wikipedia那麼簡單,或者像Python解釋器或Jira這樣複雜。
- Pinecone - LLM agents(代理): 介紹不同類型的代理和工具。
- LLM Powered Autonomous Agents(代理) by Lilian Weng: 關於LLM代理的更理論性文章。
- Large Language Models with Semantic Search-deep learning.ai短課程:使LLM能更好的使用搜索引擎並優化輸入跟輸出。
- 後處理: 處理輸入到LLM的最後一步。它通過重新排序、RAG融合和分類來增強檢索文檔的相關性和多樣性。
- LangChain - OpenAI's RAG: 概述OpenAI使用的RAG策略,包括後處理。
文本生成是一個成本高昂的過程,需要昂貴的硬體設備。除了量化之外,還有各種技術被提出以最大化吞吐量並降低推論成本。
- 主要內容:
- GPU Inference by Hugging Face: 解釋如何在GPU上優化推論.
- LLM Inference by Databricks: 實際運作中優化LLM推論的最佳實踐。
- Flash Attention 閃存注意力: 優化注意力機制,將其複雜性從二次方變成線性以加快訓練和推論速度。
- Optimizing LLMs for Speed and Memory by Hugging Face: 解釋三種主要的速度和記憶體優化技術,即量化、閃存注意力和架構創新。
- Key-value cache 鍵值快取: 請多了解鍵值快取以及多查詢注意力(Multi-Query Attention (MQA))和(分組查詢注意力Grouped-Query Attention (GQA))帶來的改進。
- Speculative decoding 投機解碼: 使用小型模型產生草稿,然後由更大的模型審核,以加快文本生成速度。
- Assisted Generation by Hugging Face: HF版本的投機解碼,這是一篇有趣的博客文章,介紹了它的工作原理及其實現代碼。
在大規模部署大型語言模型(LLMs)是一項工程壯舉,可能需要多個GPU集群。在其他情景下,演示和本地應用可以更簡單的實現運作。
相關的 deeplearning.ai短課程: - Serverless LLM apps with Amazon Bedrock:主要內容是使用AWS部署一個LLM app - Building Generative AI Applications with Gradio:這門課程教授如何使用Gradio平台來構建生成式AI應用。課程內容包括如何設計和構建交互式的AI界面,讓用戶能夠輕鬆地與生成式AI模型進行互動。
- Local deployment 本地部署: 隱私是開源LLMs相對於私有LLMs的一個重要優勢。 本地LLM服務器 (LM Studio, Ollama, oobabooga, kobold.cpp, 等)利用這一優勢為本地應用提供動力。
- Demo deployment 演示部署:像 Gradio 和 Streamlit 這樣的框架有助於原型應用的開發和演示的分享。您也可以輕鬆地在線上部署,例如使用 Hugging Face Spaces。
- Streamlit - Build a basic LLM app: 使用Streamlit創建類似ChatGPT的基礎應用的教學。
- Server deployment 服務器部署: 大規模部署LLMs需要雲端 (詳見 SkyPilot) 或內部部署的基礎設施,並經常利用優化的文本生成框架,如 TGI, vLLM等。
- HF LLM Inference Container: D使用Hugging Face的推論容器在Amazon SageMaker上部署LLMs。
- Edge deployment 邊緣(中低算力)部署: 在受限環境中,高性能框架如 MLC LLM 和 mnn-llm 可以在網頁瀏覽器、Android和iOS中部署LLM。
- Philschmid blog by Philipp Schmid: 關於使用Amazon SageMaker部署LLM的高質量文章集。
- Optimizing latence 優化延遲 by Hamel Husain:比較TGI、vLLM、CTranslate2和mlc在吞吐量和延遲方面的性能。
除了與軟體相關的傳統安全問題外,由於訓練和提示的方式,大型語言模型(LLMs)還有特定的弱點。
相關的 deeplearning.ai短課程: - Red Teaming LLM Applications:這門課程教授如何進行紅隊測試(Red Teaming),以評估和改進大型語言模型(LLM)應用的安全性和可靠性。
- Prompt hacking 提示詞攻擊: 與提示工程相關的技術略有不同,提示詞注入(使用額外指令以劫持模型的答案)、數據/提示洩漏(檢索其原始數據/提示)和越獄(製作提示詞以繞過安全特性)都算在此範圍內。
- OWASP LLM Top 10 by HEGO Wiki: LLM應用程序中10個最嚴重的漏洞清單。
- Prompt Injection Primer by Joseph Thacker: 專門針對工程師的提示注入短指南。
- Backdoors 後門: 攻擊向量可以針對訓練數據本身,通過污染訓練數據(例如,使用錯誤信息)或創建後門(觸發器在推論期間秘密的改變模型行為)。
- Defensive measures 防禦措施: 保護您的LLM應用程序的最佳方式是對這些漏洞進行測試 (e.g., 例如,使用紅隊測試和像garak這樣的檢查 ) 並在實際的環境中觀察它們(使用像langfuse這樣的框架)。
📚 References:
- LLM Security by @llm_sec: 與LLM安全相關的廣泛資源列表。
- Red teaming LLMs by Microsoft: 關於如何執行LLM紅隊測試的指南。
🎨 圖片 | 影片 | 音樂 - 完整的AI內容創作工具鏈
多模態生成是當前AI最熱門的應用方向之一。本模塊涵蓋圖片、影片、音樂三大內容生成領域的核心技術與實戰項目。
| 模塊 | 核心技術 | 學習時間 | 實戰項目 |
|---|---|---|---|
| 圖片生成 | Stable Diffusion, FLUX.1, ControlNet, LoRA | 1-2週 | AI設計師助手 |
| 影片生成 | Stable Video Diffusion, AnimateDiff | 1-2週 | 自動短視頻生成器 |
| 音樂生成 | MusicGen, AudioLDM, Bark | 1週 | AI音樂製作平台 |
# 圖片生成示例
from diffusers import StableDiffusionPipeline
import torch
pipe = StableDiffusionPipeline.from_pretrained(
"runwayml/stable-diffusion-v1-5",
torch_dtype=torch.float16
)
pipe = pipe.to("cuda")
image = pipe(
prompt="a professional portrait photo, natural lighting",
negative_prompt="low quality, blurry",
num_inference_steps=50
).images[0]
image.save("output.png")-
- FastAPI後端 + React前端
- 支持圖片、影片、音樂生成
- Docker一鍵部署
-
- 劇本→圖片→影片→配音→音樂全自動化
- 適合營銷、教育、娛樂場景
-
- 批量生成產品圖
- 多平台尺寸適配(IG、FB、Twitter)
初學者 (4-6週)
- 第1週:圖片生成基礎(Stable Diffusion)
- 第2週:進階控制(ControlNet, LoRA)
- 第3-4週:影片生成(SVD, AnimateDiff)
- 第5-6週:音樂生成與綜合項目
進階開發者 (2-3週)
- 直接學習各模態的API整合
- 完成3個實戰項目
- 優化性能與部署
相關資源:
📊 50篇關鍵論文 | 84%開源代碼 | 5大核心領域
這個模塊整理了2024-2025年AI領域最重要的技術突破與論文,每篇論文都包含完整的代碼實現和實戰指南。
| 領域 | 論文數 | 代碼可用 | 主要突破 |
|---|---|---|---|
| 大型語言模型 | 10篇 | 90% | Llama 3.1 405B, GPT-4o, Claude 3.5, Gemini 1.5 Pro |
| 多模態模型 | 10篇 | 70% | Sora, FLUX.1, GPT-4V, Stable Video Diffusion |
| Agent系統 | 10篇 | 100% | LangGraph, CrewAI, AutoGen, MCP |
| RAG與檢索 | 10篇 | 90% | GraphRAG, HyDE, Self-RAG, RAPTOR |
| 訓練與優化 | 10篇 | 80% | FlashAttention 3, vLLM, QLoRA, DeepSpeed ZeRO++ |
2024 Q1
├─ GPT-4o 多模態統一 (OpenAI)
├─ Llama 3 開源 (Meta)
└─ Gemini 1.5 Pro 200萬token上下文 (Google)
2024 Q2
├─ Sora 視頻生成 (OpenAI)
├─ FLUX.1 圖像生成超越SD3 (Black Forest Labs)
└─ Claude 3.5 Sonnet 編程能力突破 (Anthropic)
2024 Q3
├─ Llama 3.1 405B 開源最大模型 (Meta)
├─ GPT-4o mini 高性價比 (OpenAI)
└─ Qwen2.5 中文優化 (Alibaba)
2024 Q4
├─ Model Context Protocol 標準化 (Anthropic)
├─ o1 推理模型 (OpenAI)
└─ Phi-4 小模型大能力 (Microsoft)
突破性技術 (⭐⭐⭐⭐⭐)
- GraphRAG: 知識圖譜+RAG,複雜推理準確率提升40%
- FlashAttention 3: 訓練速度提升2.8x,記憶體減少50%
- vLLM: 推理吞吐量提升24x,成本降低80%
- LangGraph: 可控Agent工作流,生產級應用必備
重要進展 (⭐⭐⭐⭐)
- Self-RAG: 自我反思機制,準確率提升15-20%
- QLoRA: 4-bit量化+LoRA,單卡可微調70B模型
- CrewAI: 多Agent協作,自動化工作流
- RAPTOR: 層次化檢索,長文檔理解提升30%
- 瀏覽概覽: 查看 5.AI研究前沿_2024-2025/README.md
- 選擇領域: 根據興趣選擇5個子領域之一
- 實戰代碼: 每篇論文都包含完整的Python實現
- 環境設置:
# 克隆倉庫 git clone https://github.com/markl-a/My-AI-Learning-Notes.git cd My-AI-Learning-Notes # 安裝依賴 pip install -r requirements-full.txt # 運行示例(以GraphRAG為例) cd 5.AI研究前沿_2024-2025/4.RAG與檢索 python examples/graphrag_example.py
初學者路徑 (2-3個月)
研究者路徑 (持續學習)
- 深入閱讀所有50篇論文
- 復現論文中的實驗結果
- 嘗試改進和創新
工程師路徑 (1-2個月)
主要是鐵人賽的備份跟之後每次更新的具體內容
這邊就是每個Deeplearning.ai 的短課程,我今年應該會把短課程以及相關的生成式AI課程補上。



