抖音火山极速版官方正版
308.71MB · 2026-02-05
这是"一天一个开源项目"系列的第9篇文章。今天带你了解的项目是 NexaSDK(GitHub)。
想象一下,你可以在 Android 手机上运行 Qwen3-VL 多模态模型,在 iOS 设备上使用 Apple Neural Engine 进行语音识别,在 Linux IoT 设备上运行 Granite-4 模型,所有这一切都不需要连接到云端。这就是 NexaSDK 带来的革命性体验——让前沿 AI 模型真正"落地"到各种设备上。
为什么选择这个项目?
NexaSDK 是一个跨平台的设备端 AI 运行时,支持在 GPU、NPU 和 CPU 上运行前沿的 LLM 和 VLM 模型。它提供了全面的运行时覆盖,支持 PC(Python/C++)、移动端(Android & iOS)和 Linux/IoT(Arm64 & x86 Docker)平台。
项目解决的核心问题:
面向的用户群体:
团队:NexaAI
项目创建时间:2024年(从 GitHub 提交历史可以看出项目持续活跃)
项目发展历程:
支持的模型:
NexaSDK 的核心作用是提供统一的跨平台设备端 AI 运行时,让开发者能够:
移动端 AI 应用
IoT 和边缘计算
桌面应用集成
企业级应用
研究和开发
# 安装 Nexa CLI
# Windows (x64 with Intel/AMD NPU)
# 下载: nexa-cli_windows_x86_64.exe
# macOS (x64)
# 下载: nexa-cli_macos_x86_64.pkg
# Linux (ARM64)
curl -L | bash
# 运行第一个模型
nexa infer ggml-org/Qwen3-1.7B-GGUF
# 多模态:拖拽图片到 CLI
nexa infer NexaAI/Qwen3-VL-4B-Instruct-GGUF
# NPU 支持(Windows arm64 with Snapdragon X Elite)
nexa infer NexaAI/OmniNeural-4B
# 安装
pip install nexaai
# 使用示例
from nexaai import LLM, GenerationConfig, ModelConfig, LlmChatMessage
# 创建 LLM 实例
llm = LLM.from_(model="NexaAI/Qwen3-0.6B-GGUF", config=ModelConfig())
# 构建对话
conversation = [
LlmChatMessage(role="user", content="Hello, tell me a joke")
]
prompt = llm.apply_chat_template(conversation)
# 流式生成
for token in llm.generate_stream(prompt, GenerationConfig(max_tokens=100)):
print(token, end="", flush=True)
// 添加到 build.gradle.kts
dependencies {
implementation("ai.nexa:core:0.0.19")
}
// 初始化 SDK
NexaSdk.getInstance().init(this)
// 加载和运行模型
VlmWrapper.builder()
.vlmCreateInput(VlmCreateInput(
model_name = "omni-neural",
model_path = "/data/data/your.app/files/models/OmniNeural-4B/files-1-1.nexa",
plugin_id = "npu",
config = ModelConfig()
))
.build()
.onSuccess { vlm ->
vlm.generateStreamFlow("Hello!", GenerationConfig()).collect { print(it) }
}
import NexaSdk
// 示例:语音识别
let asr = try Asr(plugin: .ane)
try await asr.load(from: modelURL)
let result = try await asr.transcribe(options: .init(audioPath: "audio.wav"))
print(result.asrResult.transcript)
# 拉取镜像
docker pull nexa4ai/nexasdk:latest
# 运行(需要 NPU token)
export NEXA_TOKEN="your_token_here"
docker run --rm -it --privileged
-e NEXA_TOKEN
nexa4ai/nexasdk:latest infer NexaAI/Granite-4.0-h-350M-NPU
NPU 优先支持
全平台运行时
Day-0 模型支持
多模态 AI 能力
统一的 API 接口
模型格式支持
硬件加速优化
开发者友好
与其他设备端 AI 框架相比,NexaSDK 的优势:
| 对比项 | NexaSDK | Ollama | llama.cpp | LM Studio |
|---|---|---|---|---|
| NPU 支持 | ⭐⭐⭐⭐⭐ NPU-first | 不支持 | 不支持 | 不支持 |
| Android/iOS SDK | ⭐⭐⭐⭐⭐ 完整支持 | ️ 部分支持 | ️ 部分支持 | 不支持 |
| Linux Docker | ⭐⭐⭐⭐⭐ 支持 | ⭐⭐⭐⭐⭐ 支持 | ⭐⭐⭐⭐⭐ 支持 | 不支持 |
| Day-0 模型支持 | ⭐⭐⭐⭐⭐ GGUF/MLX/NEXA | 滞后 | ️ 部分支持 | 滞后 |
| 多模态支持 | ⭐⭐⭐⭐⭐ 完整支持 | ️ 部分支持 | ️ 部分支持 | ️ 部分支持 |
| 跨平台支持 | ⭐⭐⭐⭐⭐ 全平台 | ️ 部分平台 | ️ 部分平台 | ️ 部分平台 |
| 一行代码运行 | ⭐⭐⭐⭐⭐ 支持 | ⭐⭐⭐⭐⭐ 支持 | ️ 需要配置 | ⭐⭐⭐⭐⭐ 支持 |
| OpenAI API 兼容 | ⭐⭐⭐⭐⭐ 支持 | ⭐⭐⭐⭐⭐ 支持 | ⭐⭐⭐⭐⭐ 支持 | ⭐⭐⭐⭐⭐ 支持 |
为什么选择 NexaSDK?
NexaSDK 采用分层式架构,核心是统一的运行时抽象层:
┌─────────────────────────────────────┐
│ 应用层 (Applications) │
│ - CLI / Python / Android / iOS │
└──────────────┬──────────────────────┘
│
┌──────────────▼──────────────────────┐
│ SDK 层 (SDK Layer) │
│ - 统一的 API 接口 │
│ - 模型加载和管理 │
│ - 配置和优化 │
└──────────────┬──────────────────────┘
│
┌──────────────▼──────────────────────┐
│ 运行时层 (Runtime Layer) │
│ - 计算后端抽象 │
│ - 模型格式解析 │
│ - 推理引擎 │
└──────────────┬──────────────────────┘
│
┌──────────┴──────────┐
│ │
┌───▼────┐ ┌─────▼─────┐
│ NPU │ │ GPU │
│ Plugin │ │ Plugin │
└────────┘ └───────────┘
│ │
┌───▼─────────────────────▼─────┐
│ CPU Plugin (Fallback) │
└────────────────────────────────┘
功能:统一管理不同的计算后端(NPU、GPU、CPU)
设计特点:
支持的 NPU:
GGUF 格式:
MLX 格式:
NEXA 格式:
LLM(大语言模型):
VLM(视觉语言模型):
ASR(自动语音识别):
OCR(光学字符识别):
其他能力:
PC 平台(Python/C++):
Android 平台:
iOS 平台:
Linux/IoT 平台:
挑战:不同厂商的 NPU 架构差异大
解决方案:
挑战:支持多种模型格式,需要统一处理
解决方案:
挑战:不同平台的 API 和限制不同
解决方案:
挑战:设备端内存有限,需要高效管理
解决方案:
实现 Plugin 接口:
type ComputeBackend interface {
Name() string
IsAvailable() bool
LoadModel(config ModelConfig) error
Generate(input Input, config GenerationConfig) (Output, error)
}
实现 FormatParser 接口:
type FormatParser interface {
CanParse(path string) bool
Parse(path string) (*Model, error)
Optimize(model *Model, target Backend) error
}
实现 Capability 接口:
type Capability interface {
Name() string
SupportedModels() []string
Process(input Input, config Config) (Output, error)
}
强烈推荐:
也适合:
欢迎来我中的个人主页找到更多有用的知识和有趣的产品
308.71MB · 2026-02-05
308.71MB · 2026-02-05
339.21MB · 2026-02-05