一、TensorFlow

概述

TensorFlow 是由 Google Brain 團隊於 2015 年開源的端到端機器學習框架。它最初以靜態計算圖(Static Computation Graph)為核心設計,後來在 TensorFlow 2.x 中預設啟用了 Eager Execution(動態執行模式),大幅提升了開發體驗。

核心架構

  • 計算圖(Computation Graph):TensorFlow 將所有運算建模為有向無環圖(DAG),節點代表運算,邊代表張量(Tensor)的流動。
  • Keras API:TensorFlow 2.x 將 Keras 作為官方高階 API,提供 SequentialFunctionalSubclassing 三種建模方式。
  • tf.function:透過裝飾器將 Python 函數編譯為靜態圖,兼顧開發便利與執行效能。
  • SavedModel 格式:統一的模型序列化格式,支援跨平台部署。

生態系統

元件 用途
TensorFlow Serving 高效能模型服務(gRPC/REST)
TensorFlow Lite 行動裝置 / 嵌入式部署
TensorFlow.js 瀏覽器端 / Node.js 推論
TFX (TensorFlow Extended) 端到端 ML Pipeline(資料驗證、轉換、訓練、部署)
TensorBoard 訓練可視化(損失曲線、模型圖、直方圖)
TF Hub 預訓練模型倉庫
TF Datasets 標準化資料集載入
TF Probability 機率程式設計 / 貝葉斯推論
TF Agents 強化學習

優點

  1. 產品級部署能力極強:TF Serving、TF Lite、TF.js 構成了從雲端到邊緣裝置的完整部署鏈路,這是 TensorFlow 最大的競爭優勢。
  2. 分散式訓練成熟tf.distribute.Strategy 提供多種分散式策略(MirroredStrategy、TPUStrategy、MultiWorkerMirroredStrategy),配置簡潔。
  3. TPU 原生支援:Google Cloud TPU 與 TensorFlow 深度整合,大規模訓練效能卓越。
  4. TFX 提供完整 MLOps 流程:資料驗證(TFDV)、特徵工程(TFT)、模型分析(TFMA)、模型推送,一站式解決。
  5. 靜態圖優化tf.function + XLA 編譯器可以做深度的運算融合與記憶體優化,推論速度通常領先。
  6. 跨平台能力無出其右:同一模型可部署至伺服器、手機、瀏覽器、微控制器(TF Micro)。
  7. 企業級支援:Google 背書,大量企業級文件、教學、認證課程。

缺點

  1. 學習曲線陡峭:即使有 Keras,底層概念(Session、Graph、eager vs graph mode 差異、tf.function 的 tracing 機制)仍然讓初學者困惑。
  2. API 歷史包袱重:TF 1.x → 2.x 的遷移造成大量遺留程式碼和教學混亂,tf.compat.v1 至今仍存在。
  3. 除錯困難:在 graph mode 下,Python 的 printpdb 無法直接使用,需要 tf.print 或 eager mode 切換。
  4. Pythonic 程度不足:很多操作需要用 TensorFlow 自己的 API(如 tf.condtf.while_loop),而非原生 Python 控制流。
  5. 社群研究熱度下降:近年來學術論文和開源研究更傾向 PyTorch,導致最新 SOTA 模型的 TensorFlow 實現往往滯後。

二、PyTorch

概述

PyTorch 由 Meta(Facebook)AI Research (FAIR) 於 2016 年開源,繼承了 Torch(Lua 語言框架)的設計哲學。它以動態計算圖(Dynamic Computation Graph / Define-by-Run)為核心,迅速成為學術研究的首選框架。

核心架構

  • Autograd 引擎:自動微分系統,在前向傳播時動態建構計算圖,反向傳播後自動銷毀,每次迭代都可以有不同的圖結構。
  • torch.nn.Module:模型建構的基礎類別,透過繼承與組合來定義網路結構,極為靈活。
  • DataLoader / Dataset:資料載入抽象,支援多進程預取、自定義取樣器。
  • TorchScript / torch.jit:將動態模型編譯為可序列化的靜態表示,用於部署。
  • torch.compile(PyTorch 2.x):基於 TorchDynamo + TorchInductor 的即時編譯,大幅提升訓練與推論速度。

生態系統

