lecture01
零樣本學習(Zero-Shot Learning, ZSL):
-
模型可以在沒有見過某種特定任務或類別的訓練樣本的情況下,直接完成對應的任務
-
利用知識遷移
- 模型在一個任務上訓練時學到的知識,能夠遷移到其他任務上
- 比如,模型知道“狗”和“貓”都屬于“動物”,因此,即使沒見過“狐貍”的圖片,也可以通過“動物”這個概念推測“狐貍”可能屬于“動物”
-
借助語義信息
- 零樣本學習通常依賴于額外的語義信息(如類標簽的描述、文本嵌入、圖像特征等)
- 例如,在分類任務中,類別名稱的文本描述可以幫助模型理解新的類別
-
關鍵技術:
- 共享特征空間
- 模型通過將已知類別的特征和未知類別的語義描述映射到同一個特征空間來實現知識遷移
- 例如,將圖片嵌入和文本嵌入映射到一個共同空間,模型可以比較圖片特征和文本描述的相似性
- 使用預訓練模型
- 許多預訓練語言模型(如GPT、BERT)和多模態模型(如CLIP)對零樣本學習效果非常好
- 這些模型在大量多任務數據上訓練,可以理解廣泛的語義信息
- 多模態方法
- 跨文本和圖像的模型(如CLIP)在零樣本任務中尤為突出,它們通過學習文本和圖像的對應關系實現任務遷移
- 共享特征空間
思維鏈(Chain of Thought, CoT):
-
一種用于大語言模型(LLM)的推理策略,通過讓模型生成逐步的推理步驟,從而提高復雜任務(如數學推算、邏輯推理、問答等)的準確性和解釋性
-
傳統的模型往往直接給出答案,而思維鏈方法引導模型像人類一樣,分步驟思考問題,提高了解決復雜問題的能力
-
主要策略:
- 逐步推理:將一個復雜問題分解成多個小的、容易解決的步驟,模型在推理過程中不僅生成答案,還給出詳細的思路
- 顯式中間步驟:思維鏈的中間步驟提供了解題過程的可解釋性,便于診斷和改進模型的推理
- 提升模型性能:對于需要深度推理或多步驟計算的問題,思維鏈能顯著提高模型的準確性
-
預訓練語言模型生成
-
使用提示(Prompting)指導模型逐步推理
-
eg: 問題:如果一輛車以每小時60公里的速度行駛4小時,它行駛了多少公里? 答案: 1. 每小時行駛60公里。 2. 行駛4小時。 3. 總距離是 \(60 \times 4 = 240\) 公里。 答案是:240公里。
-
-
少樣本學習(Few-shot Learning)
-
在輸入中加入幾個例子,讓模型學習如何分步驟回答
-
示例1: 問題:如果小明有2個蘋果,每個蘋果價值3元,他總共有多少錢? 答案: 1. 每個蘋果價值3元。 2. 小明有2個蘋果。 3. 總價值是 \(3 \times 2 = 6\) 元。 答案是:6元。問題:如果一輛車每小時行駛70公里,行駛3小時,它行駛了多少公里? 答案:
-
-
微調模型:將逐步推理的標注數據用來微調模型,使其能夠生成思維鏈
算法、硬件、數據
AI設備性能指標:
-
FLOPS(Floating Point Operations Per Second): 浮點計算能力;FLOPS 是衡量設備計算能力的指標,表示設備每秒能執行的浮點運算次數
-
浮點數運算指的是計算機處理小數或大數(比如 1.23、0.0005 或 3.14)的加減乘除等操作
-
AI模型需要大量計算,比如神經網絡中的矩陣乘法,FLOPS越大,計算能力越強,也就是能更快、更高效地處理任務
-
AI 和深度學習領域,常見的位數包括 16位(FP16)、32位(FP32) 和 64位(FP64),它們代表浮點數的不同精度,位數越多:表示的數值范圍越大,精度越高(更接近真實值)
- FP32(32位浮點數):單精度浮點數,每個數占用 4 字節(32 位),傳統的深度學習主要使用 FP32,計算精度和速度較均衡,通用深度學習
訓練和推理任務
- FP16(16位浮點數): 半精度浮點數,每個數占用 2 字節(16 位),運算速度更快,因為每次操作處理的數據量更少,
推理階段更常用
- FLOPS 的計算能力會因為浮點數精度不同而變化:同一個GPU算力:
- FP32:10 TFLOPS(每秒 10 萬億次 FP32 運算)
- FP16:20 TFLOPS(每秒 20 萬億次 FP16 運算)
- FP64:2 TFLOPS(每秒 2 萬億次 FP64 運算)
- 混合精度訓練(Mixed Precision Training):
- 如( PyTorch、TensorFlow)支持混合精度訓練:
- 使用 FP16 處理大部分運算以提高速度和節省顯存
- 在需要高精度的地方(如梯度累積),切換回 FP32
- 如( PyTorch、TensorFlow)支持混合精度訓練:
- FP32(32位浮點數):單精度浮點數,每個數占用 4 字節(32 位),傳統的深度學習主要使用 FP32,計算精度和速度較均衡,通用深度學習
-
FLOPS 的計算依賴于硬件架構和運行的程序,基本公式如下:
FLOPS=Number?of?Cores × Clock?Speed?(GHz) × Operations?Per?Clock?(OPC)
Number of Cores:處理器(CPU/GPU)的計算核心數,越多并行能力越強
Clock Speed:每秒鐘的時鐘頻率,單位是 GHz(10 億次/秒)
Operations Per Clock:每個時鐘周期能執行的浮點運算次數
eg : NVIDIA RTX 3090
- CUDA 核心數:10496 個
- 時鐘頻率(Boost Clock):1.70 GHz
- 每個 CUDA 核心的運算能力(FP32):1 次浮點運算/周期
- Tensor Core 性能(FP16 混合精度):每個 Tensor Core 每周期可以處理 4 次浮點運算
- FP32 FLOPS = 10496 × 1.70GHz × 1OPC = 17843.2GFLOPS = 17.8TFLOPS
- FP16 是半精度浮點運算,使用
Tensor Core 時,每周期每個核心的運算能力為 FP32 的 4 倍
:FP16 FLOPS=4×17.8=71.2TFLOPS
-
Tensor Core 是 NVIDIA 針對 AI 和深度學習任務特別設計的硬件加速單元
- 在 FP16(半精度浮點)模式下,Tensor Core 每個時鐘周期可以執行 4 次浮點運算
- 在 TF32 和 FP32 精度下,Tensor Core 也具有加速作用,特別是在進行矩陣運算時
- Tensor Core 更像是 加速器,提升了 GPU 在特定任務(如深度學習)中的表現,ensor Core 提升了 CUDA 核心 在 深度學習 和 低精度運算 中的計算能力,尤其是處理矩陣運算時,通過并行處理提升了整體性能
-
-
**顯存(VRAM 或 Memory)😗*用于存儲圖形數據、紋理、渲染的幀和其他與顯示相關的信息。顯存對于 AI 設備(如 GPU)也非常重要,尤其是在 深度學習、訓練 和 推理 中
-
顯存通常用于存儲圖形渲染的 紋理、幀緩沖區、幾何數據、頂點信息等
-
在 深度學習 中,顯存用來存儲訓練過程中的 模型參數(如權重、偏置),以及 中間結果(例如在前向傳播和反向傳播過程中產生的激活值和梯度)
-
在 推理(inference)過程中,顯存用于存儲需要推理的數據批量以及網絡結構和模型權重
-
GPU 需要快速處理大量數據。顯存提供了快速的數據存儲和讀取通道,減少了從 主內存(系統 RAM)到 GPU 的數據傳輸延遲,提高了整體性能
-
如果顯存不足,GPU 可能會變得 受限,因為無法容納足夠的訓練數據或模型參數。在這種情況下,GPU 的計算能力可能會受到限制,即使它的 FLOPS 很高
-
顯存的大小和性能:更大的顯存允許 GPU 同時處理更多的數據,從而提升計算效率。對于 AI 訓練和推理,顯存的大小對處理 大規模數據集 或 復雜模型 的能力至關重要
-
批量大小(Batch Size):批量大小是深度學習訓練中的一個重要參數。增加批量大小通常可以提升訓練效率,但也需要更多的顯存。如果顯存不足,批量大小必須減少
-
顯存容量和顯存帶寬:
- 訓練復雜的深度神經網絡時,模型的大小和數據的批量大小會占用大量顯存。如果顯存不足,可能會導致 內存溢出(Out of Memory)
- 顯存帶寬 是指顯存能夠在單位時間內讀取或寫入的數據量,通常以 GB/s(GB 每秒)為單位。高帶寬顯存可以提供更高的數據吞吐量,尤其是在需要處理大量并行數
-
設備 顯存類型 顯存大小 顯存帶寬 AI 算力(FLOPS) Jetson Nano LPDDR4(低功耗) 4 GB 25.6 GB/s FP32: 0.5 TFLOPS, FP16: 1 TFLOPS RTX 3090 GDDR6X 24 GB 936.2 GB/s FP32: 35.6 TFLOPS, FP16: 71.2 TFLOPS RTX 4090 GDDR6X 24 GB 1,008.0 GB/s FP32: 35.6 TFLOPS, FP16: 71.2 TFLOPS A100 HBM2 40 GB 或 80 GB 1,555 GB/s (40 GB 版本) 或 2,039 GB/s (80 GB 版本) FP32: 19.5 TFLOPS, FP16: 156 TFLOPS, Tensor Core FP16: 312 TFLOPS
-