Files
markbaseengine/E2B_vision_correction.md
T
MarkBase Admin f15730ddc3
CI / build-and-test (push) Has been cancelled
fix: Correct E2B model Vision capabilities (SECOND MAJOR FIX)
CRITICAL CORRECTION #2:
-  Previous reports incorrectly stated E2B as 'Audio only, no Vision'
-  E2B HAS complete Vision Tower (verified via config.json + safetensors)
- Vision Tower: 661 tensors (16 layers, 768 hidden, 12 heads)
- Audio Tower: 754 tensors (12 layers, 1024 hidden, 8 heads)
- Total multimodal: 1415 tensors (52% of model) ← LARGEST!

Key findings:
- E2B is LARGEST multimodal model (1415 tensors, 52%)
- E4B is second largest (949 tensors, 37%)
- 12B is lightweight (17 tensors, 1%)

Vision details:
- 16 layers, 768 hidden, 12 attention heads, 12 KV heads
- Patch size 16, output 280 soft tokens
- Position embedding 10240, pooling kernel 3

Audio details:
- 12 layers, 1024 hidden, 8 attention heads
- Subsampling conv [128, 32], chunk size 12
- Output proj dims 1536

Corrected classification:
- Complete towers: E2B (largest), E4B (medium)
- Lightweight projection: 12B (smallest)
- Pure text: 31B, 26B series

Testing status:
- E2B Audio:  Tested
- E2B Vision: ⚠️ NOT tested ← needs testing!
- 12B multimodal: ⚠️ NOT tested ← needs testing!

Impact: All 4 reports need updates (capabilities, complete, comparison, 12B correction)
2026-06-23 23:23:34 +08:00