元件 用途
TorchVision 電腦視覺(模型、資料集、轉換)
TorchAudio 音訊處理
TorchText 自然語言處理
TorchServe 模型服務部署
PyTorch Lightning 訓練流程標準化(消除樣板程式碼)
ONNX 匯出 跨框架模型交換格式
torch.distributed 分散式訓練(DDP、FSDP、Pipeline Parallelism)
ExecuTorch 邊緣裝置部署(PyTorch 2.x 新增)
torchtune LLM 微調工具包

優點

  1. 極度 Pythonic:動態圖讓你可以用原生 Python 的 ifforprintpdb 來控制和除錯模型邏輯,開發體驗極佳。
  2. 學術研究事實標準:絕大多數頂會論文(NeurIPS、ICML、ICLR、CVPR 等)的官方實現都以 PyTorch 為主,意味著你能最快取得最新 SOTA 模型。
  3. 除錯體驗一流:直接用 Python debugger 逐行檢視張量值、梯度、中間結果,這在研究和原型開發中價值巨大。
  4. 社群活躍度最高:GitHub stars、Stack Overflow 問答、開源專案數量均領先。
  5. torch.compile 帶來效能飛躍:PyTorch 2.x 的編譯器棧讓 PyTorch 在推論速度上大幅追近甚至超越 TensorFlow。
  6. 靈活的模型定義nn.Module 的設計讓動態網路(如 Tree-LSTM、動態路由、條件計算)的實現極為自然。
  7. CUDA 整合緊密torch.cuda、自定義 CUDA kernel、Mixed Precision Training(torch.amp)等 GPU 功能完善。

缺點

  1. 部署生態歷史上較弱:雖然 TorchServe 和 ExecuTorch 在改善,但整體部署工具鏈的成熟度仍不如 TensorFlow 的 Serving/Lite/JS 組合。
  2. 行動裝置支援較晚起步:ExecuTorch 仍在快速迭代中,生態成熟度不如 TF Lite。
  3. 訓練程式碼樣板多:原生 PyTorch 需要手動撰寫訓練迴圈、梯度清零、反向傳播、優化器步進等,不過 PyTorch Lightning 可以解決此問題。
  4. 模型序列化方式多且易混淆torch.save(pickle)、TorchScript、ONNX、torch.export 各有適用場景和限制。
  5. 多 GPU / 多節點設定:雖然 DDP 很強大,但初始設定(進程啟動、rank 管理)比 TensorFlow 的 Strategy API 稍繁瑣。

三、Hugging Face

概述

Hugging Face 嚴格來說不是一個深度學習框架,而是一個建構在 PyTorch/TensorFlow/JAX 之上AI 平台與工具生態系統。它由 Hugging Face 公司於 2018 年推出 Transformers 庫後迅速崛起,如今已成為 NLP 乃至整個 AI 社群的核心基礎設施。

核心組件

組件 用途
Transformers 預訓練模型庫(NLP、CV、Audio、Multimodal),統一 API 載入 / 微調 / 推論
Datasets 高效資料集載入與處理(Apache Arrow 後端,記憶體映射)
Tokenizers Rust 實現的高速分詞器
Accelerate 分散式訓練抽象層(一行程式碼切換單 GPU → 多 GPU → TPU)
PEFT 參數高效微調(LoRA、QLoRA、Prefix Tuning 等)
TRL RLHF / DPO 等對齊訓練
Diffusers 擴散模型(Stable Diffusion 等)的訓練與推論
Hugging Face Hub 模型 / 資料集 / Spaces 的託管平台(類似 AI 界的 GitHub)
Inference API / Endpoints 一鍵部署模型為 API 服務
Optimum 硬體加速推論(ONNX Runtime、Intel、Habana)
Gradio / Spaces 快速建構 ML Demo 介面
Evaluate 標準化評估指標
SafeTensors 安全的模型權重序列化格式(取代 pickle)

