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
Release Project Pyrite Phase 2: MoE-Stream Engine with Mixtral-8x22B & DeepSeek support
cab2ef1 verified |
Download SPECIFICATION.md from masahiroid/pyrite-stream: direct link, hf CLI and curl.
- Browser
- Download file 5.81 kB
-
https://huggingface.co/masahiroid/pyrite-stream/resolve/main/SPECIFICATION.md
- Command line
-
hf download hf://masahiroid/pyrite-stream/SPECIFICATION.md
-
curl -L -o SPECIFICATION.md https://huggingface.co/masahiroid/pyrite-stream/resolve/main/SPECIFICATION.md
5.81 kB
| # 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๏ผใ | |