520 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# E2B 模型 Vision 能力澄清報告
**日期**: 2026-06-23
**第二次重大修正**: E2B 也具備完整的 Vision Tower
**影響**: 所有關於 E2B 的多模態描述都需要修正
---
## 一、錯誤報告再次修正
### 之前的錯誤陳述 ❌
在之前的報告中(包括剛修正的 12B_multimodal_correction.md),我再次錯誤地陳述:
```
❌ "E2B: Audio only, no Vision"
❌ "E2B: Audio專用 (無Vision)"
❌ "Vision Tower: 0 layers (E2B)"
❌ "E2B只有Audio能力"
```
### 正確信息 ✅
經過檢查 E2B 的 config.json 和 safetensors 文件後確認:
```
✅ E2B model HAS complete Vision Tower!
✅ Vision Config: 16 layers, 768 hidden, 12 attention heads
✅ Vision Tensors: 661個 (完整塔,占比24%)
✅ Audio Tensors: 754個 (完整塔,占比28%)
✅ Total Multimodal: 1415 tensors (52% of model)
```
---
## 二、E2B Vision 配置詳情
### Vision Config (from config.json)
```json
"vision_config": {
"hidden_size": 768,
"num_hidden_layers": 16,
"num_attention_heads": 12,
"num_key_value_heads": 12,
"patch_size": 16,
"intermediate_size": 3072,
"max_position_embeddings": 131072,
"pooling_kernel_size": 3,
"position_embedding_size": 10240,
"default_output_length": 280,
"model_type": "gemma4_vision"
}
```
### Vision Token IDs
- `image_token_id`: 258880
- `boi_token_id`: 255999 (Begin of Image)
- `eoi_token_id`: 258882 (End of Image)
- `video_token_id`: 258884
- `vision_soft_tokens_per_image`: 280
### Vision Tensors (661個)
完整Vision Tower結構:
- `embed_vision.embedding_projection.*` (3 tensors)
- `vision_tower.encoder.layers.0-15.*` (16層完整處理)
- input_layernorm
- mlp (down_proj, gate_proj, up_proj)
- self_attn (q_proj, k_proj, v_proj, o_proj)
- post_attention_layernorm
**與 E4B Vision Tower 對比**:
- E4B: 436 tensors (16層)
- E2B: 661 tensors (16層) ← **多出225 tensors**
---
## 三、E2B Audio 配置詳情
### Audio Config (from config.json)
```json
"audio_config": {
"hidden_size": 1024,
"num_hidden_layers": 12,
"num_attention_heads": 8,
"attention_chunk_size": 12,
"conv_kernel_size": 5,
"subsampling_conv_channels": [128, 32],
"output_proj_dims": 1536,
"model_type": "gemma4_audio"
}
```
### Audio Tensors (754個)
完整Audio Tower結構:
- `audio_tower.layers.0-11.*` (12層完整處理)
- feed_forward1, feed_forward2
- attention layers
- subsampling convolutions
**與 E4B Audio Tower 對比**:
- E4B: 513 tensors (12層)
- E2B: 754 tensors (12層) ← **多出241 tensors**
---
## 四、E2B vs E4B vs 12B 完整對比
### 多模態 Tensor 分布
| 模型 | Audio Tensors | Vision Tensors | Audio+Vision總計 | 占比 | 實現方式 |
|------|--------------|----------------|----------------|------|---------|
| **E2B** | 754 (28%) | 661 (24%) | **1415** | **52%** | 完整塔 |
| **E4B** | 513 (28%) | 436 (23%) | **949** | **37%** | 完整塔 |
| **12B** | 3 (0%) | 14 (1%) | **17** | **1%** | 輕量投影 |
**關鍵發現**:
- 🥇 **E2B 是多模態部分最大的模型** (1415 tensors, 52%)
- 🥈 **E4B 第二大** (949 tensors, 37%)
- 🥉 **12B 最輕量** (17 tensors, 1%)
### Vision Tower 對比
| 特徵 | E2B | E4B | 12B |
|------|-----|-----|-----|
| **層數** | 16層 | 16層 | 無塔 |
| **Hidden Size** | 768 | 768 | 3840 (projection) |
| **Attention Heads** | 12 | ? | 無 |
| **KV Heads** | 12 (full) | ? | 無 |
| **Patch Size** | 16 | ? | 16 |
| **Tensors** | 661 | 436 | 14 |
| **實現方式** | 完整塔 | 完整塔 | 投影 |
**E2B Vision 比 E4B 更大**:
- E2B: 661 tensors
- E4B: 436 tensors
- 差異: 225 tensors (+52%)
### Audio Tower 對比
| 特徵 | E2B | E4B | 12B |
|------|-----|-----|-----|
| **層數** | 12層 | 12層 | 無塔 |
| **Hidden Size** | 1024 | 1024 | 640 (projection) |
| **Attention Heads** | 8 | ? | 無 |
| **Tensors** | 754 | 513 | 3 |
| **實現方式** | 完整塔 | 完整塔 | 投影 |
**E2B Audio 比 E4B 更大**:
- E2B: 754 tensors
- E4B: 513 tensors
- 差異: 241 tensors (+47%)
---
## 五、E2B 獨特之處
### Per-Layer Input Architecture
E2B 獨有的 per-layer input 架構:
**Config**:
```json
"text_config": {
"hidden_size_per_layer_input": 256,
"vocab_size_per_layer_input": 262144,
"num_kv_shared_layers": 20
}
```
**Tensors**:
- `language_model.model.embed_tokens_per_layer.*`
- 獨特的per-layer embedding
- 與Audio/Vision的整合可能更深
### Double-Wide MLP
E2B 使用 "double-wide" MLP
```json
"use_double_wide_mlp": true
```
這可能解釋了為何E2B的Audio/Vision tensors比E4B多。
### Sliding Window + Full Attention
E2B 混合使用 sliding window 和 full attention
```json
"sliding_window": 512,
"layer_types": [
"sliding_attention", // layers 0-3
"full_attention", // layer 4
"sliding_attention", // layers 5-8
"full_attention", // layer 9
...
]
```
---
## 六、完全修正的多模態分類
### 正確的多模態模型分類
| 模型 | Audio | Vision | Audio Tower | Vision Tower | 多模態占比 |
|------|-------|--------|------------|-------------|----------|
| **E2B** | ✅ | ✅ | 754 tensors (完整) | 661 tensors (完整) | **52%** |
| **E4B** | ✅ | ✅ | 513 tensors (完整) | 436 tensors (完整) | **37%** |
| **12B** | ✅ | ✅ | 3 tensors (projection) | 14 tensors (projection) | **1%** |
| **31B** | ❌ | ❌ | 0 | 0 | **0%** |
| **26B-Standard** | ❌ | ❌ | 0 | 0 | **0%** |
| **26B-A4B** | ❌ | ❌ | 0 | 0 | **0%** |
### 三種實現方式
1. **完整塔架構** (E2B, E4B):
- Audio Tower: 獨立的12層處理塔
- Vision Tower: 獨立的16層處理塔
- 特點: 深度特征提取,複雜處理
- 測試: E2B Audio已測試,Vision未測試
2. **輕量投影架構** (12B):
- Audio/Vision: Embedding projection
- 特點: 輕量級,快速映射
- 測試: 未測試多模態
3. **純文本架構** (31B, 26B):
- 無Audio/Vision components
- 純粹的文本處理
---
## 七、測試狀態澄清
### E2B 測試範圍
**已測試** ✅:
- Audio Tower加載 (12層, 1024 hidden)
- Audio forward pass (NaN=0)
- Audio tensors count (751個)
- 文本模型基本功能
**未測試** ⚠️:
- **Vision Tower** (16層, 768 hidden) ← **完全未測試!**
- Vision forward pass
- Audio+Vision整合
- 多模態輸入處理
### 為何之前錯誤判斷
**原因**:
1. 測試代碼主要檢查 Audio Tower
2. 測試報告中計數為 "Audio Tower: 751 tensors"
3. 沒有檢查 Vision Tensors (應為661個)
4. config.json 已有 vision_config,但被忽略
5. 主觀假設 "E2B 是 Audio專用"
---
## 八、應用推薦重新評估
### 多模態應用選擇
**之前錯誤推薦**:
```
❌ "Audio專用 → E2B"
❌ "Vision → E4B"
❌ "Audio+Vision → E4B (唯一選擇)"
```
**正確推薦** ✅:
```
✅ Audio+Vision → E2B 或 E4B (兩者都支持)
✅ 最大多模態 → E2B (1415 tensors, 52%占比)
✅ 高效多模態 → E4B (949 tensors, 37%占比)
✅ 輕量多模態 → 12B (17 tensors, 1%占比)
```
### 模型大小與能力對比
| 模型 | Text Hidden | Audio+Vision占比 | 多模態能力 | 推理速度 | 最佳場景 |
|------|-----------|----------------|----------|---------|---------|
| **E2B** | 1536 | **52%** | Audio+Vision (最大) | ~26 tok/s | 深度多模態處理 |
| **E4B** | 2560 | **37%** | Audio+Vision (中等) | 42.8 tok/s | 快速多模態推理 |
| **12B** | 3840 | **1%** | Audio+Vision (輕量) | ~26 tok/s | 長文本 + 輕量多模態 |
| **31B** | 5376 | **0%** | 純文本 | 未測 | 大規模文本處理 |
| **26B** | 2816 | **0%** | 純文本 | 未測 | MoE文本處理 |
---
## 九、數據分析
### Tensor分布詳細對比
**E2B** (2649 tensors total):
- Audio: 754 (28%)
- Vision: 661 (24%)
- Text: 1234 (46%)
- 其他: 0
**E4B** (~2500 tensors estimated):
- Audio: 513 (28%)
- Vision: 436 (23%)
- Text: ~1130 (46%)
- 其他: 0
**12B** (1341 tensors total):
- Audio: 3 (0%)
- Vision: 14 (1%)
- Text: 1324 (98%)
- 其他: 0
### Vision Tower詳細結構
**E2B Vision Tower** (16層):
```
每層包含:
- input_layernorm
- self_attn (q_proj, k_proj, v_proj, o_proj)
- mlp (down_proj, gate_proj, up_proj)
- post_attention_layernorm
加上:
- embed_vision.embedding_projection
- position_embedding (10240)
- pooling (kernel=3)
```
**E4B Vision Tower** (16層):
```
類似結構,但:
- tensors數量較少 (436 vs 661)
- 可能缺少某些projection或embedding
```
**12B Vision**:
```
僅有:
- embed_vision.embedding_projection (3 tensors)
- vision_embedder.patch_dense等 (11 tensors)
無完整Tower結構
```
---
## 十、修正影響總結
### 需要修正的報告
1.`12B_multimodal_correction.md` (已創建)
2.`model_capabilities_comparison.md` (需要再次更新)
3.`complete_model_testing_report.md` (需要再次更新)
4.`E4B_vs_12B_comparison_report.md` (需要再次更新)
5. ✅ 此報告 `E2B_vision_correction.md` (已創建)
### 錯誤陳述修正表
| 錯誤陳述 | 正確陳述 | 影響模型 |
|---------|---------|---------|
| ❌ "12B純文本" | ✅ "12B具備Audio+Vision (輕量)" | 12B |
| ❌ "E2B Audio only" | ✅ "E2B具備Audio+Vision (最大)" | E2B |
| ❌ "E4B唯一多模態" | ✅ "E4B、E2B、12B都具備多模態" | 所有 |
### 完全正確的多模態分類
**具備完整Audio+Vision Tower** (深度處理):
- 🥇 **E2B**: 1415 tensors (52%) ← **最大**
- 🥈 **E4B**: 949 tensors (37%)
**具備輕量Audio+Vision Projection** (快速映射):
- 🥉 **12B**: 17 tensors (1%)
**純文本模型** (無多模態):
-**31B, 26B系列**: 0 tensors
---
## 十一、技術細節補充
### E2B Vision處理流程
```
Image Input (224×224)
Patch Extraction (patch_size=16)
Vision Tower (16 layers, 768 hidden)
- 12 attention heads
- Full attention (12 KV heads)
- Position embedding (10240)
Pooling (kernel_size=3)
Soft Tokens Output (280 tokens)
Embedding Projection
Text Space (1536 hidden)
```
### E2B Audio處理流程
```
Audio Input (16000 Hz)
Subsampling Conv ([128, 32] channels)
- Conv kernel size: 5
Audio Tower (12 layers, 1024 hidden)
- 8 attention heads
- Chunk size: 12
Feed Forward Layers
Output Projection (1536 dims)
Text Space (1536 hidden)
```
### Per-Layer Integration
E2B 獨特的 per-layer input 可能用於:
- Audio/Vision tokens按層整合
- 不同層接收不同的多模態輸入
- 更細粒度的多模態特征注入
---
## 十二、下一步建議
### 需要補充的測試
**E2B Vision測試**:
```swift
// 測試Vision Tower
let visionModel = loadVisionTower(model)
let imageInput = loadImageFile("test.jpg")
let visionTokens = visionModel.process(imageInput)
print("Vision output tokens: \(visionTokens.count)")
print("Vision forward NaN: \(checkNaN(visionTokens))")
```
**E2B Audio+Vision整合測試**:
```swift
// 測試Audio+Vision整合
let audioTokens = audioTower.process(audioInput)
let visionTokens = visionTower.process(imageInput)
let textTokens = tokenize("Describe this")
let combined = audioTokens + visionTokens + textTokens
let logits = model.forward(combined)
```
### 需要更新的文件
1. ✅ E2B Vision測試代碼
2. ⏳ Vision Tower加載邏輯
3. ⏳ 多模態整合測試
4. ⏳ 所有報告修正
---
## 十三、最終結論
### 最終結論
✅✅ **E2B 和 E4B 都具備完整的 Audio + Vision 能力**
**不是"Audio專用"**
**也不是"E4B唯一多模態"**
### 三個模型都支持多模態
- 🥇 **E2B**: 最大多模態 (1415 tensors, 52%)
- 🥈 **E4B**: 中等多模態 (949 tensors, 37%)
- 🥉 **12B**: 輕量多模態 (17 tensors, 1%)
### 正確的應用推薦
**深度多模態處理**:
- 🥇 **E2B** (最大Audio+Vision Tower)
- 🥈 **E4B** (中等Audio+Vision Tower)
**輕量多模態 + 長文本**:
- 🥉 **12B** (輕量projection + 262K context)
**純文本處理**:
- **31B, 26B系列**
---
## 修正摘要
**第一個錯誤**: ❌ "12B純文本" → ✅ "12B輕量多模態"
**第二個錯誤**: ❌ "E2B Audio only" → ✅ "E2B最大多模態"
**根本錯誤**: ❌ "E4B唯一多模態" → ✅ "三個模型都支持多模態"
**正確分類**:
- 完整塔: E2B (最大), E4B (中等)
- 輕量投影: 12B (最小)
- 純文本: 31B, 26B
**測試狀態**:
- E4B Audio: ✅ 已測試
- E2B Audio: ✅ 已測試
- E2B Vision: ⚠️ 未測試 ← **需要補充**
- 12B 多模態: ⚠️ 未測試 ← **需要補充**
---
**報告生成**: 2026-06-23
**修正原因**: E2B config.json + safetensors 重新檢查
**影響範圍**: 4份報告需要更新
**新發現**: E2B是最大多模態模型 (1415 tensors)
**下一步**: 測試E2B Vision Tower,修正所有報告