優點

  1. 預訓練模型的最大集散地:Hub 上託管了超過數十萬個模型(GPT、BERT、LLaMA、Mistral、Whisper、CLIP 等),幾乎所有重要的開源模型都會第一時間上傳至此。
  2. 統一且簡潔的 APIfrom_pretrained() 一行載入模型,pipeline() 幾行完成推論,Trainer 類別簡化微調流程,極大降低使用門檻。
  3. 框架無關:Transformers 同時支援 PyTorch、TensorFlow、JAX 後端,你可以根據需求切換。
  4. 社群驅動:模型卡片(Model Card)、資料集卡片、討論區、排行榜(Open LLM Leaderboard)構成了活躍的開源社群。
  5. LLM 時代的核心基礎設施:從模型下載、微調(PEFT/TRL)、量化(GPTQ/AWQ/bitsandbytes)、到部署(TGI/vLLM 整合),形成完整的 LLM 工作流。
  6. Spaces + Gradio:零成本快速部署互動式 Demo,非常適合研究展示和原型驗證。
  7. 資料處理效能優異datasets 庫使用 Arrow 格式 + 記憶體映射,處理 TB 級資料集時幾乎不受記憶體限制。

缺點

  1. 不是底層框架:它依賴 PyTorch/TensorFlow/JAX,如果你需要從零建構自定義運算子或底層優化,仍需回到底層框架。
  2. Trainer 的靈活性有限:對於高度客製化的訓練邏輯(如複雜的多任務學習、自定義梯度操作),Trainer 可能顯得笨重,此時需要回到原生 PyTorch 迴圈。
  3. 抽象層帶來的理解障礙:過度依賴 pipeline()from_pretrained() 可能讓使用者對底層機制(tokenization、attention mask、模型架構)理解不足。
  4. 版本更新頻繁,偶有 Breaking Changes:Transformers 庫更新速度極快,有時不同版本之間的 API 會有微妙差異。
  5. 推論效能非最優:原生 Transformers 的推論速度不如專門的推論引擎(如 vLLM、TensorRT-LLM、ONNX Runtime),需要配合 Optimum 或其他工具優化。
  6. Hub 依賴性:大量工作流默認從 Hub 下載模型,在離線環境或網路受限的場景中需要額外配置。

四、三者定位對比

┌─────────────────────────────────────────────────────┐
│                   Hugging Face                       │
│          (高階 API / 平台 / 模型生態)                  │
│  ┌─────────────────┬──────────────────┬───────────┐  │
│  │   PyTorch       │   TensorFlow     │    JAX    │  │
│  │  (底層框架)      │   (底層框架)      │  (底層)   │  │
│  └─────────────────┴──────────────────┴───────────┘  │
│                    CUDA / cuDNN / XLA                 │
└─────────────────────────────────────────────────────┘

Hugging Face 是建構在底層框架之上的生態系統,而 TensorFlow 和 PyTorch 是互相競爭的底層框架。


五、維度對比表

維度 TensorFlow PyTorch Hugging Face
定位 端到端 ML 框架 深度學習研究框架 AI 平台 + 高階工具庫
開發者 Google Meta (FAIR) Hugging Face 公司
計算圖 靜態圖(可 eager) 動態圖(可編譯) 依賴底層框架
學習曲線 較陡 較平緩 最平緩(高度抽象)
除錯體驗 中等 優秀 依賴底層框架
學術研究 較少(持續下降) 主流(佔 70%+) 模型分發中心
產品部署 最強(Serving/Lite/JS) 改善中(TorchServe) Inference Endpoints
行動端 TF Lite(成熟) ExecuTorch(發展中) 不直接支援
瀏覽器端 TF.js(成熟) 有限支援 不直接支援
分散式訓練 Strategy API(簡潔) DDP/FSDP(強大) Accelerate(極簡)
TPU 支援 原生最佳 透過 XLA 透過 Accelerate
預訓練模型 TF Hub TorchHub(較少) Hub(最豐富)
NLP 生態 較弱 較強 最強
CV 生態 中等 最強(TorchVision) 逐漸增強
MLOps TFX(最完整) 依賴第三方 有限
社群活躍度 中等 極高
程式風格 較 Java-like Pythonic 極簡(高度封裝)

六、選擇建議

選 TensorFlow 的場景

  • 你的目標是產品部署,需要模型跑在手機、瀏覽器、嵌入式設備上
  • 你使用 Google Cloud + TPU 進行大規模訓練
  • 你需要完整的 MLOps Pipeline(TFX)
  • 你的團隊已有大量 TensorFlow 遺留程式碼

