data_structures.py 786 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. from dataclasses import dataclass
  2. from enum import Enum
  3. from typing import Dict
  4. from hivemind import PeerID
  5. ModuleUID = str
  6. UID_DELIMITER = "." # delimits parts of one module uid, e.g. "bloom.transformer.h.4.self_attention"
  7. CHAIN_DELIMITER = " " # delimits multiple uids in a sequence, e.g. "bloom.layer3 bloom.layer4"
  8. class ServerState(Enum):
  9. OFFLINE = 0
  10. JOINING = 1
  11. ONLINE = 2
  12. @dataclass
  13. class ServerInfo:
  14. state: ServerState
  15. throughput: float
  16. @dataclass
  17. class RemoteModuleInfo:
  18. """A remote module that is served by one or more servers"""
  19. uid: ModuleUID
  20. servers: Dict[PeerID, ServerInfo]
  21. @dataclass
  22. class RemoteSpanInfo:
  23. """A chain of remote blocks served by one specific remote peer"""
  24. start: int
  25. end: int
  26. peer_id: PeerID