Instructions to use masahiroid/pyrite-stream with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- MLX
How to use masahiroid/pyrite-stream with MLX:
# Make sure mlx-lm is installed # pip install --upgrade mlx-lm # if on a CUDA device, also pip install mlx[cuda] # Generate text with mlx-lm from mlx_lm import load, generate model, tokenizer = load("masahiroid/pyrite-stream") prompt = "Once upon a time in" text = generate(model, tokenizer, prompt=prompt, verbose=True) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- LM Studio
- MLX LM
How to use masahiroid/pyrite-stream with MLX LM:
Generate or start a chat session
# Install MLX LM uv tool install mlx-lm # Generate some text mlx_lm.generate --model "masahiroid/pyrite-stream" --prompt "Once upon a time"
- Atomic Chat
File size: 5,808 Bytes
cab2ef1 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 | # Project Pyrite Phase 2: MoE-Stream Engine ่จญ่จไปๆงๆธ
## ใ 16GB Mac ใงใใซ็ฒพๅบฆ (BF16) MoE ใๅใใ NVMe-RAM ๅ้ขในใใชใผใใณใฐ ใ
**่่
**: ไธญๆดฅๅท ๆๅผ (Masahiro NAKATSUGAWA)
**ๅฏพ่ฑกใขใใซ**: `deepseek-ai/DeepSeek-Coder-V2-Lite-Instruct` (15.7B / 2.36B active, 27 layers, 64 experts)
---
### 1. ็่ซ็ใใฌใคใฏในใซใผใฎๆฐๅญฆ็่จผๆ
ๅพๆฅใฎ AirLLM ็ญใฎใๅ
จๅฑคใชใใญใผใใใ้
ใใฃใ็็ฑใฏใDense ใขใใซใงใฏๆฏใใผใฏใณใงๅ
จใใฉใกใผใฟ๏ผ70GB๏ผใ่ชญใพใญใฐใชใใชใใฃใใใใงใใ
ใใใใ**MoE ใขใผใญใใฏใใฃใฎๆฌ่ณชใฏใในใใผในๆง๏ผ็็ตๅๆง๏ผใ** ใซใใใพใใ
DeepSeek-Coder-V2-Lite ใฎใใณใฝใซๆง้ ใๅฎๆฉ่งฃๆใใ็ตๆใไปฅไธใฎๆฐๅคใๅคๆใใพใใ๏ผ
1. **ๅธธ้งใกใขใช (Resident Working Set in RAM)**:
- Embeddings (`embed_tokens`) + LM Head (`lm_head`)
- 27ๅฑคๅใฎ Attention ๆฉๆง (`self_attn`: MLA)
- 27ๅฑคๅใฎ LayerNorm
- 27ๅฑคๅใฎ Router Gate (`mlp.gate.weight`: [64, 2048])
- 27ๅฑคๅใฎ ๅ
ฑๆใจใญในใใผใ (`mlp.shared_experts`: 2 experts)
๐ **ๅธธ้งๅฟ
้ ใตใคใบ: ใใใ็ด 2.5 GiB** (16GB Mac ใฎใกใขใชใซไฝ่ฃใงๅใพใ๏ผ)
2. **ๅ็ในใใชใผใใณใฐ (On-Demand Experts from NVMe SSD)**:
- ๅๅฑคใฎ `switch_mlp` ใซใฏ 64 ๅใฎใจใญในใใผใใๅญๅจ๏ผTensor shape: `[64, 1408, ...]`๏ผใ
- 1 ๅใฎใใผใฏใณ็ๆใงใซใผใฟใผใ้ธใถใฎใฏ **Top-6 ใจใญในใใผใใฎใฟ**๏ผๆฎใ 58 ๅใฏๅฎๅ
จใซไผ็ ๏ผใ
- **1 ใจใญในใใผใใใใใฎใตใคใบ (BF16ๆ)**: ็ด 15.8 MB
- **1 ใฌใคใคใผใใใใฎๅฟ
่ฆ่ปข้้**: $6 \times 15.8\text{ MB} = \mathbf{94.8\text{ MB}}$
- **ๅ
จ 27 ใฌใคใคใผใ้ใใๅฟ
่ฆ่ปข้้**: $26 \times 94.8\text{ MB} = \mathbf{2.46\text{ GB}}$
3. **่ปข้ใฌใคใใณใทใจ้ๅบฆไบๆธฌ**:
- Mac ใฎ NVMe SSD ้ฃ็ถ่ชญใฟๅบใ้ๅบฆ: **็ด 4,000 MB/s ใ 5,000 MB/s (4ใ5 GB/s)**
- 1 ใใผใฏใณใใใใฎ SSD ่ปข้ๆ้: $2.46\text{ GB} \div 4.5\text{ GB/s} \approx \mathbf{0.54\text{ ็ง}}$
- **LRU ใญใฃใใทใฅ๏ผ้ ปๅบใจใญในใใผใใฎ RAM ไฟๆ๏ผๅฐๅ
ฅๆ**:
ใใญใฐใฉใใณใฐใณใผใ็ๆใงใฏๅใใจใญในใใผใใ็ด 40ใ60% ๅๅฉ็จใใใใใใๅฎๅน่ปข้้ใฏ **็ด 1.0ใ1.2 GB** ใพใงๅๆธใ
๐ **ๆๅพ
ใใใๅฎๅน็ๆ้ๅบฆ: 2ใ5 tokens/sec๏ผใใซ็ฒพๅบฆ BF16ใใกใขใชๆถ่ฒป 5GB ไปฅๅ
๏ผ**
- **8-bit / 4-bit ้ๅญๅใจใญในใใผใไฝต็จๆ**:
่ปข้้ใใใใซ 1/2ใ1/4 ใซๆฟๆธใใ**10ใ20 tokens/sec๏ผๅฎ็จ็้ใฌใใซ๏ผ** ใซๅฐ้ๅฏ่ฝ๏ผ
---
### 2. ใทในใใ ใปใขใผใญใใฏใใฃๅณ
```
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ NVMe SSD Storage (2TB) โ
โ Layer 1ใ26: Switch MLP Experts 0ใ63 (BF16 / 31.4GB) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ On-Demand Streaming (Direct I/O / mmap)
โผ (Top-6 Experts only: ~95MB/layer)
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ RAM / Unified Memory (16GB Mac) โ
โ โ
โ [ๅธธ้งใพใผใณ (~2.5 GiB)] โ
โ ใปEmbedding & LM Head โ
โ ใปMulti-Head Latent Attention (MLA) โ
โ ใปLayerNorm & Router Gates โ
โ ใปShared Experts (2 experts) โ
โ โ
โ [ๅ็ใจใญในใใผใใปใญใฃใใทใฅๆ (~2.5 GiB)] โ
โ ใปActive Top-6 Experts Buffer (Ring Buffer) โ
โ ใปLRU Recent Experts Cache โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Zero-Copy
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Apple Silicon Metal 4 GPU Execution โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
```
---
### 3. ๅฎ่ฃ
่จ็ป
1. **Phase 1: ใจใญในใใผใใปในใใชใใฟใผ๏ผๅๅฒไฟๅญใใผใซ๏ผ**
`split_moe_experts.py`:
31GB ใฎๅทจๅคง safetensors ใใใๅธธ้งใใผใน๏ผBase๏ผใใจใๅๅฑคใปๅใจใญในใใผใใฎ็ฌ็ซใใญใใฏ๏ผExpert Pack๏ผใใซๅๅฒใป้ซ้ใคใณใใใฏในๅใ
2. **Phase 2: ในใใชใผใใณใฐ MoE ใฌใคใคใผ๏ผMLX ใซในใฟใ ใขใธใฅใผใซ๏ผ**
`StreamingMoE`:
ใซใผใฟใผใฒใผใใฎๅบๅ๏ผTop-K๏ผใ็ฃ่ฆใใใใใใใใจใญในใใผใใฎใฟใ SSD ใใ `mmap` ใพใใฏไบๅๅฒใๅฝใฆใใใใกใซ้ๅๆใงใญใผใใใฆ FFN ่จ็ฎใ่กใใ
3. **Phase 3: LRU ใญใฃใใทใฅ & ใใคใใฉใคใณใปใใฌใใงใใ**
ใฌใคใคใผ $L$ ใฎ่จ็ฎไธญใซใใฌใคใคใผ $L+1$ ใฎใซใผใฟใผใๅ
่ชญใฟใใฆ SSD ใใใใชใใงใใใใ่ปข้ๅพ
ใกๆ้ใ่จ็ฎๆ้ใง้ ่ฝ๏ผOverlap๏ผใ
|