選 PyTorch 的場景

  • 你在做學術研究,需要快速實驗和復現論文
  • 你需要靈活的模型定義(動態網路、非標準架構)
  • 你重視除錯體驗和開發效率
  • 你想使用社群中最新的 SOTA 模型
  • 你的部署目標主要是伺服器端 GPU 推論

選 Hugging Face 的場景

  • 你想快速使用預訓練模型做 NLP / CV / Audio 任務
  • 你需要微調 LLM(LoRA、QLoRA、RLHF)
  • 你想用最少的程式碼完成模型的載入、訓練、評估、部署
  • 你想建構快速 Demo 展示給利害關係人
  • 你不想深入底層框架細節,只想解決應用問題

實務中的常見組合

最常見的技術棧是 PyTorch + Hugging Face,這個組合在 2024-2026 年佔據了 AI 開發的主流地位。你用 PyTorch 作為底層計算引擎,用 Hugging Face 的 Transformers/Datasets/Accelerate 處理高階邏輯,需要部署時再透過 ONNX、vLLM、TGI 等工具優化。


七、RAG + AI 專案的技術堆疊選擇與路線圖

什麼是 RAG?

RAG(Retrieval-Augmented Generation,檢索增強生成) 是一種結合「資訊檢索」與「語言生成」的架構模式。核心思路是:在 LLM 生成回答之前,先從外部知識庫中檢索相關文件,將檢索結果作為上下文注入 Prompt,讓 LLM 基於事實資料生成更準確、更可靠的回答。

RAG 系統的核心元件

┌──────────────────────────────────────────────────────────────────┐
│                        RAG 系統架構                               │
│                                                                  │
│  ┌──────────┐    ┌──────────────┐    ┌────────────────────────┐  │
│  │ 使用者查詢 │───▶│  Embedding   │───▶│   向量資料庫            │  │
│  │          │    │  Model       │    │  (語意檢索)             │  │
│  └──────────┘    └──────────────┘    └──────────┬─────────────┘  │
│                                                  │               │
│                                      檢索 Top-K 相關文件          │
│                                                  │               │
│                                                  ▼               │
│  ┌──────────────────────────────────────────────────────────┐    │
│  │              Prompt 組裝                                  │    │
│  │  System Prompt + 檢索到的文件 + 使用者原始問題              │    │
│  └──────────────────────────────┬───────────────────────────┘    │
│                                 │                                │
│                                 ▼                                │
│                     ┌───────────────────┐                        │
│                     │   LLM 生成回答     │                        │
│                     │ (GPT / LLaMA /    │                        │
│                     │  Mistral / ...)   │                        │
│                     └───────────────────┘                        │
└──────────────────────────────────────────────────────────────────┘

一個完整的 RAG 系統涉及以下元件,每個元件都需要技術選型:

元件 功能 關鍵技術選項
文件處理 文件解析、切分(Chunking) LangChain、LlamaIndex、Unstructured
Embedding 模型 將文本轉為向量表示 OpenAI Embeddings、Sentence-Transformers(HF)、BGE、E5
向量資料庫 儲存 & 檢索向量 Chroma、Pinecone、Weaviate、Milvus、Qdrant、pgvector
檢索策略 語意搜尋、混合搜尋、Re-ranking BM25 + 向量混合、Cross-Encoder Re-ranker
LLM 推論 生成最終回答 OpenAI API、本地部署(vLLM/TGI)、Ollama
編排框架 串接各元件的工作流 LangChain、LlamaIndex、Haystack、自建
評估 衡量 RAG 品質 RAGAS、DeepEval、TruLens

TensorFlow / PyTorch / Hugging Face 在 RAG 中的角色

RAG 元件 TensorFlow PyTorch Hugging Face
Embedding 模型 可用但選擇少 Sentence-Transformers 底層引擎 sentence-transformers 庫(最佳選擇)
Re-ranker 無成熟方案 Cross-Encoder 底層引擎 提供 Cross-Encoder 預訓練模型
LLM 推論(本地) 幾乎不用 vLLM / TGI 底層引擎 模型來源(Hub)+ Transformers 載入
LLM 微調 可行但社群小 主流訓練框架 PEFT / TRL(LoRA/QLoRA 微調)
自訓練 Embedding 可行 主流 Sentence-Transformers 提供訓練 API

