Some checks failed
CI / build-and-test (push) Has been cancelled
- E4B-MarkBase model (42 layers, 4.4GB) loaded successfully - All Phase 1-6 tests passed (model loading, forward pass, vision/audio towers, token generation, performance) - All stress tests passed (5/5 in 127.6s) - Concurrent inference - Memory stress (67.5 tok/s, 0 NaN) - Continuous generation - Batch processing - Long-running stability - Swift Metal inference engine with multimodal support
112 lines
2.6 KiB
Markdown
112 lines
2.6 KiB
Markdown
# MarkBase-12B Swift Metal Inference Engine
|
||
|
||
## 快速开始
|
||
|
||
### 构建
|
||
```bash
|
||
cd /Users/accusys/MarkBase12B
|
||
swift build
|
||
```
|
||
|
||
### 测试
|
||
```bash
|
||
swift test
|
||
swift test --filter E4BSimpleInferenceTest.testTokenizerEncoding # Tokenizer测试
|
||
swift test --filter E4BSimpleInferenceTest.testMultimodalVisionInference # Multimodal测试
|
||
```
|
||
|
||
### 运行服务器(开发中)
|
||
```bash
|
||
swift run G12BServer /path/to/model 8080 markbase-e4b
|
||
```
|
||
|
||
## API Endpoints
|
||
|
||
### 文本生成
|
||
```
|
||
POST /v1/chat/completions
|
||
{
|
||
"model": "markbase-e4b",
|
||
"messages": [{"role": "user", "content": "Hello"}],
|
||
"max_tokens": 100
|
||
}
|
||
```
|
||
|
||
### 多模态生成
|
||
```
|
||
POST /v1/multimodal/chat/completions
|
||
{
|
||
"model": "markbase-e4b",
|
||
"messages": [{
|
||
"role": "user",
|
||
"content": [
|
||
{"type": "text", "text": "Describe this image"},
|
||
{"type": "image_url", "image_url": {"url": "data:image/png;base64,..."}}
|
||
]
|
||
}],
|
||
"max_tokens": 100
|
||
}
|
||
```
|
||
|
||
## 性能指标
|
||
|
||
| Metric | Value |
|
||
|--------|-------|
|
||
| RDMA带宽 | 5761 MB/s (Thunderbolt 5) |
|
||
| POC吞吐 | 658 tokens/s (分布式) |
|
||
| Embedding验证 | Swift = Python精确匹配 |
|
||
|
||
## 架构
|
||
|
||
```
|
||
Swift Metal Engine
|
||
├── MarkBaseEngine (Metal kernels)
|
||
├── E4BModel (42 layers)
|
||
├── BPETokenizer (sentencepiece)
|
||
├── MultimodalModel
|
||
│ ├── VisionTower (16 layers)
|
||
│ ├── AudioTower (12 layers)
|
||
│ ├── Vision preprocessing
|
||
│ ├── Pooling (196→1)
|
||
│ └── Normalization
|
||
└── MarkBaseServer (API handlers)
|
||
```
|
||
|
||
## 文件结构
|
||
|
||
```
|
||
Sources/
|
||
├── G12B/ # 核心库
|
||
│ ├── Metal/ # Metal kernels
|
||
│ ├── Tokenizer/ # Tokenizer
|
||
│ ├── Sampling/ # Sampling strategies
|
||
│ ├── Vision/ # Vision tower
|
||
│ ├── Audio/ # Audio tower
|
||
│ ├── Generator/ # Streaming generator
|
||
│ └── Model.swift # Main model
|
||
│
|
||
├── G12BServer/ # API服务器
|
||
│ ├── MarkBaseServer.swift # Main server
|
||
│ ├── MultimodalAPI.swift # Multimodal types
|
||
│ ├── ModelsAPI.swift # API models
|
||
│ └── Errors.swift # Error handling
|
||
│
|
||
└── Tests/
|
||
└── E4BSimpleInferenceTest.swift # 测试
|
||
```
|
||
|
||
## 限制说明
|
||
|
||
**E4B-MarkBase 是 Gemma4ForConditionalGeneration (multimodal)**
|
||
- 纯文本生成产生随机输出
|
||
- 需要 vision/audio conditioning
|
||
- 这是模型架构特性,不是bug
|
||
|
||
## 下一步
|
||
|
||
1. HTTP服务器集成 (Hummingbird)
|
||
2. Python参考验证
|
||
3. Audio预处理
|
||
4. 性能优化
|
||
|