构建分布式 AI 系统所需的一切,零外部依赖
纯 Rust + Tokio 实现,无需 etcd、NATS 或 Consul。随处部署,占用资源极少。
内置基于 Gossip 的节点发现和故障检测。节点自动相互发现并组建集群。
ActorRef 支持统一访问本地和远程 Actor,无论 Actor 在哪里运行,API 保持一致。
原生支持流式请求和响应,非常适合 LLM Token 生成和实时数据处理。
通过 PyO3 提供完整的 Python API。使用 @remote 装饰器将任何类转换为分布式 Actor。
基于 Tokio 异步运行时和 HTTP/2 传输。高效处理数千个并发 Actor。
# Install from source
pip install maturin
maturin develop
# Or using uv
uv pip install -e .
import pulsing as pul
@pul.remote
class Calculator:
def __init__(self, initial: int = 0):
self.value = initial
def add(self, n: int) -> int:
self.value += n
return self.value
def get(self) -> int:
return self.value
import asyncio
async def main():
await pul.init()
calc = await Calculator.spawn(initial=100)
result = await calc.add(50) # 150
result = await calc.add(25) # 175
value = await calc.get() # 175
print(f"Final value: {value}")
await pul.shutdown()
asyncio.run(main())
为高吞吐量分布式计算而生
* 基准测试在 Apple M2 MacBook Air 上进行。结果可能因工作负载和硬件而异。
构建可扩展的 LLM 推理后端,支持流式 Token 生成。原生集成 Transformers、vLLM 和 MLX。
为 Ray Actor 增加流式、发现和跨集群通信能力。Ray 负责调度,Pulsing 负责通信。
专为云原生部署设计。服务发现与 K8s Service IP 和滚动更新无缝配合。
Pulsing 旨在填补重量级分布式系统(如 Ray)和简单异步编程之间的空白。 它提供了恰到好处的基础设施来构建分布式 AI 应用,而无需复杂的外部协调服务。 Actor 模型让分布式状态推理变得简单,而 SWIM 协议确保了自动的集群管理。
学习 Actor 模型 →无需知道 Actor 的物理位置即可发送消息。 Pulsing 使用高效的 HTTP/2 传输自动在集群中路由消息。
Actor 可以是本地或远程的 - 你的代码保持不变。从单节点扩展到分布式部署,无需更改任何应用逻辑。
了解更多 →# Node 1 - Start seed node with public actor
config = SystemConfig.with_addr("0.0.0.0:8000")
system = await create_actor_system(config)
await system.spawn(Worker(), "worker", public=True)
# Node 2 - Find and use remote actor
config = SystemConfig.with_addr("0.0.0.0:8001") \
.with_seeds(["192.168.1.1:8000"])
system = await create_actor_system(config)
worker = await system.find("worker")
result = await worker.process(data) # Same API!
内置 SWIM 协议实现自动节点发现和故障检测。 无需外部协调服务 - 节点自动相互发现并组建集群。
基于 Gossip 的协议以最小的网络开销确保集群一致性。 节点优雅地加入和离开,自动进行状态协调。
了解更多 →# Kubernetes deployment - just configure Service IP
config = SystemConfig.with_addr("0.0.0.0:8080") \
.with_seeds(["actor-cluster.svc:8080"])
# Nodes automatically discover each other
# via K8s load balancing + SWIM protocol
system = await create_actor_system(config)
# Monitor cluster health
members = await system.get_members()
print(f"Cluster size: {len(members)}")
原生流式支持逐 Token 生成。内置 OpenAI 兼容的 API 路由器, 与现有工具无缝集成。
集成流行框架,包括 Transformers、vLLM 和 MLX(用于 Apple Silicon)。 一条命令即可部署生产级 LLM 服务。
了解更多 →# Start OpenAI-compatible Router
pulsing actor pulsing.serving.Router \
--addr 0.0.0.0:8000 \
--http_port 8080 --model_name my-llm
# Start vLLM Worker
pulsing actor pulsing.serving.VllmWorker \
--model Qwen/Qwen2.5-0.5B \
--addr 0.0.0.0:8001 --seeds 127.0.0.1:8000
# Test with curl
curl http://localhost:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{"model": "my-llm", "messages": [...]}'