結論:在 RAG 場景中,TensorFlow 幾乎沒有存在感。PyTorch + Hugging Face 是絕對主流。

推薦技術堆疊方案

方案 A:快速上線型(適合 MVP / POC)

目標:最短時間、最少基礎設施、最快驗證商業價值

┌─────────────────────────────────────────────┐
│             快速上線型技術堆疊                 │
├─────────────────────────────────────────────┤
│  編排框架:   LangChain / LlamaIndex         │
│  Embedding: OpenAI text-embedding-3-small  │
│  向量資料庫: Chroma(本地)/ Pinecone(雲端) │
│  LLM:       OpenAI GPT-4o / Claude API     │
│  前端:       Gradio / Streamlit             │
│  部署:       Docker + Cloud Run / Vercel    │
├─────────────────────────────────────────────┤
│  PyTorch:   不需要                          │
│  TensorFlow:不需要                          │
│  Hugging Face:不需要(全用 API)             │
└─────────────────────────────────────────────┘

優點:開發速度極快(1-2 週可上線)、無需 GPU、維運成本低 缺點:依賴第三方 API(成本、延遲、隱私風險)、客製化程度低


方案 B:混合型(適合中型企業 / 注重成本控制)

目標:兼顧隱私、成本與效能,Embedding 本地化 + LLM 用 API

┌──────────────────────────────────────────────────────────┐
│                  混合型技術堆疊                             │
├──────────────────────────────────────────────────────────┤
│  編排框架:   LangChain / LlamaIndex                      │
│  Embedding: HF sentence-transformers (bge-m3 / e5-v2)  │
│  向量資料庫: Qdrant / Milvus / pgvector                   │
│  Re-ranker:  HF Cross-Encoder (bge-reranker-v2-m3)      │
│  LLM:       OpenAI API(主要)+ 本地 LLM(備援/敏感場景)  │
│  前端:       Next.js / React + FastAPI                   │
│  部署:       Kubernetes / Docker Compose                 │
├──────────────────────────────────────────────────────────┤
│  PyTorch:   ✅ 作為 Embedding & Re-ranker 推論引擎        │
│  TensorFlow:❌ 不需要                                    │
│  Hugging Face:✅ 模型來源 + sentence-transformers        │
└──────────────────────────────────────────────────────────┘

優點:Embedding 不外傳(保護隱私)、向量搜尋成本可控、可逐步遷移至全本地 缺點:需要 GPU 做 Embedding 推論(也可 CPU,但較慢)


方案 C:全自建型(適合大企業 / 高度客製化 / 資料敏感場景)

目標:完全自主可控,所有元件本地部署,支援深度客製化

┌──────────────────────────────────────────────────────────────┐
│                    全自建型技術堆疊                             │
├──────────────────────────────────────────────────────────────┤
│  編排框架:   自建 Pipeline / Haystack / LlamaIndex           │
│  Embedding: 自訓練 or 微調(sentence-transformers + HF)     │
│  向量資料庫: Milvus / Qdrant(自建叢集)                      │
│  Re-ranker:  微調 Cross-Encoder(domain-specific)           │
│  LLM:       本地部署 LLaMA 3 / Mistral / Qwen(vLLM/TGI)   │
│  LLM 微調:  HF PEFT + TRL(LoRA/QLoRA + DPO)               │
│  前端:       自建 Web App                                    │
│  部署:       Kubernetes + GPU 叢集                           │
│  監控:       LangSmith / 自建 Evaluation Pipeline            │
├──────────────────────────────────────────────────────────────┤
│  PyTorch:   ✅ 核心引擎(訓練 + 推論)                        │
│  TensorFlow:❌ 不需要                                        │
│  Hugging Face:✅ 全面使用(模型 / 訓練 / 資料 / 部署)          │
└──────────────────────────────────────────────────────────────┘

優點:完全掌控資料流、可針對垂直領域深度優化、無第三方依賴 缺點:需要 ML 工程團隊、GPU 基礎設施成本高、開發週期長(2-6 個月)

三種方案對比

