Skip to content

Repository files navigation

centml-python-client

Installation

To install without cloning, run the following command:

pip install git+https://github.com/CentML/centml-python-client.git@main

Alternatively to build from source, clone this repo then inside the project's base directory, run the following command:

pip install . 

Authentication

For interactive use, authenticate once with the CLI. SDK examples reuse the stored credentials and refresh them when needed.

centml login
python examples/sdk/validate_auth.py

For service-to-service use, provide both service-account environment variables:

export CENTML_SERVICE_ACCOUNT_ID="<service-account-id>"
export CENTML_SERVICE_ACCOUNT_SECRET="<service-account-secret>"
python examples/sdk/validate_auth.py

CENTML_PLATFORM_API_URL can be set when targeting a non-production API.

Dynamo SDK example

The Dynamo example uses SDK authentication separately from the bearer token that protects the deployed inference endpoint:

export CENTML_CLUSTER_ID="<cluster-id>"
export CENTML_HARDWARE_INSTANCE_ID="<hardware-instance-id>"
export CENTML_ENDPOINT_BEARER_TOKEN="<new-endpoint-token>"
# Required only for gated Hugging Face models:
export HF_TOKEN="<hugging-face-token>"

python examples/sdk/create_dynamo.py

Use python examples/sdk/get_clusters.py and python examples/sdk/manage_hardware_instances.py to discover the required IDs. Creating the example reserves GPU capacity and may incur usage charges. It does not delete the deployment automatically.

Deployment logs SDK example

Logs are read per pod. Discover pod names with get_deployment_pods() (terminated pods still within log retention are included), then read with a deployment_log_session(): fetch_older() pages toward the beginning of history and fetch_newer() returns only new lines, while the session keeps the merged, ordered log in .events. get_deployment_logs_range() fetches a specific time window (epoch-millisecond bounds, both optional) and, with pod=None, merges every pod's stream chronologically. The same paging is available statelessly through get_deployment_logs(before=..., after=...), anchored on events you already hold or on a bare epoch-millisecond boundary:

python examples/sdk/get_deployment_logs.py

Un-installation

To uninstall centml, simply do:

pip uninstall centml

CLI

Once installed, use the centml CLI tool with the following command:

centml 

If you want tab completion, run

source scripts/completions/completion.<shell language>

Shell language can be: bash, zsh, fish (Hint: add source /path/to/completions/completion.<shell language> to your ~/.bashrc, ~/.zshrc or ~/.config/fish/completions/centml.fish)

Tests

To run tests, first install required packages:

pip install -r requirements-dev.txt
cd tests

When running on a local machine, it is recommended to run tests with the following command. This skips tests that require a GPU.

pytest --sanity

To run all the tests, use:

pytest

Common Issues

  • SSL certificate on MacOS

    Sometimes, you will see issues when using command like centml cluster [CMD], where the output might look like:

    
    File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/urllib3/util/retry.py", line 519, in increment
    
    raise MaxRetryError(_pool, url, reason) from reason  # type: ignore[arg-type]
    
    urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='api.centml.com', port=443):
    
    Max retries exceeded with url: /deployments
    
    (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1007)')))
    

    Solution: To fix this issue, navigate to your python installation directory and run the Install Certificates.command file located there.

    For example, if you are using python3.10, the file path would be: /Applications/Python 3.10/Install Certificates.command

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

8 watching

Forks

Releases

Packages

Used by

Contributors

Languages