client-models / venv /lib /python3.10 /site-packages /deepspeed /inference /v2 /modules /ds_module.py
| # Copyright (c) Microsoft Corporation. | |
| # SPDX-License-Identifier: Apache-2.0 | |
| # DeepSpeed Team | |
| from abc import ABC, abstractstaticmethod | |
| from typing import Any, Dict, Type | |
| import torch | |
| from deepspeed.runtime.config_utils import DeepSpeedConfigModel | |
| class DSModuleConfig(DeepSpeedConfigModel): | |
| max_tokens: int | |
| class DSModuleBase(torch.nn.Module, ABC): | |
| """ | |
| Base class for all DeepSpeed Inference modules. This class establishes | |
| the basic attributes of a DSModule. Only abstract functionality modules should inherit | |
| directly from this class, not specific implementations. | |
| """ | |
| def name() -> str: | |
| """ | |
| Return a memorable, human-readable name for this module. | |
| This will be used as a key in custom inference configurations and should only | |
| be implemented by the children of functionality modules. | |
| """ | |
| ... | |
| def config_class() -> Type[DSModuleConfig]: | |
| """ | |
| Return the associated config class for this module. | |
| This should be implemented (along with the config class) by an abstract functionality | |
| module. | |
| """ | |
| ... | |
| def supports_config(config: DSModuleConfig) -> bool: | |
| """ | |
| Return whether or not this module supports the given config. | |
| This should be implemented by the children of functionality modules and should report | |
| whether it would be feasible to instantiate this module with the given config. | |
| """ | |
| ... | |
| def __init__(self, config: DSModuleConfig, implementation_config: Dict[str, Any] = {}) -> None: | |
| """ | |
| Initialize the module with the given config. | |
| """ | |
| super().__init__() | |
| self._config = config | |
| self._implementation_config = implementation_config | |