維度 方案 A(快速上線) 方案 B(混合) 方案 C(全自建)
開發時間 1-2 週 1-2 個月 2-6 個月
GPU 需求 Embedding 推論用 訓練 + 推論均需
資料隱私 低(資料送至第三方) 中(Embedding 本地) 高(完全本地)
每月成本(概估) $100-$2,000(API 費用) $500-$5,000 $2,000-$20,000+
客製化程度
維運複雜度
適合團隊 1-3 人 3-8 人 5-15 人
TensorFlow 使用
PyTorch 使用 ✅✅✅
Hugging Face 使用 ❌/可選 ✅✅ ✅✅✅

推薦技術路線圖(漸進式演進)

大多數專案建議從方案 A 開始,根據需求逐步演進至方案 B 或 C:

Phase 1(第 1-4 週):驗證可行性
══════════════════════════════════
  ├── 使用 LangChain + OpenAI API 快速搭建 RAG 原型
  ├── Chroma 作為本地向量資料庫
  ├── 收集使用者回饋,確認 RAG 能解決實際問題
  └── ✅ 此階段不需要 PyTorch / TensorFlow / Hugging Face

         │
         ▼

Phase 2(第 5-12 週):強化檢索品質
══════════════════════════════════
  ├── 替換 Embedding → HF sentence-transformers(bge-m3 / e5)
  ├── 加入 Re-ranker(HF Cross-Encoder)
  ├── 升級向量資料庫 → Qdrant / Milvus(支援混合搜尋)
  ├── 優化 Chunking 策略(語意切分、Overlap、Metadata)
  ├── 建立評估管線(RAGAS / DeepEval)
  └── ✅ 此階段引入 PyTorch + Hugging Face

         │
         ▼

Phase 3(第 13-24 週):本地化 LLM + 微調
══════════════════════════════════
  ├── 部署本地 LLM(vLLM / TGI 提供服務)
  ├── 用 HF PEFT 微調 Embedding 模型(針對你的領域資料)
  ├── 用 HF TRL 微調 LLM(LoRA/QLoRA)提升領域專業度
  ├── 實作 Guardrails(輸入過濾、輸出驗證、幻覺偵測)
  └── ✅ 此階段深度使用 PyTorch + Hugging Face 全生態

         │
         ▼

Phase 4(持續迭代):生產級優化
══════════════════════════════════
  ├── 推論優化(量化 AWQ/GPTQ、Flash Attention、KV Cache 優化)
  ├── 多模態 RAG(圖片、表格、PDF 原生理解)
  ├── Agentic RAG(LLM 自主決定檢索策略、多步推理)
  ├── A/B 測試不同模型 / 檢索策略
  ├── 建立完整的 CI/CD + 模型版本管理
  └── ✅ 持續依賴 PyTorch + Hugging Face + 推論優化工具

RAG 專案中各框架的最終定位

框架 在 RAG 專案中的角色
TensorFlow 幾乎不使用。RAG 生態系統完全圍繞 PyTorch 建構,TensorFlow 在此場景無優勢。除非你有遺留的 TF Serving 基礎設施,否則不建議選擇。
PyTorch 底層計算引擎。Embedding 推論、Re-ranker 推論、LLM 本地部署(vLLM/TGI)、模型微調,全部依賴 PyTorch。你不會直接寫太多 PyTorch 程式碼,但它是一切的基礎。
Hugging Face 最核心的上層生態。模型來源(Hub)、Embedding 庫(sentence-transformers)、微調工具(PEFT/TRL)、推論部署(TGI/Inference Endpoints)。在 RAG 專案中,Hugging Face 是你接觸最多的工具。

一句話建議

RAG 專案的黃金組合是 PyTorch(底層) + Hugging Face(上層) + LangChain 或 LlamaIndex(編排層)。TensorFlow 在此場景中沒有技術優勢,不建議選擇。根據你的隱私需求、預算和團隊規模,從 API 驅動的 MVP 開始,逐步演進至全本地化部署。


八、總結

框架 一句話總結
TensorFlow 部署之王,從雲端到邊緣無所不能,但研究社群正在流失
PyTorch 研究之王,Pythonic + 動態圖 = 最佳開發體驗,部署工具持續追趕
Hugging Face 生態之王,站在巨人肩膀上讓 AI 民主化,但底層仍需依賴框架

三者並非完全互斥,而是在不同抽象層次上互補。理解各自的定位和優劣勢,根據你的具體需求(研究 vs 產品、NLP vs CV、雲端 vs 邊緣)來選擇最適合的工具組合,才是最務實的做法。