Model Service
Overview
The Model Service (ModelService
) provides comprehensive model management functionality for the Kamiwaza AI Platform. Located in kamiwaza_client/services/models.py
, this service handles model lifecycle management, including creation, deployment, file management, and configuration.
Key Features
- Model Management (CRUD operations)
- Model File Management
- Model Search and Discovery
- Model Download Management
- Model Configuration Management
- Memory Usage Tracking
Model Management
Basic Operations
# Get a specific model
model = client.models.get_model(model_id)
# Create a new model
model = client.models.create_model(CreateModel(
name="my-model",
description="My custom model"
))
# List all models
models = client.models.list_models(load_files=True)
# Delete a model
client.models.delete_model(model_id)
Model Search
# Search for models
models = client.models.search_models(
query="bert",
exact=False,
limit=100,
hubs_to_search=["huggingface"]
)
# Get model by repo ID
model = client.models.get_model_by_repo_id("bert-base-uncased")
Model Download Management
Available Methods
initiate_model_download(repo_id: str, quantization: str = 'q6_k') -> Dict[str, Any]
: Start model downloadcheck_download_status(repo_id: str) -> List[ModelDownloadStatus]
: Check download progressget_model_files_download_status(repo_model_id: str) -> List[ModelDownloadStatus]
: Get detailed file status
# Download a model
download_info = client.models.initiate_model_download(
repo_id="llama2-7b",
quantization="q6_k"
)
# Check download status
status = client.models.check_download_status("llama2-7b")
Model File Management
Available Methods
delete_model_file(model_file_id: UUID) -> dict
: Delete a model fileget_model_file(model_file_id: UUID) -> ModelFile
: Get file detailsget_model_files_by_model_id(model_id: UUID) -> List[ModelFile]
: Get all files for a modellist_model_files() -> List[ModelFile]
: List all model filescreate_model_file(model_file: CreateModelFile) -> ModelFile
: Create new model filesearch_hub_model_files(search_request: HubModelFileSearch) -> List[ModelFile]
: Search hub filesget_model_file_memory_usage(model_file_id: UUID) -> int
: Get file memory usage
# List model files
files = client.models.list_model_files()
# Get files for specific model
model_files = client.models.get_model_files_by_model_id(model_id)
# Search hub files
files = client.models.search_hub_model_files(HubModelFileSearch(
hub="huggingface",
model="bert-base-uncased"
))
Model Configuration Management
Available Methods
create_model_config(config: CreateModelConfig) -> ModelConfig
: Create new configget_model_configs(model_id: UUID) -> List[ModelConfig]
: Get all configsget_model_configs_for_model(model_id: UUID, default: bool = False) -> List[ModelConfig]
: Get model configs
# Create model configuration
config = client.models.create_model_config(CreateModelConfig(
model_id=model_id,
parameters={"temperature": 0.7}
))
# Get configurations for model
configs = client.models.get_model_configs(model_id)
Memory Usage Tracking
Available Methods
get_model_memory_usage(model_id: UUID) -> int
: Get model memory usageget_model_file_memory_usage(model_file_id: UUID) -> int
: Get file memory usage
# Check model memory usage
memory_usage = client.models.get_model_memory_usage(model_id)
Error Handling
The service includes built-in error handling for common scenarios:
try:
model = client.models.get_model(model_id)
except APIError as e:
print(f"Operation failed: {e}")
Best Practices
- Always check model compatibility before downloading
- Monitor download status for large models
- Use appropriate quantization for your use case
- Clean up unused model files to manage storage
- Keep track of model configurations
- Monitor memory usage for large models