Hướng dẫn
ESP32S3-LLM-Cluster: Chạy mô hình ngôn ngữ 1.58-bit BitNet trên cụm 7 chip ESP32S3
(giờ Việt Nam)
Tóm tắt AI
Dự án mã nguồn mở ESP32S3-LLM-Cluster cho phép chạy mô hình BitNet 1.58-bit (0.5B) thông qua kiến trúc phân tán, tận dụng 1 nút chủ và 6 nút tính toán trên các chip ESP32S3.
Chính văn · Bản dịch AI
Một công cụ suy luận đường ống phân tán trên nhiều ESP32S3 chạy mô hình ngôn ngữ 1.58-bit (BitNet).
Kiến trúc
Dự án này chạy một LLM 0.5B được phân đoạn trên một cụm gồm 7 ESP32S3. Một thiết bị đóng vai trò là master và các thiết bị còn lại là node. Master node chạy bộ tokenizer và embedding, trong khi các lớp attention và MLP còn lại được chạy trên các node. Master và các node giao tiếp thông qua kết nối SPI Daisy-Chain tốc độ cao.
┌─────────────────────────────────────────────────────────┐
│ MASTER NODE │
│ │
│ [ Prompt ] ---> BPE Tokenizer │
│ │ │
│ Token Embedding │
│ (INT4, ~14MB in Flash) │
│ │ │
│ (SPI CH A - TX to Node 1) │
└───────────────────────┬─────────────────────────────────┘
│ Hidden State Vector (FP32)
▼
┌─────────────────────────────────────────────────────────┐
│ COMPUTE NODE 1 │
│ (SPI CH B - RX from Master) │
│ │
│ ► Layer 0 to 3 (4x Transformer Blocks) │
│ • RMSNorm (FP16 scaled to FP32) │
│ • 1.58-bit Attention (Q, K, V, O proj) + RoPE │
│ • KV Cache (PSRAM) │
│ • 1.58-bit MLP (Gate, Up, Down proj) │
│ │
│ (SPI CH A - TX to Node 2) │
└───────────────────────┬─────────────────────────────────┘
│
... (Nodes 2 to 5)
│
▼
┌─────────────────────────────────────────────────────────┐
│ COMPUTE NODE 6 │
│ (SPI CH B - RX from Node 5) │
│ │
│ ► Layer 20 to 23 (4x Transformer Blocks) │
│ • Same 1.58-bit Architecture │
│ │
│ (SPI CH A - TX back to Master) │
└───────────────────────┬─────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ MASTER NODE │
│ (SPI CH B - RX from Node 6) │
│ │
│ Final RMS Norm │
│ (FP16, 64KB in 'fnorm' partition) │
│ │ │
│ LM Head (Tied to INT4 Embeddings) │
│ │ │
│ Greedy Sampling │
│ │ │
│ [ Output ] <--- Next Token ID │
└─────────────────────────────────────────────────────────┘Bắt đầu
Vui lòng tham khảo hướng dẫn quy trình làm việc để bắt đầu với dự án.
Cấu trúc dự án
.
├── README.md # Project documentation
├── workflow.md # Step-by-step flashing, model prep & wiring guide
├── .gitignore # Git ignore rules for build files & binaries
│
├── docs/
│ └── images/ # Architecture diagrams and hardware photos
│
├── master_board/ # Firmware for the Master Node (ESP-IDF)
│ ├── main/
│ │ ├── main.cpp # Master orchestrator, user I/O & BPE tokenizer
│ │ ├── embedding.cpp # INT4 embedding lookup logic
│ │ ├── lm_head.cpp # LM Head mapping and greedy sampling
│ │ └── spi_bus.cpp # Master dual-channel SPI driver
│ ├── partitions.csv # Custom partition table (token, model, fnorm)
│ └── CMakeLists.txt
│
├── node_firmware/ # Firmware for the Compute Nodes (ESP-IDF)
│ ├── main/
│ │ ├── main.cpp # Node worker entry point & inference loop
│ │ ├── bitlinear.cpp # 1.58-bit ternary linear layer implementation
│ │ ├── bitlinear_forward.S # Assembly optimized MAC ops for 1.58-bit
│ │ ├── qwen_attention.cpp # Qwen Attention, RoPE & KV-Cache runtime
│ │ ├── lut_table.cpp # Look-up tables for extreme optimization
│ │ └── spi_bus.cpp # Daisy-chain SPI DMA receiver/transmitter
│ ├── partitions.csv # Layer partition layout for Node
│ └── CMakeLists.txt
│
├── python_tools/ # PC-side quantization & preprocessing suite
├── crop_token.py # Vocabulary pruning (scales down to 32K tokens)
├── crop_model_weight.py # Embedding matrix slicing
├── qat_158.py # BitNet QAT (Quantization-Aware Training) fine-tuning
├── bit4_embedding.py # INT4 weight packer for embeddings
├── pack_tokenizer_bin.py # Serializes tokenizer rules into ESP32 .bin
├── pack_model_bin.py # Packs 1.58-bit layer chunks for physical alignment
├── look_model_structure.py # Debug tool for inspecting .safetensors
└── flash_*.bat # Multi-threaded fast flashing scriptsGiấy phép
Dự án này được cấp phép theo Giấy phép MIT - xem tệp LICENSE để biết chi tiết.
Lời cảm ơn
Cảm hứng, các công trình liên quan và tài liệu tham khảo:
- ESP-32-s3-Story-maker-LLM - Cảm hứng cho việc triển khai LLM lượng tử hóa trên một node đơn lẻ trên ESP32-S3.
- esp32s3-distributed-ai - Cảm hứng cho kiến trúc AI phân tán đa node trên vi điều khiển.
- BitNet - Khái niệm và kiến trúc lượng tử hóa bậc ba 1.58-bit.
Bài viết được AI dịch và tổng hợp tự động từ Hacker News: AI bài nổi bật. Liên kết bài gốc ở phía trên. Dữ liệu đồng bộ qua API công khai được ghi nguồn tại AI HOT (canonical) ↗. AIHOT.vn luôn dẫn nguồn đầy đủ — nếu bạn thấy điểm cần chỉnh sửa, hãy gửi ý kiến tại trang phản hồi.