Skip to main content

sageLLM backend provider abstraction (CPU/CUDA/Ascend)

Project description

sagellm-backend

Protocol Compliance (Mandatory)

CI PyPI version Python Version License Code style: ruff

硬件抽象层 - 为 sageLLM 提供统一的硬件接口(CUDA/Ascend/Kunlun)

架构定位

┌─────────────────────────────────────────────────────────────┐
│  sagellm-core (引擎协调层)                                   │
│  • LLMEngine (硬件无关的统一引擎)                           │
│  • 自动选择最佳后端 (cuda > ascend > cpu)                  │
├─────────────────────────────────────────────────────────────┤
│  sagellm-backend (硬件抽象层) ← 本仓库                       │
│  ┌─────────────────────────────────────────────────────┐    │
│  │  BackendProvider Interface                         │    │
│  │  • Stream/Event 异步流                              │    │
│  │  • KVBlock 内存管理                                 │    │
│  │  • Collective 操作(all_reduce/all_gather)        │    │
│  └─────────────────────────────────────────────────────┘    │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐                  │
│  │  CUDA    │  │  Ascend  │  │  Kunlun  │                  │
│  │ Provider │  │ Provider │  │ Provider │                  │
│  └──────────┘  └──────────┘  └──────────┘                  │
├─────────────────────────────────────────────────────────────┤
│  Hardware SDK Layer                                          │
│  CUDA/cuDNN/NCCL │ CANN/HCCL │ XPU SDK │ DCU SDK           │
└─────────────────────────────────────────────────────────────┘

职责分离(v0.2.0 重构)

  • 本仓库负责:硬件抽象、设备管理、内存原语
  • 不再包含:BaseEngine, EngineFactory(已移至 sagellm-core)
  • 🔗 被使用于:sagellm-core 中的引擎实现

Features

  • 统一硬件抽象:单一 API 支持多硬件后端
  • CPU Backend:无 GPU 环境的默认后端
  • CUDA Support:原生 CUDA 后端实现
  • CPU Support:CPU-only 后端实现
  • 能力发现:硬件能力查询与验证

Installation

pip install isagellm-backend

Quick Start

git clone git@github.com:intellistream/sagellm-backend.git
cd sagellm-backend
./quickstart.sh

# Run tests
pytest tests/ -v

Usage Examples

Basic Backend Usage

from sagellm_backend import CPUBackendProvider, DType

# Create backend
backend = CPUBackendProvider()

# Query capabilities
cap = backend.capability()
print(cap.supported_dtypes)

# Allocate KV block
block = backend.kv_block_alloc(128, DType.FP16)

Using with sagellm-core LLMEngine

Backend 现在专注于硬件抽象,引擎使用 sagellm-coreLLMEngine

# LLMEngine 位于 sagellm-core
from sagellm_core import LLMEngine, LLMEngineConfig

# LLMEngine 自动选择最佳后端
config = LLMEngineConfig(
    model_path="TinyLlama/TinyLlama-1.1B-Chat-v1.0",
    backend_type="auto",  # 自动选择: cuda > ascend > cpu
    max_new_tokens=100,
)
engine = LLMEngine(config)
await engine.start()

# 推理
output = await engine.generate("Hello, world!")
print(output)

await engine.stop()

Extending with New Backends

# Create provider in providers/ directory
class AscendBackendProvider:
    def capability(self) -> CapabilityDescriptor:
        return CapabilityDescriptor(
            supported_dtypes=[DType.FP16, DType.BF16, DType.INT8],
            # ...
        )

    # Implement other interface methods...

# Register via entry point in pyproject.toml
[project.entry-points."sagellm.backends"]
ascend_cann = "sagellm_backend.providers.ascend:create_ascend_backend"

Documentation

🔄 贡献指南

请遵循以下工作流程:

  1. 创建 Issue - 描述问题/需求

    gh issue create --title "[Bug] 描述" --label "bug,sagellm-backend"
    
  2. 开发修复 - 在本地 fix/#123-xxx 分支解决

    git checkout -b fix/#123-xxx origin/main-dev
    # 开发、测试...
    pytest -v
    ruff format . && ruff check . --fix
    
  3. 发起 PR - 提交到 main-dev 分支

    gh pr create --base main-dev --title "Fix: 描述" --body "Closes #123"
    
  4. 合并 - 审批后合并到 main-dev

更多详情见 .github/copilot-instructions.md

License

Proprietary

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

isagellm_backend-0.4.0.7.tar.gz (128.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

isagellm_backend-0.4.0.7-py2.py3-none-any.whl (189.3 kB view details)

Uploaded Python 2Python 3

File details

Details for the file isagellm_backend-0.4.0.7.tar.gz.

File metadata

  • Download URL: isagellm_backend-0.4.0.7.tar.gz
  • Upload date:
  • Size: 128.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for isagellm_backend-0.4.0.7.tar.gz
Algorithm Hash digest
SHA256 7ad8422389c683b48d9508ee47d9a74e3d8b4620fedb67849bf20b39cf5f1088
MD5 99b995acc6feac8f59edb947df7e963a
BLAKE2b-256 22d340590de2b8034db4bfe02f0b4c7f1c6c556ba187119e2db79b01814d1716

See more details on using hashes here.

File details

Details for the file isagellm_backend-0.4.0.7-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for isagellm_backend-0.4.0.7-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 c616c2a0d3fdaae29274faa9ea5af925f2b0c6f3ba39a0d1f17b1f81f75bb2d8
MD5 ec8eb0dc53bf8356b191670957fc8cd5
BLAKE2b-256 2e8863be5862be1e2f1aebb6eca0d4788455e00c1c3c05b7f9d499b94ba3cdc7

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page